Git – 在合并期间忽略文件
我在远程beanstalk
服务器上有一个叫做myrepo
的beanstalk
。
我克隆到我的本地机器。 创build了另外两个分支: staging
和dev
。 推动这些分支也远程。
现在:
local remote server -------------------------------------------------------- master ==> Pushes to `master` ==> deployed to `prod` staging ==> Pushes to `staging` ==> deployed to `staging` dev ==> Pushes to `dev` ==> deployed to `dev`
我有一个名为config.xml
的文件,每个分支上都有所不同。
我只想在合并时忽略这个文件。 但是我希望在签出或提交回执分支时包含此内容。
我想这样做的原因是,我们有一个部署脚本,用于提取(签出)特定的分支,并部署在各自的服务器上。 所以我们需要将这个特定分支的config.xml
文件部署到上面指定的特定服务器。
我猜.gitignore
不会工作。 还有什么其他的select? 请注意,忽略的文件应该是checkout和commit的一部分,这很重要。 只有在合并时才应该被忽略。
谢谢!
我通过使用git merge命令和'–no-commit'选项解决了这个问题,然后明确地删除了staged文件,并忽略了文件的更改。 例如:说我想忽略对myfile.txt的任何更改我按照以下步骤操作:
git merge --no-commit <merge-branch> git reset HEAD myfile.txt git checkout -- myfile.txt git commit -m "merged <merge-branch>"
如果您有要跳过的文件列表,可以将语句2和3放在for循环中。
我最终发现了git的attributes
。 尝试一下。 工作到目前为止。 没有检查所有场景。 但它应该是解决scheme。
合并策略 – Git属性
你可以通过使用git merge --no-commit
来开始,然后编辑合并,不pipe你喜欢,即通过取消configurationconfig.xml
或其他文件,然后提交。 我怀疑你会想在使用钩子之后进一步自动化,但是我认为至less应该手动进行一次。
您可以使用.gitignore
将config.xml
保存在存储库中,然后使用post commit钩子将相应的config.xml
file upload到服务器。
这里git-update-index – 将工作树中的文件内容注册到索引。
git update-index --assume-unchanged <PATH_OF_THE_FILE>
例:-
git update-index --assume-unchanged somelocation/pom.xml