我对文件进行了一些更改,然后在下一次提交的索引中将其暂存。然后我意识到我需要做一些更改。有没有一种方法可以在最终提交之前捕获这些后续更改?
是不是
git add -u filename (与我对文件名文件进行更改的次数相同)
而不是
git reset
git add filename
答案 0 :(得分:2)
您可以根据需要多次在同一个文件上调用git add filename
。
它始终会添加任何现有的非分阶段更改,无论该文件是否已在索引中发生更改。
-u
标志(--update
的快捷方式)有不同的用途。来自the man page:
更新索引,使其具有匹配
<pathspec>
的条目。这将删除并修改索引条目以匹配工作树,但不添加新文件。
换句话说:如果以前从未跟踪filename
,git add -u filename
不会将其添加到索引中。但对于已经跟踪的文件,使用-u
标志没有区别。
答案 1 :(得分:0)
echo“new file”&gt; newfile.txt
git add newfile.txt
git ls-files --stage [注意对应newfile.txt的对象]
100644 fa49b077972391ad58037050f2a75f74e3671e92 0 newfile.txt
ls -Fls .git / objects / fa [查看fa文件夹]
1 -r - r - r-- 1 user1234 1049089 24 Mar 19 00:17 49b0779 .......
echo“在我的新文件中添加第二行”&gt;&gt; newfile.txt
git add newfile.txt
git ls-files --stage [注意与newfile.txt对应的新对象]
100644 9f70c3077ccb16453d0ad0c152e8c169f81d8466 0 newfile.txt
ls -Fls .git / objects / 9f [查看9f文件夹]
1 -r - r - r-- 1 user1234 1049089 54 Mar 19 00:22 70c3077 ......
git fsck | grep fa49b0779 [扫描悬空斑点]
检查对象目录:100%(256/256),完成。 检查对象:100%(462/462),完成。 悬空blob fa49b0779 .... [发现之前的blob现在悬空!]
git fsck | grep 9f70c3077 ...... [扫描看当前blob是否悬空]
检查对象目录:100%(256/256),完成。 检查对象:100%(462/462),完成。 [显然,没找到!]
回声“这是第三行”&gt;&gt; newfile.txt [对newfile.txt进行更多更改]
git add newfile.txt
git fsck | grep 9f70c3077 ..... [再次扫描9f70c3077 ......]
检查对象目录:100%(256/256),完成。 检查对象:100%(462/462),完成。 悬空blob 9f70c3077 ....
[这次,我们发现9f70c3077 ......不再是对应newfile.txt的blob。它正在晃来晃去,等待垃圾收集器把它擦掉!]