|
|
1
10
仅此而已:您不在任何分支上,但当前正在 detached head :
如果你做一个
解决问题的一种方法(如果你已经承诺了所有的事情)
另一种方法是将您的工作合并到当前的主标题中,该标题恰好位于标记处:
但这会让你在一个超然的头脑中做出承诺的历史变得松散。
不,它和主人不一样。AS
Jefromi
在注释中指出,分支可以移动(或被重命名、删除或…)
注:如中所述
this SO answer
, the
|
|
|
2
3
在Git提交中,形成一个有向非循环图,其中每个提交指向一个或多个父提交。除了提交对象之外,您还拥有引用(即引用)对象:分支和标记。它们指向提交图中的各种提交。您的问题是,提交时您不在分支上,并且没有分支(或标记)指向它们。随时可以使用命令
和
检查你是否在一个分支机构。
据我所知,Gitk从refs开始查找commit对象。如果没有引用指向您的提交(或导致提交的有向非循环提交图),那么它们实际上是不可见的。
幸运的是,reflog工具跟踪诸如签出和提交等操作。在您的reflog列表中,您可以看到上一次提交的条目:
您应该能够使用在reflog中看到的sha1 id合并对主分支的提交:
分支和标记之间的主要区别在于,标记总是指向相同的提交,但分支向前移动。例如,如果您在分支“master”上进行新的提交,“master”分支将向前移动,并开始指向刚刚创建的新提交。当您签出提交时,标签或分支git会按照字面意思接受您的命令,并检查您所要求的内容。
你的承诺不在任何分支上。您首先需要将它们合并到一个分支(如到master),如上图所示。在此之后,推压应正常工作。 |
|
|
3
2
恢复你的承诺最简单的方法就是把一些分支指向它们。你知道沙斯,所以很容易:
(这是从你的截图中读取的sha),也可以
这将把一个分支指向最近丢失的提交-早期的提交可能是最近的提交的父级,因此它们将位于这个新分支上;如果它们不在(这意味着丢失的提交有两个“影子分支”),则必须复查所有提交并重申e未履行承诺的程序。 在你的例子中,我想你会得到这样的历史:
然后,刷新您的Gitk视图,提交就会出现。(我用的是QGit,所以我只是猜测) 之后,您应该能够合并/推送/任何您想要的(您喜欢的)。 |
|
Harry · 如何在编译时获取克隆的git仓库的标签 1 年前 |
|
Ooker · 如何从blob中删除秘密? 1 年前 |
|
|
hasdrubal · git日志图智能分支过滤器 1 年前 |
|
|
J. Doe · 为什么git中没有跟踪git文件? 1 年前 |