我不理解git pull --rebase
和git rebase
的区别,且不含其他选项。
我不清楚它们是否安全,是否是良好的实践或者非常危险的。
如果在本地执行git pull --rebase
会破坏提交历史吗?
我不理解git pull --rebase
和git rebase
的区别,且不含其他选项。
我不清楚它们是否安全,是否是良好的实践或者非常危险的。
如果在本地执行git pull --rebase
会破坏提交历史吗?
我不建议在公共分支上进行变基,只建议在私有分支上进行。通过“私有”,我指的是你相当确定只有你自己拉取了这些分支。
变基会将分支的起始点更改为某个更新的提交,从而合并到该点的所有提交。这可能会导致那些在其存储库中具有旧分支基础的人遇到合并冲突。我建议始终使用普通合并,并仅在某些情况下(例如特性分支)才使用变基。
关于你的问题:
fetch
有什么特别之处吗?为什么要这样区分呢? - Greengit pull --rebase
是git fetch
和简单的git rebase
的缩写,与默认的git merge
相反。实际上的区别在于,仅应用后者不会获取来自远程的任何新提交,然后将您的代码重新基于其之上,因为它仅考虑本地存储库已经知道的内容。
值得一提的是,合并冲突会以与常规git pull相同的方式出现。
git pull --rebase
会导致 post-merge 钩子执行。
运行 git fetch
然后再运行 git rebase
不会执行 post-merge 钩子。
因此,前者不是后者的简写。
我仍在尝试理解这两种方法之间是否存在其他差异。无论是意外的还是语义上的。 - Noam Galpull --rebase
和fetch
+ rebase
之间的一些区别-https://gitolite.com/git-pull--rebase - Noam Galgit pull --rebase
和git rebase
之间的区别,结合了@noam-gal和@dnuttle的评论。git pull --rebase
就是git fetch
+git rebase
。git pull --rebase
就是git fetch
+在远程分支上对本地更改进行变基(即git rebase --onto <default_remote>/<current_branch> a <current_branch>
,其中a
是最近的上游提交,是您本地当前分支的父提交)。这种方法的优点是,更改的上游提交不会与旧版本的这些提交产生冲突。当设置为true时,在获取后将当前分支变基到上游分支之上。如果存在与上游分支对应的远程跟踪分支,并且自上次获取以来上游分支已经进行了变基操作,则变基会利用该信息避免变基非本地更改。
git rebase
不会先运行fetch
。 - choroba