1.模拟测试环境:创建Test分支做测试,模拟commit提交多次


(1)现在远程仓库上有两个分支,我们将使用Test

(2)现在需要在本地也创建一个Test分支方便对应上(因为公司项目一般有上十分支,有些只是临时的开发完就删除)

  • checkout不能直接创建(Test是本地分支名,fork_origin/Test是远程仓库别名+远程分支名)

  • 应该直接创建分支:git branch -m Test

(3)现在先push到远程Test分支,可以看到我这里的本地仓库昨天已经被commit一条了

(4)现在对同一个文件修改一点代码

  • git status #可以看到当前在哪个分支,哪些文件被修改,哪些未被跟踪

  • 现在先git add提交文件到本地暂存区,然后在commit 随便注释信息到本地仓库。

  • 现在本地仓库已经有两条了,但是我们只希望远程提交记录只有一条commit(因为我们修改了同一个源码两次,有时候push远程仓库的源码没有注意规范或者注释写错了。但公司一般有规定解决同一个问题/bug只能有一次commit,否则不方便管理)。

 

2.解决多次Commit问题


(1)合并多条commit

  • git rebase -i HEAD~2 #从当前分支合并两条commit记录。head就像链表中的头指针,它指向哪,我们的项目分支/版本就是谁

  • rebase时会弹出一个界面,将第二行的pick 改成 s

  • 可以看到除了第一次commit, 还有第二次的commit。这里需要注释掉第二次commit信息,然后编辑完成!

  • 现在commit信息合并成功。接下来我们再验证本地和远程是否成功

(2)查看合并情况

  • git log    #可以看到  本地  现在只有第一次commi 

  • git show #可以看的第二次commit修改的代码和第一次兼容了

(3)push远程仓库

  • git push fork_origin Test -f  # -f 一定要加,否则会被拒绝

(4)查看远程仓库

  • 现在可以看到第一次和第二次commit都添加到了同一个代码中。并且远程分支只有一个commit记录

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐