为什么我需要在rebase中使用origin / master而不是master

时间:2017-08-31 21:15:09

标签: git

$ git --version
git version 1.7.1
$ git branch -avv
* master                017Fcc0 [origin/master] xxxx
  remotes/origin/HEAD   -> origin/master

我的理解是origin / master是远程主分支路径名,master是我的本地分支名。我需要将多个本地提交合并为一个,然后将其提交给具有最新时间戳的远程服务器。以下三个步骤对我很有帮助,但我不明白为什么我需要使用 origin / master 而不是 master

   a) git rebase --ignore-date origin/master
   b) git rebase -i origin/master
   c) git push origin master:master

1 个答案:

答案 0 :(得分:3)

您不需要使用来使用origin / master来将多个提交合并为一个。但这是一个很好的方法,以避免不得不覆盖原点的历史。

例如,如果您的历史记录如下:

5abcde Commit 5 [master] [HEAD]
4abcde Commit 4
3abcde Commit 3
2abcde Commit 2 [origin/master]
1abcde Commit 1

您的主人指向5abcde,而主人/主人指向3abcde。 如果你运行git rebase master,你可以在同一个位置重新定位你当前的位置(可能已经掌握了),实际上什么都不做。

运行git rebase origin/mastergit rebase 2abcde将在提交(2)后应用您拥有的提交(3,4,5) - 如果您指定标志-i,则为选项压缩/ fixup / skip / reword / drop /分别选择提交3,4,5。

Git文档实际上非常适合解释rebase如何工作:https://git-scm.com/docs/git-rebase

或许有必要详细了解Git如何处理遥控器:https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes