pup*_*eno 122 git version-control
由于外部奇怪的约束,我无法修改.gitignore
我的存储库.有没有办法忽略文件和目录,而不是修改.gitignore
?即使它是全局配置的全局解决方案,也将应用于我的所有存储库.
Von*_*onC 164
根据gitignore的说法,不要忘记Git认为不同的"忽略模式源"中存在优先顺序:
$GIT_DIR/info/exclude
.core.excludesfile
.最后两个可以解决您的问题但是:
(另见这个问题)
另外两个解决方案涉及更新索引(git update-index
):
git update-index --assume-unchanged
:请参阅" Git:仅在本地仓库中删除文件并将其保存在远程仓库中 ".Elijah Lynn在评论中git update-index --assume-unchanged
在目录上 ". --no-assume-unchange
扭转效果:请参阅" 是否可以git add
当前保护的文件assume-unchanged
? ".但是,当您签出另一个分支或您时git pull
,可能会重置"忽略"状态.因此另一种选择:
git update-index --skip-worktree
; 看到:
两者之间的区别在" Git - assume-unchanged
'和' skip-worktree
' 之间的区别"中解释.
Óla*_*age 128
如果你可以修改,.git/info/exclude
你可以在那里使用相同的规则.但该文件仅在您的本地仓库中.
Fer*_*yer 23
有三种方法可以告诉GIT要忽略哪些文件:
.gitignore
设置指向的文件后两点可以解决你的问题.
有关详细信息,请参阅gitignore(5).
我遇到过类似的情况,所以我添加了我没有看到提到的首选解决方案。git update-index --assume-unchanged
在这种情况下,问题在于您不能对未跟踪的文件执行此操作。你说
我无法修改我的存储库的 .gitignore。
我将假设您的意思是您不能将任何更改推.gitignore
送到原点。如果是这种情况,您可以做的是将未跟踪的文件添加到您的本地.gitignore
,然后这样git update-index --assume-unchanged .gitignore
做您的更改.gitignore
永远不会被推送。现在您忽略了(可能)未跟踪的文件,并且不会影响远程.gitignore
文件。
如果您只想在存储库中包含一些本地文件并且子目录位置灵活,您可以将文件放入tracked_dir1/tracked_dir2/untracked_dir/
,然后添加如下tracked_dir1/tracked_dir2/untracked_dir/.gitignore
内容:
*
IE
$ cat > tracked_dir1/tracked_dir2/untracked_dir/.gitignore
*
<Ctrl+D>
Run Code Online (Sandbox Code Playgroud)
忽略对跟踪文件的本地更改:
git update-index --assume-unchanged my-file.php
忽略对跟踪文件的本地更改:
git update-index --no-assume-unchanged my-file.php
来源: git help update-index
--[no-]assume-unchanged
...
This option can be also used as a coarse file-level mechanism to ignore uncommitted changes in tracked
files (akin to what .gitignore does for untracked files). Git will fail (gracefully) in case it needs to
modify this file in the index e.g. when merging in a commit; thus, in case the assumed-untracked file is
changed upstream, you will need to handle the situation manually.
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
46324 次 |
最近记录: |