git 将更改从一个工作分支组织到要素分支中

tp5buhyn  于 2023-01-11  发布在  Git
关注(0)|答案(1)|浏览(143)

我对git还很陌生,我有一个分支叫做“feature”,里面有多个文件被修改、创建和删除。我正在处理的任务最终不仅需要创建新文件,还需要重构现有的文件。最后我有了与新特性相关的文件“a,b,c”和“d,e,f”。我想把所有对这些文件的修改都保存在我的“feature”分支中,但是也要把d,e,f文件的修改拆分到不同的分支,并为这些修改创建不同的拉取请求。我还没有提交。
我尝试的是将“feature”分支 checkout 到“d”分支并提交和推送对“d file”的更改,然后 checkout 到“e”并提交和推送“e file”等等。它对于将“d”,“e”,“f”拆分到单独的分支效果很好,但最后我离开时使用了“a,b,c”未提交的更改,并且 checkout 回“feature”分支,只留下这些更改,而不是所有初始更改。
我知道这不是实现我想要的东西的方法。我应该先一个接一个地提交“特性”分支中的所有更改,然后 checkout 到新分支“d,e,f”并从“特性分支”中选择提交我想要的。

最终结果:

功能分支- a、b、c、d、e、f变更(提交?)
D分支- d变更
E分支- e变更
F分支- f变更
正确的方法是什么?我可以把修改隐藏起来,然后应用到d,e,f分支中,只留下需要的修改,丢弃其他的吗?

ijnw1ujt

ijnw1ujt1#

据我所知,您有feature分支和git log如下:

<commit-id>      feature       d, e and f file added
...
...
so on

feature分支中的git status到:

modified:   d.txt
modified:   e.txt
modified:   f.txt

created:    a.txt
created:    b.txt
created:    c.txt

如果您使用git stash命令,您修改的文件添加到存放区,现在git statusfeature分支为:

created:    a.txt
created:    b.txt
created:    c.txt

feature分支中创建def分支

git switch -c d
git switch -c e
git switch -c f

如果您在任何分支上使用git stash apply命令,更改将从隐藏区域移除,并且在切换分支时移动。
你在相关的分支提交这些更改,你会达到目标.

(d branch) git add d.file
(d branch) git commit -m "d.file refactoring"

(e branch) git add e.file
(e branch) git commit -m "e.file refactoring"

(f branch) git add f.file
(f branch) git commit -m "f.file refactoring"

最后,git log

功能分支

<commit-id>      feature       d, e and f file added
...
...
so on

d分支

<commit-id>      d             d file refactoring
<commit-id>      feature       d, e and f file added
...
...
so on

e分支

<commit-id>      e             e file refactoring
<commit-id>      feature       d, e and f file added
...
...
so on

f分支

<commit-id>      f             f file refactoring
<commit-id>      feature       d, e and f file added
...
...
so on

相关问题