我仍然不明白git pull到底发生了什么--rebase。我理解remote的概念,并且在我自己的本地未发布的分支中使用过它,当我的分支已经在远程发布时,我从来没有使用过它。我听说过使用remote进行rebase的危险,看着git pull --rebase,我不太理解这样做是安全的还是不安全的。
例如,假设我正在使用MyBranch分支,并且一直在将其推送到远程,以便将其存储在我自己的本地计算机之外的其他地方(可能其他人会合并我的更改以保持开发同步)。
a--b--c--d--g--h (master, origin/master)
\
e--f--i (MyBranch, origin/MyBranch)假设我做了一些当地的开发
a--b--c--d--g--h (master, origin/master)
\
e--f--i (origin/MyBranch)--j--k--l (MyBranch)假设其他人用master中的开发更新了MyBranch。
a--b--c--d--g--h (master, origin/master)
\ \
e--f--i---m( origin/MyBranch)
\
j--k--l(MyBranch)如果我随后通过拉git pull --rebase进行更新,我的树看起来会是什么样子?它只会重写j,k,l(对我来说是本地的)的历史记录,并将其放在m的顶部,还是会重写远程分支上已经存在的其他历史记录?
rebase的起始点到底是什么,重放是什么?
另外,如果origin/MyBranch被合并到其他上游分支中,比如“开发”,那么我的rebase意味着什么?
a--b--c--d--g--h (master, origin/master) --n --o --p (origin/develop)
\ \ /
e--f--i---m( origin/MyBranch)--------------
\
j--k--l(MyBranch)发布于 2014-11-06 14:28:40
A评论,git pull --rebase是:
在此
git fetch:您的远程跟踪分支origin/MyBranch已更新)a--b--c--d--g--h (主,源/主)\\e--f--i-m(源/我的分支)\ j--k--l(MyBranch)
git rebase:您将MyBranch重新建立在源/我的分支之上a--b--c--d--g--h (主,源/主)\\e--f--i-m(源/我的分支)\ j'--k'--l'(MyBranch)
发布于 2014-11-06 15:31:03
在我的本地工作中,我总是使用rebase。我经历过的最糟糕的问题是我合并错误。使用git reflog,我恢复到上次提交,并再次重新建立基础,直到我得到正确的结果。
有几种情况浮现在你的脑海中,当你觉得你必须改变基数或保持谨慎的时候。
最后一点让我吃了一顿苦头。我也经常使用git rebase -i。我有大约200个提交,我正在仔细地重新排序,分组,并挤压提交,目标是减少到大约10个提交。
大约一周后,我意识到有一个问题,并想与旧的东西进行比较。我尝试过reflog,但最早的提交是在我的rebasing过程中。我很幸运,找到了我做的一个克隆,但在那之后,我学会了更小心地使用rebase。
https://stackoverflow.com/questions/26768893
复制相似问题