永不add:添加到 .gitignore中
新文件不add:git add -u
部分不add:执行 git add .全部添加,然后git reset 取消部分添加
部分add:手动指定文件添加
一个文件的某些部分add:git add -p
批量添加:git ls-files 和 xargs
1. 使用 .gitignore 来忽略不需要添加的文件
如果你有文件不需要提交,并且不打算提交它们,你可以将这些文件添加到 .gitignore 文件中,这样 git 就会自动忽略这些文件,无需手动排除。
步骤:
在项目根目录下创建或编辑 .gitignore 文件。
在 .gitignore 中列出你不想添加的文件或目录。
例如,如果你不想添加 *.log 和 tmp/ 目录,可以在 .gitignore 中写入:
```bash
*.log
tmp/
这样,以后 git add . 会自动忽略以.log结尾的文件和tmp/目录下所有文件。
2. 使用 git add -u 或 git add -A
如果你只想将已经修改的文件添加到暂存区,而不包括新增的文件,可以使用以下命令:
git add -u
这个命令将会把修改过的文件(包括删除的文件)添加到暂存区,但不会包括新创建的未跟踪文件。这样你可以避免添加不必要的新文件。
如果你只想将新添加的文件与修改的文件都添加到暂存区,可以使用:
git add -A
3. 使用 git add 时选择性地添加文件
如果你有多个文件需要 git add,但其中少数文件不需要,你可以使用以下方法:
3.1 使用 git add . 后再撤销某些文件
你可以先使用 git add . 将所有改动的文件都添加到暂存区,然后使用 git reset 撤销不需要的文件:
git add .
git reset <不需要的文件>
例如,如果你不想添加 file_to_ignore.txt,可以运行:
git reset file_to_ignore.txt
3.2 使用 git add -p 交互式选择文件
如果想更加精细地选择哪些文件需要添加,可以使用 git add -p 进入交互式模式:
git add -p
这将逐个文件片段展示差异,并询问是否将其添加到暂存区。可以选择性地添加或跳过某些文件的改动。
交互式模式会显示如下提示:
diff
diff --git a/file.txt b/file.txt
index 1234567..89abcdef 100644
--- a/file.txt
+++ b/file.txt
@@ -1,4 +1,4 @@
...
Stage this hunk [y,n,q,a,d,/,s,e,?]?
在这里,你可以选择:
y:添加当前片段
n:跳过当前片段
q:退出
a:添加所有片段
d:跳过所有片段
通过这种方式,你可以精确地选择哪些更改被添加到暂存区。
4. 手动选择添加文件
如果不想使用 .gitignore 或者不需要交互式选择,可以直接手动指定需要添加的文件,而不是使用 git add .。
例如:
git add file1.txt file2.txt file3.txt
5. 使用 git ls-files 结合 xargs 批量选择文件
如果你有很多文件需要添加,但不希望逐个添加,同时有一些文件需要排除,你可以使用 git ls-files 来列出所有已修改的文件,然后结合 xargs 命令批量选择性地添加文件。
假设你想添加所有文件,但排除某个特定目录(如 tmp/),你可以使用以下命令:
git ls-files | grep -v '^tmp/' | xargs git add
这会列出所有已跟踪的文件,并排除 tmp/ 目录中的文件,然后将剩余的文件添加到暂存区。