Von*_*onC 118
更新(几年后)
仅从索引中删除它是微不足道的。
正确:您可以很容易地将文件重置为其索引内容,正如最近的答案(由Matt Connolly撰写)所建议的:
git reset HEAD^ path/to/file/to/revert
Run Code Online (Sandbox Code Playgroud)
HEAD^
允许文件在最后一次提交之前访问上一次提交中的内容。
然后你可以git commit --amend
,正如我最初在下面写的那样。
在 Git 2.23(2019 年 8 月)中,您可以使用新git restore
命令
git restore --source=HEAD^ --staged -- path/to/file/to/revert
Run Code Online (Sandbox Code Playgroud)
更短:
git restore -s@^ -S -- path/to/file/to/revert
Run Code Online (Sandbox Code Playgroud)
同样,你可以git commit --amend
,正如我最初在下面写的那样。
原始答案(2011 年 1 月)
如果这是您的最后一次提交(并且您没有将其推送到任何地方),您可以修改它:
(first stash 或 save b
)
git commit --amend
Run Code Online (Sandbox Code Playgroud)
然后删除b,重新提交。恢复 b 就完成了。
--amend
Run Code Online (Sandbox Code Playgroud)
用于修改当前分支的尖端。
像往常一样准备您想要替换最新提交的树对象(这包括通常的 -i/-o 和显式路径),并且提交日志编辑器使用来自当前分支尖端的提交消息进行播种。
您创建的提交替换了当前的提示?-?如果是合并,它会将当前提示的父项作为父项?-?因此当前的顶级提交被丢弃。
Mat*_*lly 71
git diff --name-only HEAD^
- (可选)用于列出在上次提交中更改的文件。git reset HEAD^ path/to/file/to/revert
- 将索引重置为最后一个版本,保持工作副本不变。git commit --amend
- 修改最后一次提交以包含索引更改pin*_*ngo 10
如果您想从上次提交中删除 b
git rm --cached b (will preserve the file in the working tree but remove it from the index)
git commit --amend
Run Code Online (Sandbox Code Playgroud)
如果要删除上次提交中对 b 的所有更改
(backup b)
(modify b to state before incorrect commit)
git commit --amend
(restore b)
Run Code Online (Sandbox Code Playgroud)
一种不需要索引黑客的替代方法,但仍然保留旧的提交消息:
$ git reset HEAD^
$ git add <all the files you want, excluding the one you don't want>
$ git commit -C HEAD@{1}
Run Code Online (Sandbox Code Playgroud)
我喜欢这个是因为 (a) 它使用我经常使用的命令,并且 (b) 我可以做git add -p
来确切地弄清楚我想要提交什么。
归档时间: |
|
查看次数: |
133639 次 |
最近记录: |