0

我对文件进行了一些更改,然后将其暂存到索引中以供下一次提交。然后我意识到我需要做更多的改变。有没有办法在最终提交之前捕获这些后续更改,而不是取消暂存它?

可不可能是

git add -u filename (与我对文件名文件进行更改的次数一样多)

代替

git 重置

git 添加文件名

?

4

2 回答 2

2

您可以git add filename根据需要多次调用同一个文件。

它总是会添加任何现有的非暂存更改,无论文件是否已经在索引中进行了更改。


-u标志(的快捷方式--update)用于不同的目的。从手册页

在已经有匹配项的位置更新索引<pathspec>。这会删除并修改索引条目以匹配工作树,但不会添加新文件。

换句话说:如果filename以前从未被跟踪过,git add -u filename则不会将其添加到索引中。但是对于已经被跟踪的文件,使用该-u标志没有任何区别。

于 2017-03-16T01:50:06.547 回答
0

示例显示对已暂存的文件进行后续更改并每次在其上运行“git add”的影响

回显“新文件”> newfile.txt

git 添加新文件.txt

git ls-files --stage [注意newfile.txt对应的对象]

100644 fa49b077972391ad58037050f2a75f74e3671e92 0 新文件.txt

ls -Fls .git/objects/fa [查看 fa 文件夹]

1 -r--r--r-- 1 user1234 1049089 24 Mar 19 00:17 49b0779.......

echo "在我的新文件中添加第二行" >> newfile.txt

git 添加新文件.txt

git ls-files --stage [注意newfile.txt对应的新对象]

100644 9f70c3077ccb16453d0ad0c152e8c169f81d8466 0 新文件.txt

ls -Fls .git/objects/9f [查看 9f 文件夹]

1 -r--r--r-- 1 user1234 1049089 54 Mar 19 00:22 70c3077 ......

混帐 fsck | grep fa49b0779 [扫描悬空斑点]

检查对象目录:100% (256/256),完成。检查对象:100% (462/462),完成。dangling blob fa49b0779.... [发现之前的 blob 现在悬空了!]

混帐 fsck | grep 9f70c3077……【扫描查看当前blob是否悬空】

检查对象目录:100% (256/256),完成。检查对象:100% (462/462),完成。[显然,没有找到!]

echo "this is the third line" >> newfile.txt [对 newfile.txt 进行更多修改]

git 添加新文件.txt

混帐 fsck | grep 9f70c3077..... [再次扫描9f70c3077......]

检查对象目录:100% (256/256),完成。检查对象:100% (462/462),完成。悬垂的斑点 9f70c3077....

【这一次,我们发现9f70c3077……不再是newfile.txt对应的blob了。它现在悬空,等待垃圾收集器将其清除!]

于 2017-03-19T05:14:59.387 回答