簡體   English   中英

如何忽略 Git 更改的文件?

[英]How to ignore Git changed files?

我目前正在使用此設置。 我有 3 個更改的文件,其中主要包含環境變量,例如 Jwt 令牌、雲托管變量等。這些更改主要是這樣的:空字符串 --> 我的環境變量

我永遠不會將它們包含在提交中,因為顯然,我們團隊的每個成員都有它們彼此不同。

但這在我的工作流程中很煩人。 我無法永久存儲它們,因為我希望這 3 個文件中的更改會影響我的本地應用程序。 每次切換分支時,我都必須將它們存儲起來,然后將它們stash pop起來。

不知何故,我希望 Git 假設它們在我的本地存儲庫的每個分支中都已更改,而不會一直保持它們處於未暫存狀態......即使我更改了文件,它們也不會被跟蹤。

謝謝你。

您可以使用從索引中取消暫存文件

git 重置 HEAD -- path/to/file

就像 git add 一樣,您可以通過目錄等遞歸地取消暫存文件,因此要一次取消暫存所有內容,請從存儲庫的根目錄運行:

git 復位 HEAD --。

此外,為了將來參考,git 狀態的 output 將告訴您將文件從一個 state 移動到另一個所需的命令。

你可以告訴 git 它應該“假設”文件沒有改變。

git update-index --assume-unchanged some_file.txt

這只是設置一個標志,告訴 git

“假設不變”位打開時,用戶承諾不更改文件並允許 Git 假設工作樹文件與索引中記錄的內容匹配。

您可以取消設置標志

git update-index --no-assume-unchanged some_file.txt

編輯

這個 update-index 選項與簡單地取消暫存它們並保持它們未暫存有什么不同? 無論如何,非常感謝。

設置該標志后,路徑將不會顯示為已修改的 git 狀態。 對該路徑的更改將被忽略。 如果您取消暫存更改,則工作副本將顯示為已修改,您可能會意外添加並提交它。 例如

git init test_repo
cd test_repo
cat << EOF > .credentials
# credentials template file
user=
pass=
EOF
git add .credentials
git commit -m 'Credentials template file added'

當您現在編輯.credentials文件時,它將以 git 狀態顯示為已修改。

git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   .credentials

no changes added to commit (use "git add" and/or "git commit -a")

但是,如果您告訴 git 假設文件未更改,它將被忽略。

git update-index --assume-unchanged .credentials
git status
On branch master
nothing to commit, working tree clean

PS:最好將這些文件添加到.gitignore然后永遠不要提交,即使是模板。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM