git撤回已提交的commit以及git reset --soft HEAD^后显示more?

如题,commit之后发现有部分代码不想提交,忘记忽略了,现在还没有push

这个时候如何撤回

输入如下代码即可

git reset --soft HEAD^

注意windows当中需要输入

git reset --soft HEAD^^

否则会一直提示more?

貌似是windows当中^才是换行符导致的

其中

-- soft  撤回commit并保留修改的代码
-- hard  撤回commmit且删除所有修改过的代码 这个慎用奥
### 如何在 Git撤回单个 Commit 当需要撤回某个特定的提交时,有几种不同的策略可以选择,具体取决于该提交的状态(即是否已经推送到远程仓库)。以下是处理不同场景的方法: #### 场景一:本地尚未推送至远程库 对于仅存在于本地环境下的提交,最简便的方式是利用 `git commit --amend` 来修正最近的一次提交信息或更改其内容。这允许开发者调整最后一次提交的信息而无需创建新的历史记录条目。 如果希望完全移除最新的提交而不是仅仅修改它,则可采用如下指令: ```bash git reset --soft HEAD~1 ``` 此命令会保留工作区内的改动状态不变,但取消掉最新一次的提交动作[^2]。 #### 场景二:已推送至远程库且未被他人拉取 一旦提交已经被推送到了共享的远程分支上,在大多数情况下应该避免使用强制更新(`--force`)来覆盖已有版本的历史记录,因为这样做可能会引起其他协作者遇到冲突或其他问题。相反地,推荐的做法是在原基础上新增一条反向补丁式的提交来抵消之前的错误变更。 可以通过以下方式实现这一点: ```bash git revert <commit-hash> ``` 这里 `<commit-hash>` 是指想要撤回的那个提交对应的哈希值。这条命令会在当前分支顶端增加一个新的提交,这个新提交包含了与指定旧提交正好相反的变化集,从而有效地“撤销”了之前的操作效果[^1]。 #### 场景三:针对单个文件的特殊处理 假如只打算恢复某一个具体的文件回到前一个版本而不影响整个项目的其余部分,那么可以直接通过下面这种方式来进行操作: ```bash git checkout <commit>^ -- path/to/file.ext ``` 其中 `<commit>` 表示目标提交点的位置;`path/to/file.ext` 则是要还原的具体路径名。这样做的好处是不会改变任何其他的文件或是项目整体的状态,仅仅是让所选文件回到了过去的模样[^3]。 综上所述,根据实际需求选择合适的方式来撤回Git中的单个Commit是最优解法。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值