有什么方法可以知道我完全镜像上游分支吗?

时间:2018-03-30 21:22:55

标签: git rebase

我的群组有一项政策,只有一个人可以在GitHub上更改master分支。他是Git大师,在origin/master上进行了复杂的提交管理。

其他人被告知要使用(在主分支上保险后):

git pull --rebase origin master

确保我们完美地镜像origin。但是,我知道我偶尔会忘记--rebase。现在我想知道,我的本地master是否与origin上的那个不同步?

上述命令只有在同步时才会成功吗?如果不是我能做什么?

2 个答案:

答案 0 :(得分:1)

如果您未指定--rebase,则会将上游master的{​​{1}}分支(即origin)合并到当前已检查的分支中。如果您指定origin/master,则您的更改将在--rebase之上重播。最终结果应该是相同的。

如果您忘记指定origin/master,则还可以使用配置选项启用它:--rebase。启用此选项后,每次启动时,您的更改都将被重新定位而不是合并。

要回答问题的标题:运行git config pull.rebase true(在使用git log HEAD..origin/master同步历史记录之后)。如果它没有显示任何提交,那么您的工作是与源相关的最新版本。如果它显示提交,那么git fetch中的提交尚未集成到您的本地工作副本中。

答案 1 :(得分:1)

检查更新

查看本地分支机构是否与其远程对应分机保持同步的最简单方法是使用git fetch,然后使用git status

git fetch更新有关远程分支机构的信息,但不会更新其本地对等分机。

git status显示有关分支和工作树的当前状况的信息。如果它与遥控器的日期一致,则应该说

On branch x
Your branch is up to date with 'origin/x'.

在您的具体案例中xmaster

另一方面,如果您的分支不是最新的,例如,因为您添加了一个提交,它会说

On branch x
Your branch is ahead of 'origin/x' by 1 commit.

git pull --rebase做什么

git pull实际上是git fetch后跟git merge的快捷方式。使用--rebase修饰符,而不是使用git merge git rebase

简而言之,git mergegit rebase都会将更改从一个分支应用到另一个分支,但它们的方式不同。您可以查看文档或以下SO答案以获取更多信息:git mergegit rebase