我在一个新项目上使用git,该项目有两个并行 - 但目前是实验性的 - 开发分支:
master:导入现有的代码库加上一些我一般都知道的mod exp1:实验分支#1exp2:实验分支#2exp1并exp2代表两种截然不同的架构方法.直到我走得更远,我无法知道哪一个(如果有的话)会起作用.当我在一个分支中取得进展时,我有时会在另一个分支中进行编辑,并且只想合并那些.
将选择性更改从一个开发分支合并到另一个开发分支而将其他所有内容合并的最佳方法是什么?
我考虑过的方法:
git merge --no-commit 然后手动取消大量编辑,我不想在分支之间做出共同点.
手动将公共文件复制到临时目录,然后git checkout移动到另一个分支,然后更多地手动从临时目录复制到工作树中.
以上的变化.暂时放弃exp分支并使用另外两个本地存储库进行实验.这使得手动复制文件更加简单.
所有这三种方法都显得乏味且容易出错.我希望有更好的方法; 类似于过滤器路径参数的东西会git-merge更具选择性.
好吧,我认为这是一个简单的git场景,我错过了什么?
我有一个master分支和一个feature分支.我做了一些工作master,一些工作,feature然后再做一些工作master.我最终得到这样的东西(词典顺序暗示了提交的顺序):
A--B--C------F--G (master)
\
D--E (feature)
Run Code Online (Sandbox Code Playgroud)
我没有问题要git push origin master保持远程master更新,也没有git push origin feature(当打开时feature)为我的feature工作维护远程备份.到目前为止,我们很好.
但现在我想在主人feature的F--G提交之上重新定义,所以我git checkout feature和git rebase master.还好.现在我们有:
A--B--C------F--G (master)
\
D'--E' (feature)
Run Code Online (Sandbox Code Playgroud)
问题:当我想要备份新的rebased feature分支时git push origin feature,推送被拒绝,因为树由于变基而发生了变化.这只能通过解决git push --force origin feature.
我讨厌使用--force而不确定我是否需要它.那么,我需要它吗?重新定位是否必然意味着下一个push应该是--force完美的?
这个功能分支不与任何其他开发者共享,所以我事实上 …
我有一个情况.比方说,两个开发人员是在两个不同的分支工作A和B.
-- master --
| |
A <-- B
Run Code Online (Sandbox Code Playgroud)
分支B取决于变化A.但是,A的变化尚未合并master.我想开始处理我的功能(分支B)并进行更改A,然后在完成测试后丢弃它们.推荐的方式是什么?