强制 git 更新。git忽略
Force git to update .gitignore
我有一个 .gitignore
文件,它忽略了一些文件。我更新了 .gitignore
文件(删除了一些文件名并添加了一些文件名)。 git status
中没有体现这一点。我如何强制 git 更新这些更改,以便跟踪之前未跟踪的文件,反之亦然。
我已经试过了 question,我的所有文件仍然没有被跟踪(根据我更新的 .gitignore
)。 (简单来说,一旦 .gitignore
被更新或删除,我如何强制 git 收回文件)。
您必须先清除现有的 git cache
。
删除所有文件的缓存
git rm -r --cached .
删除特定文件的缓存
git rm -r --cached <file_name.ext>
清除现有缓存后,add/stage file/files 在当前目录中提交
git add .
// 添加所有文件
git add <file_name.ext>
// 添加特定文件
git commit -m "Suitable Message"
正如 Scott Biggs 在评论中指出的那样 "This works for both adding a file that was once ignored as well as ignoring a file that was once tracked"
这里假设你当前的工作目录是空的。
您可以使用 git ls-files
检查 git 当前正在跟踪哪些文件。如果您有很多文件,您可以使用 git ls-files | grep hello.txt
来查找 git 是否正在跟踪该特定文件。
如果它正在跟踪它,则使用 git rm hello.txt
取消跟踪(正如 Tim 在他的 中提到的)。也许先提交未跟踪状态,然后在下次提交时将其添加到 .gitignore
中。过去,当我试图在同一提交中忽略和删除时,我看到了一些奇怪的行为。
如果要添加所有文件,请从 .gitignore
文件中删除所有文件名,而不是 .gitignore
文件和 commit
它,然后尝试
git config --global core.excludesfile ~/.gitignore_global
某些文件被 git 忽略,具体取决于 OS(例如 windows 中的 .dll)。更多 information。
现在
git add .
git status
git commit -m "your message"
或
您可以尝试一个简单的 hack,它可能有效也可能无效。从 .gitignore
文件中删除所有文件名并添加此行 !*.*
,然后添加 add
和 commit
.
更新
很简单,我举个例子来说明。假设您有一个 build
文件夹,该文件夹已被 git 添加和跟踪。现在您决定不跟踪此文件夹。
- 将此文件夹 (
build
) 添加到 .gitignore
- 删除
build
文件夹
- 提交您的更改
从现在开始 git 将不会跟踪 build
文件夹。
您可以通过删除出现此问题的特定文件的缓存来解决此问题。
当您提交了一些特定文件,然后稍后将它们添加到 .gitignore 中时,就会出现您提到的问题。
git rm -r --cached <your_file.extension>
git commit -am "Suitable Message"
上面@sharvan40 提出了相同的解决方案,但您不需要删除所有文件的缓存。它为您的所有文件创建一个新的提交。
有效
//首先提交任何未完成的代码更改,然后,运行 这个命令:
git rm -r --cached .
//这会从索引(暂存区)中删除任何更改的文件,然后只是 运行:
git add .
//提交
git commit -m "Atualizando .gitignore para..."
我有一个 .gitignore
文件,它忽略了一些文件。我更新了 .gitignore
文件(删除了一些文件名并添加了一些文件名)。 git status
中没有体现这一点。我如何强制 git 更新这些更改,以便跟踪之前未跟踪的文件,反之亦然。
我已经试过了 question,我的所有文件仍然没有被跟踪(根据我更新的 .gitignore
)。 (简单来说,一旦 .gitignore
被更新或删除,我如何强制 git 收回文件)。
您必须先清除现有的 git cache
。
删除所有文件的缓存
git rm -r --cached .
删除特定文件的缓存
git rm -r --cached <file_name.ext>
清除现有缓存后,add/stage file/files 在当前目录中提交
git add .
// 添加所有文件git add <file_name.ext>
// 添加特定文件git commit -m "Suitable Message"
正如 Scott Biggs 在评论中指出的那样 "This works for both adding a file that was once ignored as well as ignoring a file that was once tracked"
这里假设你当前的工作目录是空的。
您可以使用 git ls-files
检查 git 当前正在跟踪哪些文件。如果您有很多文件,您可以使用 git ls-files | grep hello.txt
来查找 git 是否正在跟踪该特定文件。
如果它正在跟踪它,则使用 git rm hello.txt
取消跟踪(正如 Tim 在他的 .gitignore
中。过去,当我试图在同一提交中忽略和删除时,我看到了一些奇怪的行为。
如果要添加所有文件,请从 .gitignore
文件中删除所有文件名,而不是 .gitignore
文件和 commit
它,然后尝试
git config --global core.excludesfile ~/.gitignore_global
某些文件被 git 忽略,具体取决于 OS(例如 windows 中的 .dll)。更多 information。
现在
git add .
git status
git commit -m "your message"
或
您可以尝试一个简单的 hack,它可能有效也可能无效。从 .gitignore
文件中删除所有文件名并添加此行 !*.*
,然后添加 add
和 commit
.
更新
很简单,我举个例子来说明。假设您有一个 build
文件夹,该文件夹已被 git 添加和跟踪。现在您决定不跟踪此文件夹。
- 将此文件夹 (
build
) 添加到.gitignore
- 删除
build
文件夹 - 提交您的更改
从现在开始 git 将不会跟踪 build
文件夹。
您可以通过删除出现此问题的特定文件的缓存来解决此问题。 当您提交了一些特定文件,然后稍后将它们添加到 .gitignore 中时,就会出现您提到的问题。
git rm -r --cached <your_file.extension>
git commit -am "Suitable Message"
上面@sharvan40 提出了相同的解决方案,但您不需要删除所有文件的缓存。它为您的所有文件创建一个新的提交。
有效
//首先提交任何未完成的代码更改,然后,运行 这个命令:
git rm -r --cached .
//这会从索引(暂存区)中删除任何更改的文件,然后只是 运行:
git add .
//提交
git commit -m "Atualizando .gitignore para..."