相关疑难解决方法(0)

如何在Git中有选择地合并或选择来自另一个分支的更改?

我在一个新项目上使用git,该项目有两个并行 - 但目前是实验性的 - 开发分支:

  • master:导入现有的代码库加上一些我一般都知道的mod
  • exp1:实验分支#1
  • exp2:实验分支#2

exp1exp2代表两种截然不同的架构方法.直到我走得更远,我无法知道哪一个(如果有的话)会起作用.当我在一个分支中取得进展时,我有时会在另一个分支中进行编辑,并且只想合并那些.

将选择性更改从一个开发分支合并到另一个开发分支而将其他所有内容合并的最佳方法是什么?

我考虑过的方法:

  1. git merge --no-commit 然后手动取消大量编辑,我不想在分支之间做出共同点.

  2. 手动将公共文件复制到临时目录,然后git checkout移动到另一个分支,然后更多地手动从临时目录复制到工作树中.

  3. 以上的变化.暂时放弃exp分支并使用另外两个本地存储库进行实验.这使得手动复制文件更加简单.

所有这三种方法都显得乏味且容易出错.我希望有更好的方法; 类似于过滤器路径参数的东西会git-merge更具选择性.

git git-merge git-patch git-cherry-pick

1374
推荐指数
22
解决办法
69万
查看次数

部分樱桃 - 用Git挑选一个提交

我正在研究两个不同的分支:发布开发.

我注意到我仍然需要将一些提交给发布分支的更改集成到开发分支中.

问题是我不需要所有的提交,只有某些文件中的一些人,所以很简单

git cherry-pick bc66559
Run Code Online (Sandbox Code Playgroud)

没有办法.

当我做的时候

git show bc66559
Run Code Online (Sandbox Code Playgroud)

我可以看到差异,但实际上并不知道将其部分应用于我当前工作树的好方法.

git git-cherry-pick

484
推荐指数
4
解决办法
11万
查看次数

如何将我的更改推回到git中的源代码

我在github中分叉了一个项目,然后在这个项目上做了一个git克隆,将所有源代码都输入到我的机器上.

我对源代码做了一些修改,我的问题是: -

  1. 如何将我的更改提交到本地git存储库以及github中的forked存储库?
  2. 原始源代码的作者将如何从github中的分叉存储库中提取我的更改

git github git-push

4
推荐指数
1
解决办法
3万
查看次数

Git pull只请求bitbucket上的某些提交

如果您只想提取请求某些提交但不是全部,会发生什么?

说你有一个回购,Foo,并把那个回购分为Bar.然后你将提交1和2提交给Bar.我只想把提交2拉回Foo,我该怎么做?

我使用bitbucket作为git主机,所以我很确定我需要在命令行上执行它.谢谢.

git command-line bitbucket

3
推荐指数
1
解决办法
4242
查看次数

如何从分叉的存储库中仅针对某些文件创建 PR,但对它们进行所有提交?

太长了;博士

\n
    \n
  • 我已经分叉了一个存储库,并对许多文件进行了多次提交,所有这些都在主分支上。
  • \n
  • 现在我想为所选文件的所有提交创建拉取请求,以发送回原始存储库的作者。例如,我想发回一些改进,但不发回我添加的文件。
  • \n
  • 我不在乎所有的提交是否都会被压缩成一个全新的提交。
  • \n
\n

我尝试过的...

\n

我职业生涯的大部分时间都在使用 Perforce,并且仍在习惯 git,所以我想我要么没有意识到我的场景与以下帖子中的场景不匹配,要么我错过了一些隐式步骤对于普通 git 用户来说是显而易见的,但对我来说却不是。

\n\n

我所看到的...

\n

似乎每当我精挑细选时,我最终都会得到一个没有任何更改的分支(不过这是有道理的,因为它们已经致力于掌握,对吗?\xe2\x80\x94那么我如何创建这个“主题分支”我看到有人提到了?)现在我运行了几个我不完全理解的命令(例如git remote add ...),并且还可能将原作者的存储库与我的分叉存储库互换,所以它变得很难说是否因为我弄乱了我的环境而无法正常工作。

\n

打扫干净

\n

@Omer 的回答效果很好。然后我做了一个

\n
git reset --hard HEAD\n
Run Code Online (Sandbox Code Playgroud)\n

清理。原作者合并了 PR,我同步到它:

\n
git remote add upstream git://github.com/<author>/<repo>.git\ngit pull upstream master\n
Run Code Online (Sandbox Code Playgroud)\n

git pull-request git-cherry-pick git-fork

3
推荐指数
1
解决办法
761
查看次数