是否可以在每个远程的基础上进行 .gitignore?我希望能够从开源项目的公共存储库中提取核心更新,但将本地更改从(当前).gitignored 目录推送到我在不同远程的私有 git 存储库。这可能吗?
谢谢!
编辑:进一步思考,看起来 git 子模块可能是处理这个问题的好方法。
http://git-scm.com/book/en/Git-Tools-Submodules
EDIT2:我整天都在使用子模块,该解决方案似乎非常适合我想要完成的任务。
是否可以在每个远程的基础上进行 .gitignore?我希望能够从开源项目的公共存储库中提取核心更新,但将本地更改从(当前).gitignored 目录推送到我在不同远程的私有 git 存储库。这可能吗?
谢谢!
编辑:进一步思考,看起来 git 子模块可能是处理这个问题的好方法。
http://git-scm.com/book/en/Git-Tools-Submodules
EDIT2:我整天都在使用子模块,该解决方案似乎非常适合我想要完成的任务。
由于.gitignore
文件存储在存储库中,因此它像任何其他文件一样进行版本控制。因此,它可能因分支而异,因此您可以对您喜欢的本地副本进行任何更改并将其提交到您的本地分支。
该.gitignore
文件的内容不会影响检索存储库的内容,因此进行本地更改不会更改从项目公共存储库中提取时获得的结果。但是,当公共存储库中的版本发生更改时,您可能需要手动解决该文件中的冲突。
或者,您可以只保留该.gitignore
文件并使用它git
add -f
来添加要在本地跟踪的文件。将文件添加到 git 存储库后,它被忽略将无效。但是,如果您经常将文件添加到被忽略的目录,那么修改.gitignore
文件可能是个好主意,以便 git 可以提醒您有需要添加的文件。
如果您要进行其他更改,并希望将这些更改发送到公共项目的上游,则应在分支上进行这些更改,而无需对.gitignore
文件进行本地更改以及添加那些否则会被忽略的文件。然后,您可以将这些更改与被忽略的文件合并到您的本地分支中以供您正常使用。
我也有一个类似的问题,我使用 2 个遥控器,需要忽略它们上的不同文件。
这就是我所做的:
$ git fetch <public remote>
合并所有但排除对当前.gitignore的更改
$ git merge --no-ff --no-commit <public remote>/master
$ git checkout master path/to/.gitignore
$ git commit -m "Merged ... into ... excluding the .gitignore"
这样我就可以从远程提取更改并保留现有的.gitignore文件
No it's not possible. You'll need to maintain separate branches for that.
我不这么认为——但 git 之前让我感到惊讶。
我的理解.gitignore
是存储库范围并适用于所有内容。
可以明确指定git add ...
被忽略的文件,然后 git 将继续跟踪它们,就好像它们没有被忽略一样——但这不是每个远程的。