我无意间把错误的档案 写错给Git 基特,但还没有将承诺推进到服务器上。
我如何解除那些承诺?当地当地仓库?
我无意间把错误的档案 写错给Git 基特,但还没有将承诺推进到服务器上。
我如何解除那些承诺?当地当地仓库?
当前回答
简单, 在命令行运行此操作 :
git reset --soft HEAD~
其他回答
恢复和放弃承诺是最好的,如果你想在向公共部门等提出补丁时保持历史清洁有用的话。
如果你必须放下最上层的承诺, 那么以下的单行帮助
git rebase --onto HEAD~1 HEAD
但如果你想放弃其中的 多项承诺,你确实说
- > b - > c - > > d - > 硕士
,然后您要放弃“ c” 承诺
git rebase --onto b c
这将使“ b” 成为“ d” 删除“ c” 的新基础
在前几次答复中谈到与Git相关的命令时,我想向所有读者介绍我典型的Git周期,这可能是有益的。 这就是我如何与Git合作,
第一次从远程服务器克隆
git clone $project
从远程拉动( 当我没有当地未完成的推动承诺) )
git pull
将新的本地文件 1 添加到 $to_ be_ compent_ list (想象$to_ be_ compent_ list 意思是staged
区域)
git add $file1
删除从 $to_be_ composed_ list 错误添加的文件2( 假设文件2 与第 3 步一样添加, 我并不想这样做 )
git reset $file2
正在提交 $to_ be_ compent_ list 中的文件1
git commit -m "commit message description"
在推进前与远程仓库同步本地承诺
git pull --rebase
冲突发生时的解决配置合并工具
git mergetool #resolve merging here, also can manually merge
添加冲突解决文件file1
:
git add $file1
继续我先前的重新基地指挥
git rebase --continue
启动已同步的本地最后一次任务已就绪
git push origin head:refs/for/$branch # branch = master, dev, etc.
git reset --soft HEAD^
或git reset --soft HEAD~
这将撤销最后一项承诺 。
给--soft
意思是重置为中位 。
HEAD~
或HEAD^
意思是移动以在 HEAD 之前承诺 。
git commit --amend -m "message"
它将以新承诺取代最后一项承诺 。
取决于您是否已经公开了您的前一次承诺( 插入到您的远程仓库 ) :
比方说我承诺了当地, 但现在我想取消那个承诺。
git log
commit 101: bad commit # Latest commit. This would be called 'HEAD'.
commit 100: good commit # Second to last commit. This is the one we want.
要让一切恢复到上次承诺之前的状态 我们需要reset
之前的承诺HEAD
:
git reset --soft HEAD^ # Use --soft if you want to keep your changes
git reset --hard HEAD^ # Use --hard if you don't care about keeping the changes you made
现在git log
将显示我们最后的承诺已被删除 。
如果您已经公开了承诺, 您将会想要创建一个新的承诺, 它将“ 撤销” 您对上一个承诺( 当前 HEAD) 所做的更改 。
git revert HEAD
你们的更改将恢复,并准备好你们承诺:
git commit -m 'restoring the file I removed by accident'
git log
commit 102: restoring the file I removed by accident
commit 101: removing a file we don't need
commit 100: adding a file that we need
更多信息,请查看Git Basics - 撤销事情.