Git中使用amend解决提交冲突

问题描述

      场景:当你提交的时候,发现跟要合并的流有冲突,你需要解决完冲突再次提交。 如果在SVN时代,你可以直接在本地解决完冲突再提交就可以了,因为SVN会把正确的代码先提交到服务器,至于有冲突的代码,你需要在本地解决完冲突再提交。

但在Git中这样做行不通,Git中每次提交都是完整的,也就是说,即使你这次提交有中冲突的代码,它也一并会推送到要合并的流,每次提交会有一个change_id,当你解决完冲突提交后,这个change_id又会发生变化。这样导致的直接后果是:由于Git是由提交的先后顺序依次合并,因为第一次合并有冲突,后面所有的合并动作都会挂起。这显然不是我们想看到的。但如果解决问题前和解决问题后的change_id不变,这样对于Git来说,则相当于一次提交,这样就可以解决提交冲突的问题了。

解决方案

Git的amend命令支持commit时不修改change_id,命令是:git commit --amend。

时间: 2024-08-27 23:39:55

Git中使用amend解决提交冲突的相关文章

Git创建branch 与 解决分支冲突

由于之前写一个Spring项目的时候是自己和一位大佬一起协作的,在中间差点因为我的git命令不熟悉而导致我的本地分支错误合并.这里仔细写一下git创建分支时候的一些坑和解决分支冲突时候的一些方法. 先写一下一些比较常用的命令 版本回退命令 git reset --hard 版本号 版本回退后后悔了怎么办? 先 git reflog 查看未来的版本号 然后 git reset --hard 版本号 想要让git log --graph看到的东西更好看 不妨使用 git rebase branch

git解决代码提交冲突

树冲突文件名修改造成的冲突,称为树冲突.比如,A同事把文件改名为A.C,B同事把同一个文件改名为B.C,那么B同事将这两个commit合并时,会产生冲突.如果最终确定用B同事的文件名,那么解决办法如下:git rm A.Cgit rm origin-name.Cgit add B.Cgit commit如果最终确定用A同事的文件名,那么解决办法如下:git rm B.Cgit rm origin-name.Cgit add A.Cgit commit内容冲突(git pull拉取最新代码发现)一

GIT 分支管理:创建与合并分支、解决合并冲突

分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN. 如果两个平行宇宙互不干扰,那对现在的你也没啥影响.不过,在某个时间点,两个平行宇宙合并了,结果,你既学会了Git又学会了SVN! 分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了.如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险. 现在有了分支,就不用怕了.你

git解决代码冲突

1.当项目开发是几个人的时候,难免会出现代码冲突,使用git命令行解决冲突的方法如下: git checkout develop git pullgit checkout feature/新建会员功能git merge develop 将develop merge到 分支上git status 查看状态在ide下解掉冲突 :wq git add web-app/source/app/胜利iews/member/students.html 冲突的文件git commitgit push origi

git 解决二进制文件冲突

1.冲突的产生 当我们向远程git服务器提交某一个文件的修改时,恰巧这个文件相同的修改地方其他人也有修改,并且已经提交到服务器,这时冲突就产生了. 通常,当我们合并两个相同的地方都有修改的分支时,都会产生冲突. 2.文本文件冲突解决 出现冲突时git不知道如何自动合并,需要我们解决冲突手动合并. 如果是文本文件,git会在有冲突的地方作上标记(如 HEAD >>> ==== <<< HASH_ID等),标记哪些是当前分支的修改,哪些是其他分支的修改.参考这些标记,解决冲

2016/01/13开始学习git:分支管理:解决冲突

创建新分支,commit后:切换回master分支,再次commit:Git此时无法快速合并. 可以git status找到冲突的文件readme.txt, 查看并修改,然后再次提交 1.创建新分支feature1,新增readme.txt的内容,然后add和commit git checkout -b feature1修改readme.txt最后一行,改为:Creating a new branch is quick AND simple.git add readme.txt git comm

彻底删除git中的较大文件(包括历史提交记录)

2019年04月15日 15:47:31 HappyRocking 阅读数 395更多 分类专栏: linux 版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/HappyRocking/article/details/89313501 场景 适用于从一个git项目中,将体积较大的资源彻底从git中删除,包括历史提交记录. 如果仅仅在目录中删除一个文件是不够的,只要在提交记录中有这个文件,那

eclips git中的add to Index无效解决

今天在使用eclips git中的add to Index,发现其无效,具体如下 问题描述: 通过export导入一个git java项目 在java工程中新增一个类文件IndicatorCalcTest.java 在eclips中选择该文件,team->add to Index,操作后该文件未显示+号 问题定位: 直接通过命令行进入IndicatorCalcTest.java文件所在目录,命令执行git add IndicatorCalcTest.java,报如下错误 C:\Users\Adm

Git中.gitignore文件不起作用的解决以及Git中的忽略规则介绍

在Studio里使用Git管理代码的过程中,可以修改.gitignore文件中的标示的方法来忽略开发者想忽略掉的文件或目录,如果没有.gitignore文件,可以自己手工创建.在.gitignore文件中的每一行保存一个匹配的规则例如: 1 2 3 4 5 6 7 # 此为注释 – 将被 Git 忽略 *.a       # 忽略所有 .a 结尾的文件 !lib.a    # 但 lib.a 除外 /TODO     # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO b