git常见场景操作

151 阅读2分钟

1.撤回一个提交

如果已经提交一个记录后悔了,想把这条记录撤回有两种方式

1.1 revert方式

使用 git revert 撤回提交:git revert 创建一个新的提交来撤销指定提交的更改,并保留这个撤销操作的历史记录。这是一个安全的方法,因为它不会改变提交历史。 例如,要撤回最新的提交,可以执行以下命令:

git revert HEAD

推送至远程仓库:

git push

1.2 reset方式

使用 git reset 撤回提交: git reset 可以用来移动分支的指针来撤销提交,并且可以通过不同的选项控制撤回的程度。需要注意的是,使用 git reset 可能会改变提交历史,只有在你明确知道后续操作的影响时使用。

如果你只是想撤回最新的提交并丢弃更改,可以执行以下命令:

git reset --hard HEAD^

如果你希望撤回最新的提交但保留更改作为未提交的更改,可以执行以下命令:

git reset --soft HEAD^ 

推送远程仓库:

git push --force #注意:你可能没有强制推送的权限而导致推送失败

2.修改某次提交

2.1修改最后一次提交

这个简单,使用一个命令就可以了

git commit --amend  对最近一次的commit信息进行修改 会修改commitId

如果你已经推(push)了这次提交(commit), 你可以修改这次提交(commit)然后强推(force push), 但是不推荐这么做。

我提交(commit)里的用户名和邮箱不对 如果这只是单个提交(commit),修改它:

$ git commit --amend --author "New Authorname <authoremail@mydomain.com>"  

如果你需要修改所有历史, 参考 'git filter-branch'的指南页.

2.2我想从一个提交(commit)里移除一个文件

git checkout commitId myfile  
git add -A  
git commit --amend  
git push --force

2.3删除任意提交(commit)

同样的警告:不到万不得已的时候不要这么做.

git rebase --onto SHA1_OF_BAD_COMMIT^ SHA1_OF_BAD_COMMIT  
git push -f [remote] [branch]  

或者做一个 交互式rebase 删除那些你想要删除的提交(commit)里所对应的行。

2.4我意外的做了一次硬重置(hard reset),我想找回我的内容

如果你意外的做了 git reset --hard, 你通常能找回你的提交(commit), 因为Git对每件事都会有日志,且都会保存几天。

git reflog 

你将会看到一个你过去提交(commit)的列表, 和一个重置的提交。选择你想要回到的提交(commit)的SHA,再重置一次:

 git reset --hard SHA1234 

这样就完成了。