github: reset 与 rebase, pull 与 fetch 的区别
来源:互联网 发布:知乎雅思阅读技巧 编辑:程序博客网 时间:2024/06/03 20:33
reset 与 rebase
完全不同的两个命令. git-reset
会修改 .git/refs 目录和 .git/index 文件. 但它不会修改任何和你的 commit 相关的东西. git-rebase
则会试图去修改你已经 commit 的东西, 比如想要覆盖你的 commit 历史之类的. 但是千万不要用 rebase 来修改已经 push 过的内容, 否则可能导致 rebase 修改过的内容和原先的内容完全不兼容, 然后影响到别人的代码.
也就是说你可以用这个工具: interactive rebasing. 在终端输入 git rebase -i 262d1f7
看到输出如下:
pick 262d1f7 Added HTML header (v1)pick a006669 Oops, we didn't want this commitpick a6faf60 Revert "Oops, we didn't want this commit"pick b7b5fce This reverts commit a6faf60631b5fbc6ee79b52a1bdac4c971b69ef8.pick cdb39b0 Commit p tags with text (v1.1)pick 9b2f3ce Added an author commentpick 55649c3 Add an author/email commentpick 0b1dd4c Moved hello.html to libpick 5854339 Added index.htmlpick 801e13e Added READMEpick a6792e4 Added css stylesheetpick 17a64df Hello uses style.css (HEAD, origin/style, master),
这样你不想要的 commit 就被删掉了. 但是如果你已经 push 过这些 commit, 那就不要再跑 rebase 了. 其实有这些行在 commit 记录里面也无所谓.
rebase 还有一个功能是解决内容冲突的. 就是说你当前的 working directory 里面的内容它不是最新的, 有人修改了一个文件, 放到 remote 上面去, 好死不死的你也改了这个文件的同一个地方. 这时候你发现有个 pull 更新, 你要从 remote 上面把这个更新 pull 下来. 那 pull 是有自动 merge 的功能的, 问题在于现在 merge 是肯定要失败的, 因为别人和你修改了同一个文件的同一块代码. 这时候, 你需要把自己的 working directory rebase 到服务器上的最新版本, 然后修改冲突, 再把你自己的修改 push 上去.
pull 与 fetch
简单说来, git pull
= git fetch
+ git merge
. 事实上, git pull 是 git fetch; git merge FETCH_HEAD 两个命令合并后的简写方式, 类似语法糖的东西.
你可以在任意时刻用 git fetch
更新对于服务器上的分支的版本的跟踪信息: .git/refs/remotes/<remote>/
. 它不会修改你本地的任何分支的内容refs/heads
, 所以也不会改动你 working directory 里面的东西.
git pull
会更新你本地代码到服务器上对应分支的最新版本, 当然也会更新跟踪信息: .git/refs/remotes/<remote>/
.
Git 文档: git pull
- github: reset 与 rebase, pull 与 fetch 的区别
- git Rebase 与 pull 区别
- git fetch与git pull的区别--多用git fetch
- git fetch, git pull与git rebase比较
- git fetch, rebase,pull,merge 区别
- 【git】git fetch 与git pull的区别
- Egit fetch from upstream 与 pull的区别
- 详解git fetch与git pull的区别
- git fetch 与git pull 区别
- git fetch, git pull, git pull -rebase区别
- git fetch, git pull, git pull -rebase区别
- git reset 、rebase和 revert的区别
- GitHub之fetch和pull的不同点
- 图解git rebase 与merge的区别
- git: fetch vs pull, merge vs rebase
- git pull vs fetch/rebase/merge
- git 使用(9)git pull和git fetch、git reset 和 git revert 的区别用法
- git中各个commit节点的查询 回溯 与 合并:git rebase与git reset
- voip 网络电话 sipdroid 的移植上出现的问题
- ListView的使用技巧集合(三)
- 谈判力
- 图片集
- 剑指Offer--059-对称的二叉树
- github: reset 与 rebase, pull 与 fetch 的区别
- Mybatis利用ResultMap自定义映射案例
- Unity资源打包Assetbundle
- Java多态
- Android常用工具类
- 一个G++AC,C++WA的例子(hdu 4107)
- Remove Linked List Elements
- 【Linux】ssh--linux远程连接
- 支持向量机(SVM)