Git 我想从要素分支获取一些文件,并将更改移动到另一个分支

Git 我想从要素分支获取一些文件,并将更改移动到另一个分支,git,Git,我一直在从事一个功能分支的工作,对UI文件和逻辑/数据文件进行了更改,并在各种提交中添加了它们——通常在每次提交中都会更改许多文件 我决定创建一个只包含逻辑更改的分支,这样我就可以合并到master中,以便其他团队成员可以使用它,同时我自己处理UI位 基本上,我想从master创建一个新分支,然后在我的功能分支中添加来自select files的更改,而不是select commits,而是select files。这是可以做到的吗 为了更加清晰: 我的feature分支如下所示- 承诺1: f

我一直在从事一个功能分支的工作,对UI文件和逻辑/数据文件进行了更改,并在各种提交中添加了它们——通常在每次提交中都会更改许多文件

我决定创建一个只包含逻辑更改的分支,这样我就可以合并到master中,以便其他团队成员可以使用它,同时我自己处理UI位

基本上,我想从master创建一个新分支,然后在我的功能分支中添加来自select files的更改,而不是select commits,而是select files。这是可以做到的吗

为了更加清晰:

我的feature分支如下所示-

承诺1:

fileA.js fileB.js 承诺2:

fileA.js fileC.js 承诺3

fileC.js fileD.js 我希望最后有一个新的特性分支-

承诺1:

fileB.js fileD.js 很简单,您可以执行git reset HEAD~3,这将重置所有提交

现在,您可以隔离与逻辑和UI相关的所有文件


在不同的分支中分别提交这两个分支。

我会这样做:

在当前特性分支所在的位置启动逻辑分支:git checkout-b feature\u logic feature 回放历史记录,保留文件的当前状态。我假设主分支在您的功能开发过程中没有移动:git reset-soft origin/master。或者如果真的只有三个提交:git reset-softhead^^^ 作为功能逻辑分支的一部分,取消暂存并还原不需要的文件:git reset HEAD-和git checkout- 运行git status以确保暂存了正确的文件。 提交逻辑分支:git提交-mLogic分支 对gui分支重复上述步骤。
在创建了两个新分支之后,您应该能够合并它们,并运行git diff HEAD..feature,让自己感觉在历史重写过程中没有丢失任何东西

根据您的具体要求,创建一个包含您想要的某些文件的所有更改的提交:

创建一个新的分支主控器:git分支主控器 签出分支:git Checkout 将所需文件从旧要素分支签出到新要素分支: git签出-。 我觉得这是git checkout不太为人所知的用法之一。它只将需要的文件拉到当前分支,而不更改分支。

加分:如果出于某种原因,一个文件有您需要和不需要的更改,您可以使用更模糊的-patch选项git checkout-patch-。此选项调用交互式选择器,该选择器允许您选择要包含的特定大块。交互模式可以让你习惯一些,但是当你需要把事情分开时,它会很有帮助。它也存在于add和reset命令中。

我不明白你想在这里做什么,只需创建一个新分支并在主分支之外提交?@Josh Stevens我已经对一个功能分支做了几天的更改,我基本上想根据文件将更改分为两个独立的功能分支。我不知道你可以像那样使用git签出,谢谢!