有什么方法可以知道我完美地镜像了上游分支?
Any way to know I'm perfectly mirroring an upstream branch?
我的小组有一项政策,即只有一个人可以更改 GitHub 上的 master
分支。他是一位 Git 大师,在 origin/master
.
上进行复杂的提交管理
其他人被告知使用(在确保我在 master 分支之后):
git pull --rebase origin master
以确保我们完美地镜像 origin
。但是,我知道我偶尔会忘记 --rebase
。现在我想知道,我的本地 master
是否与 origin
上的不同步?
上述命令是否只有在它们同步时才会成功?如果不行我该怎么办?
如果您不指定 --rebase
,您将合并上游 origin
的 master
分支(即 origin/master
)到您当前检查的分支。如果您指定 --rebase
,您的更改将在 origin/master
之上重播。最终结果应该是相同的。
如果您经常忘记指定 --rebase
,那么您也可以使用配置选项启用它:git config pull.rebase true
。启用此选项后,每次拉取时,您的更改将重新定位而不是合并。
回答您问题的标题:运行 git log HEAD..origin/master
(与 git fetch
同步历史记录后)。如果它没有显示任何提交,则您的工作是 up-to-date 的来源。如果它显示提交,则 origin/master
中有尚未集成到您的本地工作副本中的提交。
正在检查更新
查看本地分支是否与其远程分支同步的最简单方法是使用 git fetch
,然后使用 git status
。
git fetch
更新有关远程分支机构的信息,但不更新其本地分支机构的信息。
git status
显示有关分支和工作树的当前状况的信息。如果它是遥控器的最新日期,它应该说
On branch x
Your branch is up to date with 'origin/x'.
在您的特定情况下,x
将是 master
。
另一方面,如果你的分支不是最新的,因为你添加了一个提交,例如,它会说
On branch x
Your branch is ahead of 'origin/x' by 1 commit.
git pull --rebase
做什么
git pull
, is actually a shortcut for git fetch
followed by git merge
. With --rebase
modifier, instead of git merge
git rebase
已使用。
简而言之,git merge
和 git rebase
都将更改从一个分支应用到另一个分支,但它们的方式不同。您可能需要查看文档或以下 SO 答案以获取更多信息:git merge
, git rebase
.
我的小组有一项政策,即只有一个人可以更改 GitHub 上的 master
分支。他是一位 Git 大师,在 origin/master
.
其他人被告知使用(在确保我在 master 分支之后):
git pull --rebase origin master
以确保我们完美地镜像 origin
。但是,我知道我偶尔会忘记 --rebase
。现在我想知道,我的本地 master
是否与 origin
上的不同步?
上述命令是否只有在它们同步时才会成功?如果不行我该怎么办?
如果您不指定 --rebase
,您将合并上游 origin
的 master
分支(即 origin/master
)到您当前检查的分支。如果您指定 --rebase
,您的更改将在 origin/master
之上重播。最终结果应该是相同的。
如果您经常忘记指定 --rebase
,那么您也可以使用配置选项启用它:git config pull.rebase true
。启用此选项后,每次拉取时,您的更改将重新定位而不是合并。
回答您问题的标题:运行 git log HEAD..origin/master
(与 git fetch
同步历史记录后)。如果它没有显示任何提交,则您的工作是 up-to-date 的来源。如果它显示提交,则 origin/master
中有尚未集成到您的本地工作副本中的提交。
正在检查更新
查看本地分支是否与其远程分支同步的最简单方法是使用 git fetch
,然后使用 git status
。
git fetch
更新有关远程分支机构的信息,但不更新其本地分支机构的信息。
git status
显示有关分支和工作树的当前状况的信息。如果它是遥控器的最新日期,它应该说
On branch x
Your branch is up to date with 'origin/x'.
在您的特定情况下,x
将是 master
。
另一方面,如果你的分支不是最新的,因为你添加了一个提交,例如,它会说
On branch x
Your branch is ahead of 'origin/x' by 1 commit.
git pull --rebase
做什么
git pull
, is actually a shortcut for git fetch
followed by git merge
. With --rebase
modifier, instead of git merge
git rebase
已使用。
简而言之,git merge
和 git rebase
都将更改从一个分支应用到另一个分支,但它们的方式不同。您可能需要查看文档或以下 SO 答案以获取更多信息:git merge
, git rebase
.