我有两个完全合并的分支.
但是,在完成合并之后,我意识到一个文件已经被合并搞砸了(其他人做了自动格式化,gah),并且更容易在另一个分支中更改为新版本,并且然后重新插入我的一行更改后将其带入我的分支.
那么git中最简单的方法是什么呢?
我是Git的新手,现在我处于这种情况:
master......这是我的问题:如何使用master分支代码更新所有其他分支?
我有以下存储库布局:
我想要实现的是从工作分支中挑选一系列提交并将其合并到集成分支中.我是git的新手,我无法弄清楚如何正确地做到这一点(在一次操作中不提取合并的樱桃选择提交范围)而不会弄乱存储库.关于这个的任何指针或想法?谢谢!
我们公司目前正在使用简单的主干/发布/修补程序分支模型,并希望了解哪些分支模型最适合您的公司或开发过程.
工作流程/分支模型
以下是我所看到的三个主要描述,但它们彼此部分相互矛盾,或者不足以解决我们遇到的后续问题(如下所述).因此,我们的团队到目前为止默认不是那么好的解决方案.你做得更好吗?
合并与变基(纠结与连续历史)
是应该pull --rebase还是等待合并回到主线直到你的任务完成?我个人倾向于合并,因为这保留了一个任务开始和完成的基础的视觉图示,我甚至更喜欢merge --no-ff这个目的.然而,它有其他缺点.还有许多人没有意识到合并的有用属性 - 它不是可交换的(将主题分支合并到master中并不意味着将master合并到主题分支中).
我正在寻找一个自然的工作流程
有时会发生错误,因为我们的程序无法通过简单的规则捕获特定情况.例如,早期版本所需的修复当然应该足够下游,以便可以将上游合并到所有必要的分支中(这些术语的使用是否足够清楚?).然而,在开发人员意识到它应该被放置在更下游之前,并且如果已经推送(更糟糕的是,合并或基于它的某些东西)之后,修复使其成为主人,那么剩下的选项就是挑选,其相关的危险.您使用了哪些简单的规则?同样在这包括一个主题分支的尴尬必然排除其他主题分支(假设它们从共同基线分支).开发人员不希望完成一个功能来启动另一个功能,感觉就像他们刚写的代码不再存在
如何避免创建合并冲突(由于挑选)?
创建合并冲突的可靠方法似乎是在分支机构之间进行挑选,它们永远不会再次合并?在任一分支中应用相同的提交(如何执行此操作?)可能会解决这种情况?这是我不敢推动基于合并的工作流程的一个原因.
如何分解成外用分支?
我们意识到从主题分支组装完成的集成是很棒的,但是我们的开发人员经常工作没有明确定义(有时像"戳"一样简单),如果某些代码已经进入"misc"主题,根据上面的问题,它不能再被带出去了吗?您如何使用定义/批准/毕业/发布您的主题分支?
代码审查和毕业等适当的程序当然是可爱的.
但是我们根本无法保持足够的东西来管理这个 - 任何建议?整合分支,插图?
以下是相关问题列表:
还要看看Plastic SCM在任务驱动开发上写的内容,如果不是Plastic的选择,请研究nvie的分支模型及其支持脚本.
我有两个分支(A和B),我想将分支A中的单个文件与分支B中的相应单个文件合并.
我有2个git分支branch1和branch2,我想将branch2中的file.py合并到branch1中的file.py中,并且只将该文件合并.
本质上我只想处理branch1中的file.py但想要利用merge命令.做这个的最好方式是什么?
采取这种情况:
获得这些选择的更改量的最有效方法是什么,合并到我的'fork'中?
是否可以仅将子目录的更改从本地git分支合并到远程git分支,还是"全有或全无"?
例如,我有:
branch-a
- content-1
- dir-1
- content-2
Run Code Online (Sandbox Code Playgroud)
和
branch-b
- content-1
- dir-1
- `content-2
Run Code Online (Sandbox Code Playgroud)
我只想将branch-a dir-1的内容与branch-b dir-1的内容合并.
我在git repo中有2个分支,我们可以调用它们,开发和测试.我在单个文件somecode.js中进行了更改.两个分支都对somecode.js进行了更改.这两个分支显着(但可管理)分歧,因此直接的"合并"是不够的.
我试过http://jasonrudolph.com/blog/2009/02/25/git-tip-how-to-merge-specific-files-from-another-branch/,但它没有合并两个文件的内容.你基本上只是写文件而不是实际合并文件的内容.
我也尝试过:
git checkout -b newbranch
git checkout test somecode.js
git commit -m "somecode changes from newbranch"
git checkout dev
git merge newbranch
Run Code Online (Sandbox Code Playgroud)
和
git checkout -m test somecode.js
Run Code Online (Sandbox Code Playgroud)
(我真的很希望合并-m,但它似乎对我不起作用......)
我以为我接近我需要的东西,但后来我意识到它只是快速转发提交意味着它没有合并,它在测试中写了原始文件.
因此,重申一下,如何将特定文件从一个分支合并到另一个分支,而无需在我正在合并使用git的分支中写入文件.
我正在通过git在Heroku(现在)上部署一个Rails应用程序,并且还希望有一个公共版本供人们查看.有些文件是敏感的,只能在"heroku"分支中提交和推送,而不是"公共"分支.最好的方法是什么?
(我确实知道Heroku的Config变量,这是一个很好的临时解决方案,但是当我需要切换主机时却没那么有趣.)
这两个分支不需要一直同步 - 我可以定期将"master"分支合并到"public"分支并将其分别推送到github.
我尝试了各种各样的事情:
单独的.gitignore文件和"我们的"合并策略 - 这在一开始并不起作用,在搞乱了一段时间后我觉得它变得太复杂了,所以我可以实现一个看似简单的任务
使用自定义exclude文件,并将以下内容添加到.git/config...这根本不起作用:
的.git /配置
[branch "public"]
excludesfile = +info/exclude_from_public
Run Code Online (Sandbox Code Playgroud)
使私有和公共存储库共享相同代码但忽略公共存储库中的敏感文件的最佳方法是什么?
您可以假设没有提交或推送任何代码,即这是一个刚刚初始化的存储库.
(之前已经以各种形式提出了这个问题,但没有一个答案是直截了当的,或者答案看起来真的很笨拙.我只是在这里以非常简单的方式提出这个问题,希望得到一个非常简单的回答.)