一、git fetch 和git pull 的差别

1、git fetch 相当于是从远程获取最新到本地,不会自动merge,如下指令:

 git fetch orgin master //将远程仓库的master分支下载到本地当前branch中

 git log -p master  ..origin/master //比较本地的master分支和origin/master分支的差别

 git merge origin/master //进行合并

也可以用以下指令:

git fetch origin master:tmp //从远程仓库master分支获取最新,在本地建立tmp分支

git diff tmp //將當前分支和tmp進行對比

git merge tmp //合并tmp分支到当前分支

2. git pull:相当于是从远程获取最新版本并merge到本地

git pull origin master

git pull 相当于从远程获取最新版本并merge到本地

在实际使用中,git fetch更安全一些

3、两者区别的详细解释

https://blog.csdn.net/weixin_41975655/article/details/82887273

二、git将多个commit合并成一个

出处:https://www.jianshu.com/p/964de879904a

在执行git commit命令之后,如果之前已经有了很多次commit,想将多次commit历史记录合并起来,使得history不要太多太乱,可以采用git log查看历史记录,然后用git rebase进行合并。

git log -l  #查看log记录
git rebase -i HEAD~ # 合并前两个commit

首先假设我们有3个 commit

git-log-origin.png

我们需要将 2dfbc7e8c4e858b5 合并成一个 commit,那么我们输入如下命令

git-rebase-i.png

其中,-i 的参数是不需要合并的 commit 的 hash 值,这里指的是第一条 commit, 接着我们就进入到 vi 的编辑模式

git-rebase-edit.png

可以看到其中分为两个部分,上方未注释的部分是填写要执行的指令,而下方注释的部分则是指令的提示说明。指令部分中由前方的命令名称、commit hash 和 commit message 组成。

当前我们只要知道 picksquash 这两个命令即可。

  • pick 的意思是要会执行这个 commit
  • squash 的意思是这个 commit 会被合并到前一个commit

我们将 c4e858b5 这个 commit 前方的命令改成 squashs,然后输入:wq以保存并退出

git-rebase-squash.png

这是我们会看到 commit message 的编辑界面

git-rebase-commit-message.png

其中, 非注释部分就是两次的 commit message, 你要做的就是将这两个修改成新的 commit message。

git-rebase-commit-message-combination.png

输入wq保存并推出, 再次输入git log查看 commit 历史信息,你会发现这两个 commit 已经合并了。

git-rebase-log-new.png

注意事项:如果这个过程中有操作错误,可以使用 git rebase --abort来撤销修改,回到没有开始操作合并之前的状态。

合并之后就可以进行git push提交了。
 

最新文章

  1. 7.8 数据注解特性--Column
  2. ASP 编码转换(乱码问题解决)
  3. Extjs中自定义事件
  4. jQuery - 实时统计输入框输入个数(中文输入法适用)
  5. Python 同时for遍历多个列表
  6. IL(Intermediate Language)
  7. 转账示例(二):service层面实现(本例采用QueryRunner来执行sql语句,数据源为C3P0)
  8. 转:Redis 配置为 Service 系统服务
  9. java关键字transient与volatile小结
  10. ZooKeeper数据结构
  11. suds库使用说明官方文档
  12. zookeeper 入门系列-理论基础 – zab 协议
  13. Spring Websocket实现简易在线聊天功能
  14. myEclipse出现cannot paste the clipboard contents into the selected elements报错
  15. 一维信号频谱图仿真——matlab
  16. source insight 中文乱码解决方法
  17. Linux查看运行时间
  18. Vue入门---属性、style和class绑定方法
  19. 巨蟒python全栈开发-第11阶段 devops-git&&openpyxl2
  20. 获得system32等系统文件权限

热门文章

  1. 改动wordpress默认发邮件邮箱地址
  2. Spring MVC : Java模板引擎 Thymeleaf (二)
  3. 查找两个大文件(1G以上)的相同内容PHP版
  4. 从头认识java-13.7 什么时候使用泛型?
  5. 【网络流】 HDU 3468 Treasure Hunting
  6. Tarjan Algorithm
  7. @注解与普通web.xml的关系
  8. P2495 [SDOI2011]消耗战 虚树
  9. 转载:C语言的字节对齐及#pragma pack的使用
  10. MySQL 字符编码问题详细解释