git commit错了,多commit了文件,怎么排除掉不想要的文件?

您所在的位置:网站首页 git撤销本地提交不push git commit错了,多commit了文件,怎么排除掉不想要的文件?

git commit错了,多commit了文件,怎么排除掉不想要的文件?

#git commit错了,多commit了文件,怎么排除掉不想要的文件?| 来源: 网络整理| 查看: 265

假如基础commit是A,修改了文件foo.txt和bar.txt以后生成commit B。

如果还没push,这时发现bar.txt的修改是不需要commit进去的,那么可以用以下命令把bar.txt从commit B里面去掉:

git reset HEAD^ -- bar.txt git commit --amend --no-edit

第一个命令把index中的bar.txt回退到commit A的版本,这样下一次commit的时候,bar.txt的版本还是commit A里的。但是查看仓库里也就是work tree里的bar.txt,是修改过后的版本。

第二个命令再次commit。如果不加--amend,会在commit B的基础上生成一个commit C。这样做虽然C里bar.txt的版本是和A的一样(相当于没修改)而且foo.txt的版本是B里的版本(是修改过的),但是commit C显得累赘,目的只是要修改并commit foo.txt而已,现在搞了2个commit出来。所以可以加上--amend,这样会在commit A的基础上重新commit一次,会生成一个新的commit B',相当于编辑了commit B。commit B'里只包含了foo.txt的修改。B'会默认使用B的commit message,如果不需要编辑的话,可以加上--no-edit。

如果已经push了,并且这个仓库允许force push,那可以先按照上面的方法修改以后再force push。如果不允许force push,那可以用不加--amend的版本,然后再push。

git reset HEAD^ -- bar.txt git commit git push

不允许force push的情况下,已经push的历史不能“篡改”,那只能在后面做出新的commit来修正。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3