撤消最近的“git add”。命令在git bash上触发
我错误地做了git add .
现在我在临时区域有多个文件。我知道我可以使用git reset
来暂停文件,但这将占用我大部分时间。撤消最近的“git add”。命令在git bash上触发
我正在寻找可以节省我的时间的解决方案。现在我想知道,
有没有撤消最后
git add .
命令混帐上发射一个可行的办法。这样我就不必多次做git reset file
。如果上述方式是不可能的,那么是否有一种方法可以使用单个命令重置多个文件。
你有上演你要的文件保持上演,或者你愿意拥有的所有文件回去完全不分级的?
后者很容易:使用git reset
没有附加参数,如galath commented。这确实一个--mixed
复位:
- 移动当前分支到指定的提交,但没有命名的承诺,这意味着当前分支移到
HEAD
,并HEAD
是当前提交,所以我们把当前的承诺本身,它什么都不做;然后 - 用指定提交中的版本替换索引中的文件(同样,我们没有命名,所以这就是
HEAD
提交)。
(这两个步骤是--soft
和--mixed
部分;没有--hard
,git reset
跳过消灭工作树改变的第三步显然,你不想让那些灰飞烟灭,所以你不应该使用--hard
。)
前者更难。为了得到一个列表的所有筹备的文件,使用:
git diff --cached --name-only
如果你希望有选择地重新设置最,但不是全部,这些文件的,你可以写这些文件的名称到一个文件中(最好是你的工作之外-tree),例如/tmp/list
,然后编辑该文件以删除要保留的名称。然后:
git reset -- $(cat /tmp/list)
或:
xargs git reset -- < /tmp/list
上运行的每个路径名git reset --
。这假定文件名中没有空格;如果存在,则使用额外的外壳欺骗仅在换行符处中断(假设路径名中没有换行符)。
如果你一直在小心翼翼地上演一些但不使用git add -p
一些文件的所有,它是通常可能,这些使用git fsck --lost-found
,并通过所有产生的“晃来晃去斑点”戳来恢复,但这是很不值得的努力。
感谢您的答案。 – BeginnersSake
看来这应该工作: git reset -p <file_name>
只是做一个'git reset' – galath
没办法解决这个问题。未来最好的方法是小提交。 https://sethrobertson.github.io/GitBestPractices/ –