假设我通过git存储库与某人合作,并且有一个特定的文件,我永远不想接受任何外部更改.
有没有办法让我设置我的本地仓库,以便每当我拉动时不抱怨冲突的合并?我想在合并此文件时始终选择我的本地版本.
我正在做一个大合并.我的分支中的repo中删除了很多文件,在进行合并时,我希望对所有这些文件保留此更改.还有一些文件需要显式合并,我打算用git mergetool它们来合并它们.
我希望保留所有已删除文件的"删除我们"更改(即文件应保留删除).我想解决的其他合并冲突.
有没有办法告诉git保持删除的文件被删除?
我已经做了大量的搜索,阅读了很多SO问题和解决方案并尝试了不同的方式,但我一直无法做我想做的事,这很简单.
我有所有主代码所在的主分支,以及设计分支,其中rails应用程序的布局由设计团队构建.他们在公共文件夹中添加了一个名为"photoshop"的文件夹,以便在版本控制下保留图像的来源.但我不希望在合并到主分支时复制此文件夹,因为它是不需要的.
显然,这样做的方法是通过合并驱动程序.所以,我创建了"忽略"驱动程序:
[merge "ignore"]
name = always ignore during merge
driver = ignore.sh %0 %A %B
Run Code Online (Sandbox Code Playgroud)
并在$ PATH上创建了ignore.sh文件:
exit 0
Run Code Online (Sandbox Code Playgroud)
我在public /中创建了.gitattributes文件,因为photoshop文件夹应该整体被忽略,它将出现在public /下:
photoshop merge=ignore
photoshop/ merge=ignore
photoshop/* merge=ignore
photoshop/**/* merge=ignore
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我尝试了几种不同的模式来忽略整个文件夹,但它不起作用.我相信这是因为master分支上没有文件夹,所以没有冲突,因此git不使用ignore驱动程序.有没有办法实现这一点,而无需在master上创建public/photoshop文件夹?
谢谢!
继这个问题的情景之后,我正在表演git rebase -s recursive -X theirs etc...并且很惊讶地被以下类型的冲突所阻止:
这个策略有没有理由不应对这些?
(我不知道这是否重要,但是git不报告输出中的冲突,它只是说When you have resolved this problem run "git rebase --continue")
更新这里的脚本不能完全重现,但几乎:
git init
git symbolic-ref HEAD refs/heads/Branch1 #just to get the 'right' branch name
echo Added in A > DeletedByThem.txt
git add -A
git commit -m A
echo Modified in B >> DeletedByThem.txt
git add -A
git commit -m B
echo Modified in C >> DeletedByThem.txt
echo Added in C …Run Code Online (Sandbox Code Playgroud)