我有两个分支:master
和feature
。我在feature
分支中做了几次提交,这使得大量的目录结构发生了变化。执行此操作后,我checkout
了master
分支,并在根目录中添加了README.md
。这是我在创建master
分支后对feature
所做的唯一更改。
我现在想要将master
分支“快速转发”到feature
(即feature
中的所有更改现在都在master
),但我还希望添加master
添加README.md
。我如何完成这项任务?
答案 0 :(得分:3)
您正在寻找git merge <branchname>
。这会将更改合并到当前签出的分支中。所以:
git checkout master
git merge feature
由于您在master
分支(添加自述文件)之后对feature
进行了更改,因此这将作为“合并提交”完成。这意味着它将自动合并然后创建提交。如果您没有更改master
,您的分支将被简单地快速转发到feature
的当前提交。
答案 1 :(得分:1)
使用git merge
命令,根据git help
执行此操作:
合并来自命名提交的更改(从他们的时间开始) 历史与当前分支不同)进入当前分支。
因此,请在master
上提交您的更改,然后git merge feature
。
答案 2 :(得分:1)
当您对主分支进行更改时,它不会是快进的。您可以退回最后一次更改(git reset HEAD^
),将其存储起来以便稍后(git stash
),合并您的功能(git merge feature
),将更改应用于顶部(git stash apply; git commit ....
})。有更简单/更狡猾的方法来实现这一目标,但这很容易理解。
如果你真的只是添加文件,你可以退一步,进行合并,然后再添加文件。
小心,这会改变历史。如果您通过更改发布了主分支,那么对于跟踪回购的人来说,这将不是一个快速前进。感谢@SamSullivan指出这一点。