我不想要一个可视化合并工具,我也不希望vi冲突文件并手动选择HEAD(我的)和导入的更改(他们的)之间.大多数时候我要么想要他们所有的改变,要么全都想要改变.通常这是因为我的改变使它成为了上流,并通过拉动回到我身边,但可能会在不同的地方稍作修改.
是否有一个命令行工具可以摆脱冲突标记并根据我的选择选择所有这些?或者是一组git命令,我可以将自己命名为每个命令.
# accept mine
alias am="some_sequence;of;commands"
alias at="some_other_sequence;of;commands"
Run Code Online (Sandbox Code Playgroud)
这样做很烦人.对于'接受我的',我尝试过:
randy@sabotage ~/linus $ git merge test-branch
Auto-merging Makefile
CONFLICT (content): Merge conflict in Makefile
Automatic merge failed; fix conflicts and then commit the result.
randy@sabotage ~/linus $ git checkout Makefile
error: path 'Makefile' is unmerged
andy@sabotage ~/linus $ git reset --hard HEAD Makefile
fatal: Cannot do hard reset with paths.
Run Code Online (Sandbox Code Playgroud)
我怎么能摆脱这些变化标记?
我可以:
git reset HEAD Makefile; rm Makefile; git checkout Makefile
Run Code Online (Sandbox Code Playgroud)
但这似乎相当圆润,必须有更好的方法.在这一点上,我不确定git是否认为合并发生了,所以我认为这甚至不一定有效.
走另一条路,做"接受他们的"同样是凌乱的.我能弄清楚的唯一方法是:
git show test-branch:Makefile > Makefile; git add …Run Code Online (Sandbox Code Playgroud) 如果在swift中创建了两个数组,如下所示:
var a:[CGFloat] = [1, 2, 3]
var b:[CGFloat] = [4, 5, 6]
Run Code Online (Sandbox Code Playgroud)
他们如何合并[1, 2, 3, 4, 5, 6]?
我们公司目前正在使用简单的主干/发布/修补程序分支模型,并希望了解哪些分支模型最适合您的公司或开发过程.
工作流程/分支模型
以下是我所看到的三个主要描述,但它们彼此部分相互矛盾,或者不足以解决我们遇到的后续问题(如下所述).因此,我们的团队到目前为止默认不是那么好的解决方案.你做得更好吗?
合并与变基(纠结与连续历史)
是应该pull --rebase还是等待合并回到主线直到你的任务完成?我个人倾向于合并,因为这保留了一个任务开始和完成的基础的视觉图示,我甚至更喜欢merge --no-ff这个目的.然而,它有其他缺点.还有许多人没有意识到合并的有用属性 - 它不是可交换的(将主题分支合并到master中并不意味着将master合并到主题分支中).
我正在寻找一个自然的工作流程
有时会发生错误,因为我们的程序无法通过简单的规则捕获特定情况.例如,早期版本所需的修复当然应该足够下游,以便可以将上游合并到所有必要的分支中(这些术语的使用是否足够清楚?).然而,在开发人员意识到它应该被放置在更下游之前,并且如果已经推送(更糟糕的是,合并或基于它的某些东西)之后,修复使其成为主人,那么剩下的选项就是挑选,其相关的危险.您使用了哪些简单的规则?同样在这包括一个主题分支的尴尬必然排除其他主题分支(假设它们从共同基线分支).开发人员不希望完成一个功能来启动另一个功能,感觉就像他们刚写的代码不再存在
如何避免创建合并冲突(由于挑选)?
创建合并冲突的可靠方法似乎是在分支机构之间进行挑选,它们永远不会再次合并?在任一分支中应用相同的提交(如何执行此操作?)可能会解决这种情况?这是我不敢推动基于合并的工作流程的一个原因.
如何分解成外用分支?
我们意识到从主题分支组装完成的集成是很棒的,但是我们的开发人员经常工作没有明确定义(有时像"戳"一样简单),如果某些代码已经进入"misc"主题,根据上面的问题,它不能再被带出去了吗?您如何使用定义/批准/毕业/发布您的主题分支?
代码审查和毕业等适当的程序当然是可爱的.
但是我们根本无法保持足够的东西来管理这个 - 任何建议?整合分支,插图?
以下是相关问题列表:
还要看看Plastic SCM在任务驱动开发上写的内容,如果不是Plastic的选择,请研究nvie的分支模型及其支持脚本.
我有一个我的行李箱的功能分支,并定期将我的行李箱的变化合并到我的分支机构中,一切正常.今天我将分支合并回到主干中,在创建分支后添加到主干的任何文件都被标记为"树冲突".有没有办法在将来避免这种情况?
我不认为这些被正确标记.
我有两个分支(A和B),我想将分支A中的单个文件与分支B中的相应单个文件合并.
我是git的新手,我正在努力理解壁球和篮板之间的区别.根据我的理解,你做一个篮板时做一个壁球.
我有两个分支:master和branch1.我刚刚合并branch1回来master,我已经完成了那个分支.我应该删除它还是让它坐下来?删除它会导致任何数据丢失吗?
假设我是回购的维护者,并且我想从贡献者那里获取更改,那么有一些可能的工作流程:
cherry-pick每个都从远程提交(按顺序).在这种情况下,git将提交记录为与远程分支无关.merge是分支,拉入所有更改,并添加新的"冲突"提交(如果需要).merge各自从远程分支单独提交(再次按顺序),允许为每个提交记录冲突,而不是将所有冲突组合为一个.rebase(与cherry-pick选项相同?),但我的理解是,这可能会导致贡献者的混淆.也许这消除了选项1.在情况2和3中,git记录了提交的分支历史记录,与1不同.
使用任何一种方法cherry-pick或merge描述的方法之间有什么优点和缺点?我的理解是方法2是常态,但我觉得用单个"冲突"合并解决大型提交并不是最干净的解决方案.
这可能听起来像是一个基本的问题,但我已经寻找答案,我现在比以前更困惑.
当我的分支合并到我的另一个分支时,git中的"我们的"和"他们的"是什么意思?两个分支都是"我们的".
合并冲突是"我们的"总是显示两个版本的上部?
"我们的"总是指合并开始时HEAD指向的分支吗?如果是这样,那么为什么不使用像"当前分支"这样的明确的所有格引用而不是使用像"我们的"这样的所有格代词,这些代词是引用模糊的(因为这两个分支在技术上都是我们的)?
或者只是使用分支名称(而不是说"我们的"只是说"本地主人"等)?
对我来说最令人困惑的部分是我在特定分支的.gitattributes文件中指定.让我们说在测试分支中我有以下.gitattributes文件:
config.xml merge=ours
Run Code Online (Sandbox Code Playgroud)
现在我结账并指出HEAD为master然后合并测试.由于master是我们的,并且test的.gitattributes没有签出,它甚至会产生影响吗?如果它确实有效果,因为主人现在是"我们的",那么会发生什么?
什么是Pythonic方法来实现以下目标?
# Original lists:
list_a = [1, 2, 3, 4]
list_b = [5, 6, 7, 8]
# List of tuples from 'list_a' and 'list_b':
list_c = [(1,5), (2,6), (3,7), (4,8)]
Run Code Online (Sandbox Code Playgroud)
每个成员list_c都是一个元组,其第一个成员来自list_a,而第二个来自list_b.