我是Git的新手,试图学习Git pull和Git rebase之间的区别。有人能提供一个例子,当使用哪个选项,因为我觉得两者服务于相同的目的。
git-pull——从另一个存储库或本地分支获取并与之集成 GIT拉
基本上你正在将远程分支拉到本地,例如:
git pull origin master
将主分支拉到本地存储库
git-rebase -前向端口本地提交到更新后的上游头 GIT变基
这是将您的本地更改置于其他用户远程完成的更改之上。 例如:
您已经在本地分支上提交了一些更改,例如,称为some - feature 与此同时,你的朋友正在开发其他功能,他将自己的分支合并到master中
现在您希望在本地分支上看到他和您的更改。 然后签出主分支
git checkout master
然后你可以拉:
git pull origin master
然后你去你的分支机构:
git checkout SOME-FEATURE
你可以做rebase master来获得它的最新更改,并把你的分支提交放在上面:
git rebase master
我希望你们现在更清楚了。
Git pull和Git rebase是不可互换的,但它们紧密相连。
Git pull从远程获取当前分支的最新更改,并将这些更改应用到分支的本地副本。通常这是通过合并来完成的,即将本地更改合并到远程更改中。git pull类似于git fetch & git merge。
改基是合并的另一种选择。它不是创建一个合并两个分支的新提交,而是将一个分支的提交移动到另一个分支的上面。
你可以使用rebase而不是merge (git pull—rebase)。您所做的本地更改将基于远程更改之上重新进行,而不是与远程更改合并。
Atlassian有一些关于合并和重基的优秀文档。
简而言之:
转到合并:
合并本地更改和远程更改,这将创建另一个提交历史记录
总Rebase:
将你的更改放在所有新的远程更改之上,并重写提交历史,这样你的提交历史将比git合并清晰得多。改基是一种破坏性的操作。这意味着,如果您没有正确地应用它,您可能会丢失已提交的工作和/或破坏其他开发人员存储库的一致性。
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式
- git pull -rebase和git pull -ff-only之间的区别