簡體   English   中英

忽略對跟蹤文件的更改

[英]Ignore changes to a tracked file

我只想為開發更改跟蹤文件,但保持跟蹤版本不變。

這個建議的大多數“解決方案”

git update-index --assume-unchanged

但這完全沒用,因為文件仍然會通過結帳或重置而更改。 是否有更好的解決方案可以在結帳和重置命令中幸存下來?

快速解決

這就是我認為您正在嘗試做的事情,更改文件,但在提交時忽略它。

git update-index --skip-worktree my-file

這是關於assume-unchangedskip-worktree之間差異的一個很好的答案。

如果您嘗試將更改合並到my-file Git 仍會發出警告。 然后你將不得不“取消跳過”文件,合並它並“重新跳過”它。

git update-index --no-skip-worktree my-file
# merge here
git update-index --skip-worktree my-file

如果您修改文件,然后切換到該文件已更改的分支,也可能會出現問題。 您可能需要做一些奇特的“跳過/取消跳過”操作來解決這個問題。

長期修復

從長遠來看,您可能希望將“本地”更改分離到第二個文件中。 例如,如果您要更改的文件是配置文件,請創建一個“默認”配置文件,並將其簽入存儲庫。 然后,允許第二個可選的“覆蓋”配置文件並將該文件放入您的.gitignore

然后,在您的應用程序中,讀取默認配置文件,然后檢查覆蓋文件是否存在。 如果是,則將該數據與來自默認文件的數據合並。

此示例適用於配置文件,但如果需要,您可以將該技術用於其他類型的覆蓋。

由於在您的評論之一中您直接在master分支中工作,因此真正要解決的問題是在master工作。

你需要在 Git 中創建一個主題分支:

git checkout -b some_feature_or_bug_fix master

然后對配置文件進行必要的更改,並正常提交。

這里的好處是你不會影響master文件。 如果您需要拉入更新的代碼,只需git fetchgit merge origin/master到您的主題分支。 然后,您可以像正常的 Git 合並一樣處理對配置文件的上游更改。

在將您的主題分支合並到master之前,您可以進行交互式壓縮以減少提交並將提交合並為一個漂亮、干凈的提交。 或者執行git merge --squash將您的主題分支合並到master

暫無
暫無

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

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