GitHub实验 -- 回退commit

问题:

使用git时,有个非常常见的问题。commit修改之后,如果发现修改不完整或者有错误,想继续修改,该怎么做呢?

我知道可以创建新的commit,可是我有commit洁癖,一个commit想包含完整和正确的修改。

分析和解决步骤(git reset解决,详细分析步骤参考):

#已创建first commit - 1/2(HASH值为ca3c51a)。现在使用git log命令观察commit日志,HEAD指针现在指向first commit - 1/2(HASH值为ca3c51a)。

liyane@Yans-MacBook-Air gittoken % git log   
commit ca3c51a90490b532871f48519a35f9dd3c5dae8b (HEAD -> main)

    first commit - 1/2

commit ca8bcbc51b2892e672013a66efae03c3662e6e10 (origin/main)
...


#步骤1. 使用git reset回退。HEAD指针回退到上一个commit HEAD~。--soft 参数将保留修改内容,并设置为待commit状态。

liyane@Yans-MacBook-Air gittoken % git reset --soft HEAD~

#git reset之后使用git log命令查看目前的commit日志。比较上一个git log结果,HEAD指针现在回退到上一个commit。

liyane@Yans-MacBook-Air gittoken % git log
commit ca8bcbc51b2892e672013a66efae03c3662e6e10 (HEAD -> main, origin/main)
...


#步骤2. 再次修改完成后,创建first commit - 2/2(Hash值为f85512d)。

liyane@Yans-MacBook-Air gittoken % git add test.txt 
liyane@Yans-MacBook-Air gittoken % git commit -m "first commit - 2/2"
[main f85512d] first commit - 2/2
...
 

#查看commit 日志。HEAD指针直接指向first commit - 2/2(Hash值为f85512d)。
liyane@Yans-MacBook-Air gittoken % git log                           
commit f85512d8ee64bbfd064926a5b3f4ea4e702ba489 (HEAD -> main)

    first commit - 2/2

commit ca8bcbc51b2892e672013a66efae03c3662e6e10 (origin/main)
...

小结:

  1. github通过移动HEAD指针来标记和管理代码commit。
  2. 使用git reset命令可以重新设置HEAD指针。支持指定后退次数。比如HEAD~3回退最近3次commit。commit按次序表示(HEAD, HEAD~ 或者 HEAD^,HEAD~2,HEAD~3)。
  3. SOFT模式只做HEAD指针的重置。它不会重置index file和working tree,这意味着将保留文件的修改。
    而HARD模式将重置index file和working tree。
  4. 可以使用git reset --help命令查看具体的用法。
  5. 如有任何问题,欢迎留言讨论。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liyane

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值