如何让Git停止“欺骗”我,告诉我与远程分支保持最新状态?

3

从我的开发机器上,我刚刚将几个新的评论推送到了我在Bitbucket帐户上的origin/test分支。现在我需要将该代码拉到部署机器上,所以我像这样检出了test分支:

$ git checkout test

我恰好已经在测试分支上,所以我收到了这条消息:

Already on 'test'

但我也收到了这个信息,表面上看非常令人困惑:

Your branch is up-to-date with 'origin/test'.`

我的分支实际上并没有与位于Bitbucket上的origin/test版本保持最新状态。毕竟我刚刚推送了新的提交!我意识到之所以收到这个消息是因为我的本地test副本与本地的origin/test副本保持最新状态,但在这种情况下,我不认为这些信息在这种情境中有用。这条消息非常容易被误解为表示我的test本地副本已经与origin/test远程副本保持最新,但实际上并不是这样。
是否可能只是取消"您的分支是最新的"的提示消息?由于我使用此部署机器的方式,我从未真正关心过这个消息,所以看到它只会带来困惑和挫折感。

2
这就是Git去中心化的全部意义,你本地的源状态副本需要得到更新。 - fpietka
2个回答

3

我猜你可以经常使用git fetch,以保持本地的origin/*与远程同步。

编辑:

或者你可以创建一个别名,在每次checkout之前执行fetch

git config --global alias.fco '!git fetch && git checkout'

我真的希望有一个配置选项。我不会登录到这个系统上做任何事情,除了 git co <branch> 然后进行布置,所以每次都要多做一步对我来说并不是很方便。 - coredumperror
这个选项会做什么呢?在“checkout”之前强制进行“fetch”操作吗?你可以创建一个git别名来完成这个操作:git config --global alias.fco '!git fetch && git checkout'。然后你可以使用git fco <branch>,它将在checkout之前执行fetch,并告诉你是否与远程分支保持同步。 - Tonio
1
如果你有一个经常执行的小仪式,请为它编写一个小脚本,为它创建一个别名,为它创建一个git别名。这种东西正是_git_不应该内置的。学会使用你拥有的工具,你就再也不必问这样的问题了。 - jthill
这听起来实际上是在那台机器上做一件非常有效的事情,但是那个别名中的感叹号是什么意思? - coredumperror
1
Git别名通常是git命令。在开头加上感叹号(!)可以执行非git命令。我知道“fetch”和“checkout”是git命令,但普通别名只适用于一个命令。因此,您需要在前面加上,然后运行常规的shell命令。在这种情况下,是git fetch && git checkout - Tonio

0

你可以移除分支的跟踪信息,这样git status就不会显示有关是否最新或超前的任何信息。但是,您必须手动指定要获取和推送的引用。


我从未考虑过那个选项,但是不被显示一个略微误导的消息并不值得每次使用这个框时都要付出额外的努力。 - coredumperror

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接