我在一个新项目上使用git,该项目有两个并行 - 但目前是实验性的 - 开发分支:
master:导入现有的代码库加上一些我一般都知道的mod exp1:实验分支#1exp2:实验分支#2exp1并exp2代表两种截然不同的架构方法.直到我走得更远,我无法知道哪一个(如果有的话)会起作用.当我在一个分支中取得进展时,我有时会在另一个分支中进行编辑,并且只想合并那些.
将选择性更改从一个开发分支合并到另一个开发分支而将其他所有内容合并的最佳方法是什么?
我考虑过的方法:
git merge --no-commit 然后手动取消大量编辑,我不想在分支之间做出共同点.
手动将公共文件复制到临时目录,然后git checkout移动到另一个分支,然后更多地手动从临时目录复制到工作树中.
以上的变化.暂时放弃exp分支并使用另外两个本地存储库进行实验.这使得手动复制文件更加简单.
所有这三种方法都显得乏味且容易出错.我希望有更好的方法; 类似于过滤器路径参数的东西会git-merge更具选择性.
我正在研究两个不同的分支:发布和开发.
我注意到我仍然需要将一些提交给发布分支的更改集成到开发分支中.
问题是我不需要所有的提交,只有某些文件中的一些人,所以很简单
git cherry-pick bc66559
Run Code Online (Sandbox Code Playgroud)
没有办法.
当我做的时候
git show bc66559
Run Code Online (Sandbox Code Playgroud)
我可以看到差异,但实际上并不知道将其部分应用于我当前工作树的好方法.
我在github中分叉了一个项目,然后在这个项目上做了一个git克隆,将所有源代码都输入到我的机器上.
我对源代码做了一些修改,我的问题是: -
如果您只想提取请求某些提交但不是全部,会发生什么?
说你有一个回购,Foo,并把那个回购分为Bar.然后你将提交1和2提交给Bar.我只想把提交2拉回Foo,我该怎么做?
我使用bitbucket作为git主机,所以我很确定我需要在命令行上执行它.谢谢.
我职业生涯的大部分时间都在使用 Perforce,并且仍在习惯 git,所以我想我要么没有意识到我的场景与以下帖子中的场景不匹配,要么我错过了一些隐式步骤对于普通 git 用户来说是显而易见的,但对我来说却不是。
\n似乎每当我精挑细选时,我最终都会得到一个没有任何更改的分支(不过这是有道理的,因为它们已经致力于掌握,对吗?\xe2\x80\x94那么我如何创建这个“主题分支”我看到有人提到了?)现在我运行了几个我不完全理解的命令(例如git remote add ...),并且还可能将原作者的存储库与我的分叉存储库互换,所以它变得很难说是否因为我弄乱了我的环境而无法正常工作。
@Omer 的回答效果很好。然后我做了一个
\ngit reset --hard HEAD\nRun Code Online (Sandbox Code Playgroud)\n清理。原作者合并了 PR,我同步到它:
\ngit remote add upstream git://github.com/<author>/<repo>.git\ngit pull upstream master\nRun Code Online (Sandbox Code Playgroud)\n git ×5
bitbucket ×1
command-line ×1
git-fork ×1
git-merge ×1
git-patch ×1
git-push ×1
github ×1
pull-request ×1