你怎么能撤消最后的git add?
是否有可能取消最后阶段(未提交)在git中的更改? 假设当前分支中有很多文件,有些是上演的,有些则不是。 在某些时候,一些愚蠢的程序员意外执行:
git add -- .
...代替:
git checkout -- .
这个程序员现在可以用一些神奇的git命令取消他最后的变化吗? 或者他应该在尝试之前做出承诺?
你可以使用git reset
。 这将“暂停”你上次提交后添加的所有文件。
如果您只想取消某些文件的存储空间,请使用git reset -- <file 1> <file 2> <file n>
。
也可以通过使用git reset -p
来取消文件中的某些更改。
你不能撤销最新的git add,但你可以撤消自上次提交后的所有add
。 没有提交参数的git reset
会重置索引(unstages阶段性更改):
git reset
所以真正的答案
这个程序员现在可以用一些神奇的git命令取消他最后的变化吗?
实际上是: 不,你不能取消最后的git add
。
这就是说,如果我们在以下情况下解释问题:
初始文件:
void foo() {
}
main() {
foo();
}
首先改变后面的git add
:
void foo(int bar) {
print("$bar");
}
main() {
foo(1337);
}
第二次更改之后是git add
:
void foo(int bar, String baz) {
print("$bar $baz");
}
main() {
foo(1337, "h4x0r");
}
在这种情况下, git reset -p
将无济于事,因为它的最小粒度是线条。 git
不知道中间状态:
void foo(int bar) {
print("$bar");
}
main() {
foo(1337);
}
任何更多。
链接地址: http://www.djcxy.com/p/6165.html