在git中,如果我已经将一个文件的几个补丁放入了暂存区,那么如何交互式地取消其中一个补丁的暂存?
是否有任何替代方法可以仅取消其中的一个补丁,而不是取消整个文件的暂存,然后重新暂存我想要保留的补丁,或手动撤消工作副本中的更改,然后交互式地添加这些撤消的更改?
是否有任何替代方法可以仅取消其中的一个补丁,而不是取消整个文件的暂存,然后重新暂存我想要保留的补丁,或手动撤消工作副本中的更改,然后交互式地添加这些撤消的更改?
git gui
提供了一个不错的图形界面,可以交互式地暂存或取消暂存代码块或行。虽然有更漂亮/更好的图形界面客户端,但git gui
很轻量级,内置且跨平台(lin、win、mac)。
https://git-scm.com/docs/git-gui
只需右键单击一个块即可暂存/取消暂存。对于行,请先突出显示行,然后右键单击。
git gui
以出色的方式完成了这个任务。我想知道是否有一种非图形界面的方式,在终端上使用,比如连接到Linux服务器时。 - undefinedGitX有一个漂亮的用户界面,可以取消暂存文件的块:
官方客户端已经有一段时间没有维护了,但是GitHub上的一个分支具有更多功能,在某些圈子中很受欢迎。(关于它的博客文章)
git gui
内置的功能也是如此,只不过我不确定是否应该使用 "nice" 这个词。 - Tyler
git stash save --keep-index
保存并重置当前的工作副本更改。然后,您可以重置文件并撤消您不想要的更改。如果您首先将文件复制到某个临时位置,则可以使用diff
保存您撤消的更改。然后,您可以再次添加文件(不需要交互式添加,因为您已经隐藏了其他不感兴趣的更改)。使用git stash pop
获取旧更改,并使用diff
应用您撤消的更改。相当繁琐... :-( - Aasmund Eldhusetgit reset -p filename
吗? - Nawazgit add -p 文件名
可以选择性地将该文件的更改提交,而git reset -p 文件名
可以选择性地取消提交。还有git checkout -p -- 文件名
,它可以让你选择性地放弃文件中的更改。警告:add
和reset
中的任何一个都可以用来撤消另一个,但如果你使用这种形式的checkout
来丢弃一个更改,你就无法再找回它了。 - Aasmund Eldhuset