我正在手动审查一些消息目录中搜索和替换脚本所做的大量更改(在1000年代)。目前我正在做git add -p
,但我一直在休息检查其他文件或调整脚本,所以我将其与git checkout -p
交替放弃我不想要的更改。有没有办法将两者结合起来?即对于每个大块,我想要选择暂存它,或者丢弃它。
答案 0 :(得分:4)
如果您使用的是Windows或Mac OS,则可以使用免费的SourceTree GUI应用程序,该应用程序允许您在差异视图中暂存或丢弃每个块(甚至从每个块中选择行)。
答案 1 :(得分:0)
如何为你不想登台的帅哥打字j - leave this hunk undecided, see next undecided hunk
,
在所有这些之后,运行git checkout --
,那些被选中的人将被上演,其他人将被丢弃。
当您使用git add -p
时,输入?
会显示帮助
Stage this hunk [y,n,q,a,d,/,e,?]?
y - stage this hunk
n - do not stage this hunk
q - quit, do not stage this hunk nor any of the remaining ones
a - stage this and all the remaining hunks in the file
d - do not stage this hunk nor any of the remaining hunks in the file
g - select a hunk to go to
/ - search for a hunk matching the given regex
j - leave this hunk undecided, see next undecided hunk
J - leave this hunk undecided, see next hunk
k - leave this hunk undecided, see previous undecided hunk
K - leave this hunk undecided, see previous hunk
s - split the current hunk into smaller hunks
e - manually edit the current hunk
? - print help
答案 2 :(得分:0)
您是否看过 git gui 。它是一个与git捆绑在一起的实用程序,并且试图使复杂的操作变得容易,这些操作混合了分段和结帐。你可以阅读它here
您可以选择暂存一个大块并放弃其余的更改。通过执行ctrl + j
或cmd + j
,您可以签出所选文件。
我知道从shell使用git要快得多,但在像这样的复杂情况下,在不同命令之间切换会成为开销。
答案 3 :(得分:0)
与Git 2.28(2020年第三季度)更加接近!
以前,“ git checkout -p
”根本不处理新添加的路径。
请参见commit 2c8bd84的Johannes Schindelin (dscho
)(2020年5月27日)。
(由Junio C Hamano -- gitster
--在commit 2bdf00e中合并,2020年6月9日)
checkout -p
:正确处理新文件报告人:梅林·比格
帮助人:杰夫·金
签名人:Johannes Schindelin原始补丁选择代码是为
git add -p
编写的,其工作的基本单位是块。我们解决了该问题,以处理24ab81ae4d中的删除(“
add-interactive
:处理空文件的删除”,2009-10-27,Git v1.6.6-rc0-{{3} })。
但是git add -p
永远不会看到新文件,因为我们只考虑索引中的跟踪文件集。但是,由于
git checkout -p
和朋友使用了相同的机制,因此我们可以看到新文件。专门处理这种情况,为其添加一个新的提示,该提示模仿
deleted file
情况。这还解决了无法通过
_empty
暂存已添加的git checkout -p
_个文件的问题。
所以git checkout -p
的提示现在包括:
Discard mode change from worktree [y,n,q,a,d%s,?]?
Discard deletion from worktree [y,n,q,a,d%s,?]?
Discard addition from worktree [y,n,q,a,d%s,?]? <===
Discard this hunk from worktree [y,n,q,a,d%s,?]?
如果丢弃不需要的内容并提交所需的内容,则merge将添加新的剩余文件。
答案 4 :(得分:-1)
暂存您需要的所有内容,提交然后重置或藏匿以清除工作目录以摆脱您不需要的内容。