拜托,Git中你所遇见的commit问题我都见过。

前言
 

git commit 是我们常用的命令,我们可以通过这个命令提交代码,是不是有时候可能出现提交信息写错了,想删除某一次提交记录,甚至想找回某一个reset命令后重置的内容。在这篇文章,上面所提到的内容都能解决。

一、提交信息写错了

如果你的提交信息(commit message)写错了且这次提交(commit)还没有推(push), 你可以通过下面的方法来修改提交信息(commit message):

$ git commit --amend --only
复制代码

这会打开你的默认编辑器, 在这里你可以编辑信息. 另一方面, 你也可以用一条命令一次完成:

$ git commit --amend --only -m 'xxxxxxx'
复制代码

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

二、删除任意提交内容

有可能在某次提交过程中你上传了本应该存在于Local的文件内容,比如账号密码等,这个时候你想删除这次commit的记录。

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

$ git rebase --onto SHA1_OF_BAD_COMMIT^ SHA1_OF_BAD_COMMIT
$ git push -f [remote] [branch]
复制代码

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

三、找回reset hard操作的内容

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

(main)$ git reflog
复制代码

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

(main)$ git reset --hard SHA1234
复制代码

这样就完成了。

四、从一次提交中移除一个文件

通过下面的方法,从一个提交(commit)里移除一个文件:

$ git checkout HEAD^ myfile
$ git add -A
$ git commit --amend
复制代码

这将非常有用,当你有一个开放的补丁(open patch),你往上面提交了一个不必要的文件,你需要强推(force push)去更新这个远程补丁。


链接:https://juejin.cn/post/7036174521568591885

全部评论

相关推荐

有担当的灰太狼又在摸鱼:零帧起手查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务