what is the difference between git pull , git fetch and git rebase?
git pull、git fetch和git rebase有什么区别?我觉得拉和取是一样的。
- stackoverflow.com/questions/292357/…
- 我建议你读专业版。前三章涵盖了每天95%的需求,包括问题的答案。
- git pull --rebase相当于后两个
获取:使用远程更改更新本地,但不与任何本地分支合并。
拉:更新本地并将更改与当前分支合并。
git fetch:从源站获取最新更改(不合并)
git pull=git fetch+git merge。
如果您将feature分支重新设置为master分支。git rebase master保持feature支commits/changes顶。
假设你在master分公司(A->C有两个承诺,在feature分公司(B->D有两个承诺)。
假设您在feature分公司(git checkout feature)。现在,如果您要执行cx1(17),那么提交历史记录:
1 2 3
| (previous commit) - A -- C <- master
\ \
B -- D -- M <- feature |
这里,M代表new-merge-commit-sha。
对于rebase master,提交历史:(A->C->B'->D'。
- 通常情况下,您会将feature重新调整为master,而不是反过来。
- 与你所看到的相比,git merge master将导致更复杂的提交历史。
- 同意@代码学徒,这里我试图展示simple/generic的区别。
- 只要它是正确的,保持简单就是好的。正如您在这里看到的,提交历史在您关于git merge的段落中是不正确的。
- 此外,描述REBASE的措辞不正确。git rebase master将把当前分支机构重新调整到master上。
- 是的,我假设现在的分支机构是feature。git checkout feature、git rebase master。因此,它将把feature重新调整为master。
- 请编辑你的答案。
- 我已经得到了答复。"Assume you are in feature branch. Now if you merge master then..."
- 那句话跟Rebase有什么关系?我说的是"如果你把主分支重新设置为功能分支的话。git rebase master…"这不正确。您不需要将主分支重新设置为功能分支,而是将功能分支重新设置为主分支。
- 我明白了(错了),谢谢。
- 您还应该修复提交历史记录插图,以显示正确的合并历史记录。
- 修复了提交历史记录!
- git merge的提交历史记录仍然不正确。历史不会是线性的。
- 编辑。现在看来还好吧?