gpt4 book ai didi

git - 为什么我的 Git 状态不显示我是否与我的远程伙伴保持同步?

转载 作者:IT王子 更新时间:2023-10-29 00:41:20 24 4
gpt4 key购买 nike

我已经尝试进行一些更改并将其推送到 GitHub。我从另一台计算机获取更改。当我执行 git status 时,它会报告:

On branch MyTestBranch
nothing to commit, working directory clean

这很奇怪,因为我确定已获取更改。我什至可以对获取的这些更改进行 merge !

事实上,当我走到我 friend 的电脑前并执行 git status 时,我可以看到:

Your branch is behind 'origin/MyTestBranch' by 1 commit, and can be fast-forwarded.

但为什么 Git 没有报告类似我的 origin/MyTestBranch 的信息是提前提交了多少次,或者我的分支是否与 origin/MyTestBranch 同步?

最佳答案

此时我的猜测(我仍在等待 git branch -vvgit rev-parse --symbolic-full-name "@{u}" 结果)是您没有 origin/MyTestBranch设置为 MyTestBranch 的上游.

要将分支设置为当前分支的上游,请使用:

git branch --set-upstream-to <em>upstream</em> 1

在这种情况下扩展为:

git branch --set-upstream-to origin/MyTestBranch

要删除上游设置,请使用 git branch --unset-upstream .

上游设置的存在与否主要影响git status是否存在。可以告诉你是否领先和/或落后,以及是否git mergegit rebase可以在没有额外参数的情况下完成他们的工作。所以它基本上只是一个方便的设置。

通常,当您通过 git checkout 首次 checkout 分支时,会自动设置上游。基于远程跟踪分支创建它。例如,在您的第一个 git clone , Git 最后运行,相当于:

git checkout master

即使你没有 master然而。然后 Git 发现你有 origin/master (并且没有其他 <em>remote</em>/master,因此对于使用哪个 Remote 毫无疑问),并且相当于:

git checkout -b master --track origin/master

创建本地 master指向与远程跟踪分支相同的提交 origin/master ,并设置 origin/master作为 master 的上游, 一切都在一次大的“我的意思是什么”中落下。

当你创建一个新的本地分支,还没有推送到上游时,没有origin/<em>whatever</em>本地分支的远程跟踪分支。2 在这种情况下,您必须手动设置上游,或使用 git push -u ... : -u基本上告诉git push运行 git branch --set-upstream-to为您准备的(尽管此时它实际上全部内置在 C 代码中)。


1如果您受困于真正古老的 Git(1.8.0 之前的版本),则必须使用 git branch --set-upstream ,这很难做对,或者 git config ,这也很难做到正确。如果可能,请升级到现代 Git 版本。

2这里的词组——名词如 branch,带形容词的名词如 local branch 和 remote-tracking branch,以及动词如 set-upstream-to 和动名词如 tracking——相当不幸。 Git 术语,用一种简短而令人难忘的盎格鲁-撒克逊语的方式来代替一些多音节的新词组,真是太糟糕了。3

3或其他盎格鲁-撒克逊语的选择词。

关于git - 为什么我的 Git 状态不显示我是否与我的远程伙伴保持同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37669297/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com