git从远程仓库上撤销提交

jappro 发布于 2015/05/26 19:32
阅读 6K+
收藏 0
Git
原来在本地的.gitignore文件中写了test.php,后来疏忽把test.php提交到了远程库,在别的服务器上pull的时候,显示的是"error: Your local changes to 'test.php' would be overwritten by merge. ",该怎么从远程服务器上撤销提交?
加载中
1
Feng_Yu
Feng_Yu

常用的有两种方法:

方案一:push -f

push -h可以看到有个-f参数,这个参数用于强制推送本地更新到远程仓库,常用来解决本地分支落后远程分支,或者是远程分支和本地分支方向不同时强行同步修正。

因此你可以先在本地用reset --hard这种方式,回滚你本地的版本库与commit log,然后push -f强行推送到远程仓库完成回滚。

但是需要注意的是,团队开发要**慎用**push -f,会干扰到所有人的工作。像是gitlab,gerrit这种团队协作的版本库管理工具,默认甚至都拒绝push -f的。人少的话用无妨,人多的话就要考虑清楚了。

方案二: revert

git有一条专门用于打回递交的指令revert,因此在多人开发的时候你可以用revert打回自己的递交之后再push。这样会在commit log中增加一条revert log。这样不会干扰到别人的工作。但是会在commit记录中多上一笔,等于增加了没用的递交记录。所以自己开发为了commit记录好看通常是不用这个的。

0
leo108
leo108

楼上不看清楚题目就回复,这个和你的test.php没有一点关系。

是有人在服务器上直接修改了settings.php这个文件导致的

jappro
jappro
回复 @Feng_Yu : 我就是这个意思,那个错误粘贴错了,是test.php,非常感谢
leo108
leo108
回复 @Feng_Yu : 还真不是,如果是应test.php的原因,那么报错里面应该是说test.php会被覆盖,而不是settings.php
Feng_Yu
Feng_Yu
看到了。楼主问的就是怎么打回递交而已。当然也可以用git rm方式删掉被ignore的文件而已。这个问题就是因为递交了被ignore的文件。说的是在另外一台电脑上pull的时候会冲突。别人那里也有这个文件,有冲突了
0
nivance
nivance
git reset --hard commit_id1

git push origin HEAD --force

上面的命令会把commit_id1之后的提交都取消

返回顶部
顶部