前言
在日常代码开发过程我们常常会遇到 git 使用的各种提,今天针对两个遇到的问题进行整理记录。
1、git cmommit 后和撤销
2、git pull遇到错误:error: Your local changes to the following files would be overwritten by merge 怎么处理
1、Git命令 commit后,如何撤销 commit
修改了本地的代码,然后使用命令:
git add file
git commit -m '原因'
执行commit后,还没执行push时,想要撤销这次的commit,该怎么办?
在Git中,撤销commit有几种方法,可以根据具体的需求和情况来选择合适的方法。以下是两种常用的撤销commit的方法:
方法一:使用git revert命令
1、使用git log
命令查看提交历史,找到需要撤销的commit的哈希值。
2、使用git revert
命令,加上需要撤销的commit的哈希值,执行撤销操作。
例如:git revert <commit-hash>
。这会在当前分支上创建一个新的commit,该commit的内容是撤销之前commit的更改。
3、使用git push
命令将撤销的commit推送到远程仓库。
需要注意的是,git revert
命令是创建一个新的commit来撤销之前的更改,而不是直接删除之前的commit。这样可以保持提交历史的完整性。
方法二:使用git reset命令
1、使用git log
命令查看提交历史,找到需要撤销的commit的哈希值。
2、使用git reset
命令,加上需要撤销的commit的哈希值,执行撤销操作。例如:git reset <commit-hash>
。这会将当前分支的HEAD指针移动到指定的commit上,撤销该commit之后的所有更改。
git reset
命令有三种模式:--soft
、--mixed
和--hard
。
--soft
模式会保留更改的内容,但撤销commit;
--mixed
模式会保留更改的内容,并且撤销暂存区的更改;
--hard
模式会撤销commit和工作区的更改。
默认情况下,git reset
命令使用--mixed
模式。如果希望保留更改但不撤销暂存区的更改,可以使用--soft
模式;如果希望完全撤销commit和工作区的更改,可以使用--hard
模式。
3、如果需要,使用git push
命令将撤销的commit推送到远程仓库。
需要注意的是,git reset
命令会改变提交历史,所以在使用时要谨慎。特别是如果已经将commit推送到远程仓库,并且其他人也基于该commit进行了工作,那么使用git reset
命令可能会导致问题。
总结起来,如果希望保留提交历史并使用新的commit来撤销之前的更改,可以使用git revert
命令;如果希望直接撤销commit并可能改变提交历史,可以使用git reset
命令。根据具体的需求和情况选择合适的方法。
另外一点,如果commit注释写错了,先要改一下注释,有其他方法也能实现,如:
git commit --amend
这时候会进入vim编辑器,修改完成你要的注释后保存即可。
2、git pull遇到错误:error: Your local changes to the following files would be overwritten by merge
遇到情况,如何保留本地的修改同时又把远程的合并过来呢?取决于你是否想要保存本地修改。
保留修改:
git stash
git pull origin master
git stash pop
git stash
的时候会把你本地快照,然后git pull
就不会收到阻止,pull完之后你的代码并没有保留你的修改。然后执行git stash pop
在看会发现发生冲突的本地修改还在,这时候该commit push啥的可以了。
不保留修改:
不想保留本地的修改。直接将本地的状态恢复到上一个 commitid 。然后用远程的代码直接覆盖本地就好了
git reset --hard
git pull origin develop
记录 ok