“git add -A”和“git add”之间的区别。
技术问答
580 人阅读
|
0 人回复
|
2023-09-11
|
该命令git add [--all|-A]似乎和 一样git add .。这对吗?如果不是,它们有什么区别?
, t G: ?; }8 \5 @) E; V8 E 3 @. T' A2 j" |: r! I' U; X3 N
解决方案:
0 M4 |: [4 |- l# Q 这个答案只适用于Git 版本 1.x。对于 Git 版本 2.x,请参考其他答案。
. D: k* R7 ^2 g1 l5 T& s- l) O% A概括:
. b" y$ A) \7 s+ r& Y' \git add -A阶段所有更改
- S) M" m d. G R- Rgit add .暂存新文件和修改,不删除(在当前目录及其子目录中)。
* Z2 g; X! d- b+ q& [git add -u修改和删除阶段,没有新文件细节:
0 n$ g+ s# L" i3 Rgit add -A相当于 git add .; git add -u。
+ Z' B* O9 v z' |% s( u% c重要的一点git add .是的,它检查工作树,并将所有这些路径添加到临时存储更改中。如果它们已经改变或新的,并且不被忽视,它将不会临时存储任何rm”操作。
( F! }( Y1 ? `) D ]& ^. ]git add -u查看所有已跟踪文件并暂存更改(如果不同或已删除)。它不会添加任何新文件,只会暂存更改跟踪文件。
% O, \7 q" a* n& N l, Q2 t* dgit add -A 做这两个方便快捷。( Y8 H1 Z" d' t- K( r0 j4 b
你可以用这样的方法来测试差异(请注意 Git 版本 2.x,您的输出git add . git status 会有所不同):
2 P8 i5 u1 p0 S& M" Kgit initecho Change me > change-meecho Delete me > delete-megit add change-me delete-megit commit -m initialecho OK >> change-merm delete-meecho Add me > add-megit status# Changed but not updated:# modified: change-me# deleted: delete-me# Untracked files:# add-megit add .git status# Changes to be committed:# new file: add-me# modified: change-me# Changed but not updated:# deleted: delete-megit resetgit add -ugit status# Changes to be committed:# modified: change-me# deleted: delete-me# Untracked files:# add-megit resetgit add -Agit status# Changes to be committed:# new file: add-me# modified: change-me# deleted: delete-me+ \' w/ v: {% V4 q4 W
|
|
|
|
|
|