0

我检查了远程分支 Design0.5:该分支上的最后一个远程提交与本地顶部提交相同,此处标记为(无分支)。所以在本地,Design0.5 比我希望的位置落后 5 次提交;而且远程分支 remotes/origin/Design0.5 也显示在它的实际位置后面。这真的让我很困惑。我在这里真正想做的就是跟踪对存储库的远程更改。我如何才能达到我真正在远程跟踪 Design0.5 的状态?我可以放弃并检查其他地方的分支,但是我的本地目录中有未跟踪的二进制文件,我不想移动它们;如果我可以在不求助于它的情况下修复我的本地,它也可能有助于我更好地理解 git。

我查看了相关的查询Why did git set us on (no branch)? 并在那里尝试了各种建议(例如变基)但没有成功。

我的最后两个命令是

$ git pull --rebase origin Design0.5

$ git branch -av
* (no branch)              130bef1 Debugging Program.fs note point at which crash occurs
  Design0.3                f7f6179 Updated tests and comments
  Design0.5                578ff32 [behind 5] updated project to include new files
  master                   578ff32 [behind 5] updated project to include new files
  remotes/origin/Design0.1 f7f6179 Updated tests and comments
  remotes/origin/Design0.3 f7f6179 Updated tests and comments
  remotes/origin/Design0.5 f98e08e Added definition of FOO
  remotes/origin/master    578ff32 updated project to include new files

毫无疑问,我没有正确理解 git 分支是如何工作的。

4

2 回答 2

3

我如何才能达到我真正在远程跟踪 Design0.5 的状态?

正在跟踪远程分支。这就是为什么您会获得有关本地分支机构过时程度的信息的原因。告诉你,你的[behind 5]本地分支比它正在跟踪的一个提交落后了 5 个提交,即远程分支。

跟踪分支不会自动更新到远程分支的状态;这样做会消除您对自己的本地分支机构的控制权。

那么什么是远程跟踪分支呢?远程跟踪分支实际上就像任何本地分支一样:它是一个(可移动的)指针,指向存储库历史中的提交。唯一的区别是远程跟踪分支还知道它跟踪哪个远程分支。这种跟踪实际上只是一个“噱头”,用于获取有关本地分支与远程分支有何不同的信息(后面/前面的信息),并快速了解它必须从哪个远程提取或推送到哪个远程。除此之外,没有额外的魔法。

现在,回到你的情况;您目前处于分离的 HEAD 上。很难说你到底为什么会到那个地方。我假设您启动了pull --rebase,这将重写您的本地提交,并且您遇到了冲突。在这种情况下,变基暂停并等待您解决冲突,然后继续变基。Agit status应该有助于在这里确认这一点。如果你知道你不想保留你在分离的 HEAD 上所做的任何事情,那么你可以简单地检查一个分支并恢复到正常状态。

要实际更新您的远程跟踪分支(或任何真正的分支),您只需检查它们并运行 agit merge origin/otherbranch将其更新为您获取的远程分支的状态,或者您只需运行git pull以获取跟踪的远程并获取最新的更新版本拉进来。

于 2013-03-18T18:11:15.680 回答
1

The 'commits behind' messages always used to confuse me because I'd always been taught that git pull is "the same as git fetch followed by git merge." As far as the current branch is concerned this may be true, however doing git pull doesn't actually update the local reference remotes/origin/your-branch. If you do git fetch, the references should jump back into line.

于 2013-03-18T18:18:09.817 回答