前段時間我這樣做是爲了忽略的變化由git的跟蹤文件:撤消git的更新索引--skip-worktree
git update-index --skip-worktree <file>
現在,其實我是想更改提交到該文件源。我如何取消skip-worktree
的影響?
感謝, 凱文
前段時間我這樣做是爲了忽略的變化由git的跟蹤文件:撤消git的更新索引--skip-worktree
git update-index --skip-worktree <file>
現在,其實我是想更改提交到該文件源。我如何取消skip-worktree
的影響?
感謝, 凱文
啊哈!我只是想:
git update-index --no-skip-worktree <file>
我愛阿哈! –
lol應該知道 –
據http://www.kernel.org/pub/software/scm/git/docs/git-update-index.html,使用
git ls-files -v
看到 「假設不變」 和 「跳過worktree」 標有特殊字母的文件。 「skip-worktree」文件標有S
。
編輯:作爲@amacleod提到的,使一個別名,列出所有隱藏文件是一個很好的伎倆有,這樣你就不需要記住它。我在我的.bash_profile中使用了alias hidden="git ls-files -v | grep '^S'"
。它很棒!
整潔。我可以使用'git ls-files -v | grep'^ S''只列出我用skip-worktree「隱藏」的文件。 希望爲該命令設置一個「隱藏」的別名,但在別名中放置管道重定向似乎不起作用。 – amacleod
@amacleod使用'!'。像這樣'[別名]忽略=!git ls-files -v | grep「^ S」'測試過,工作。 –
@amacleod不要以爲你可以建議一個Windows的替代命令? –
如果要撤消已應用跳躍worktree的所有文件,可以使用下面的命令:
git ls-files -v | grep -i ^S | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-skip-worktree
git ls-files -v
將打印自己的地位的所有文件grep -i ^S
將過濾的文件,並選擇僅跳過工作樹(S)或跳過工作樹並假定不變(-s)表示忽略區分大小寫cut -c 3-
將刪除狀態並僅保留路徑,從第3個字符切到末尾tr '\012' '\000'
將取代行結束字符(\ 012)零字符(\ 000)xargs -0 git update-index --no-skip-worktree
將通過零字符分隔,從而git update-index --no-skip-worktree
所有路徑基於@ GuidC0DE答案撤消這是最佳答案 – Dev
,這裏的一個版本的Powershell的(我用posh-git)
git update-index --no-skip-worktree $(git ls-files -v | sls -pattern "^S"| %{$_.Line.Substring(2)})
以供參考也是相反的命令隱藏文件:
git update-index --skip-worktree $(git ls-files --modified)
我也感興趣如何獲得'skip-worktree'狀態下的文件列表? – troex
@troex https://stackoverflow.com/q/42363881/1615903 – 1615903