Git提交失误场景(一)

场景一览:

  1. 我的上个 commit log 写错了怎么办?
  2. 我刚刚的提交忘了 add 改动文件了怎么办?
  3. 本来应该新建分支的,但是我不小心 commit 进 master 分支了怎么办?
  4. 我不小心 commit 进错误的分支了怎么办?
  5. 咦,怎么我的 git diff 没反应?
  6. 我刚刚一顿操作猛如虎,git 出错一团糊,好想回到过去,怎么造时光机器?
  7. 究级奥义,以上方法都不奏效怎么办?

1、我的上个 commit log 写错了怎么办?

当你和同事在微信上吐槽你的领导,边说边笑顺便按了回车提交了你的代码,突然你意识到,刚刚你把要发给同事的吐槽写到了 commit log 中。你的职业生涯突然面临第一次危机!

解决办法:

git commit --amend
# 你的文本编辑器会打开,赶紧输入你的log

2、我刚刚的提交忘了 add 改动文件了怎么办?

你刚刚完成了一个超棒的功能,赶紧提交上去和同事炫耀一下,你愉快地 commit 完代码后突然意识到刚刚忘了把你改动的文件 add 上去了。这时候是新建一个提交还是……

解决办法:

当然是可以重新修改他们啦,只要两行命令就可以了。

git add . # 或者其它改动的文件
git commit --amend
# 保持你的提交就可以啦

3、本来应该新建分支的,但是我不小心 commit 进 master 分支了怎么办?

但愿你还没 git push,不然这个方法就不起作用了,不管你是不是 commit 进 master 分支,这个方法都适用。一般我们都会在各种新分支上搞事情,主分支要求保持代码稳定,所以这时候你应该这么做。

解决方案:

# 以当前改动创建新分支
git branch some-new-branch-name
# 将之前的提交重置
git reset HEAD~ --hard
git checkout some-new-branch-name
# 万幸,现在你的 commit 完好无损

4、我不小心 commit 进错误的分支了怎么办?

同上,但愿你还没 git push,现在你的目的不是新建分支,而是提交到其它分支去。所以你应该这么做。

解决方案 1:

# 取消上个 commit,但是保留文件修改
git reset HEAD~ --soft
git stash
# 进入正确的分支
git checkout name-of-the-correct-branch
git stash pop
git add . # 或者其它修改文件
git commit -m "your message here"
# 你的修改已经 commit 到了正确目录了

解决方案 2:

哦不,太长了记不住,那就试试这个 cherry-pick 版本:

# 切换到正确branch
git checkout name-of-the-correct-branch
# 将刚刚的 commit 扔到当前branch
git cherry-pick master
# 用 reset 丢弃你之前的改动
git checkout master
git reset HEAD~ --hard

5、咦,怎么我的 git diff 没反应?

是的,git 的 diff 命令不会检查已经放入 staging 区域的文件。所以解决方法是:

git diff --staged

6、我刚刚一顿操作猛如虎,git 出错一团糊,好想回到过去,怎么造时光机器?

你需要一个后悔药,但是你并没有小叮当。看着黑框框的一大串英文,你内心奔溃了。

别怕,git 可以这么做:

git reflog
# 在你眼前的是你用 git 命令的所有历史
# 每一条历史都有一个序号index,表示为 HEAD@{index}
# 找到你刚刚闯祸的那条命令 index
git reset HEAD@{index}
# 恢复,神奇时光机

7、究级奥义,以上方法都不奏效怎么办?

是的,我发现打死我也提交不上去,也拉不下代码来,你意识到,你的职业生涯面临着史上最大最惨的危机。你再也不能仅仅看这个急救手册了,但是,你发现你来不及了,来不及从零开始学习 git ……生存还是死亡,怎么办?

好吧,建议你这么做:

cd ..
sudo rm -r fucking-git-repo-dir
git clone https://some.github.url/fucking-git-repo-dir.git
cd fucking-git-repo-dir

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值