我对文件进行了一些更改,然后将其暂存到索引中以供下一次提交。然后我意识到我需要做更多的改变。有没有办法在最终提交之前捕获这些后续更改,而不是取消暂存它?
可不可能是
git add -u filename (与我对文件名文件进行更改的次数一样多)
代替
git 重置
git 添加文件名
?
您可以git add filename
根据需要多次调用同一个文件。
它总是会添加任何现有的非暂存更改,无论文件是否已经在索引中进行了更改。
-u
标志(的快捷方式--update
)用于不同的目的。从手册页:
在已经有匹配项的位置更新索引
<pathspec>
。这会删除并修改索引条目以匹配工作树,但不会添加新文件。
换句话说:如果filename
以前从未被跟踪过,git add -u filename
则不会将其添加到索引中。但是对于已经被跟踪的文件,使用该-u
标志没有任何区别。
回显“新文件”> 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了。它现在悬空,等待垃圾收集器将其清除!]