假设我们在Git中有以下情况:

创建的存储库: mkdir GitTest2 cd GitTest2 git init 在master中发生并提交一些修改: echo“On Master”>文件 初始提交 Feature1分支了master并完成了一些工作: Git分支feature1 Git签出特性1 echo "Feature1" > featureFile git commit -a -m commit for feature1 同时,在主代码中发现了一个bug,并建立了一个热修复分支: Git checkout master Git分支hotfix1 Git签出hotfix1 该错误在热修复分支中修复,并合并回主程序(可能在拉取请求/代码审查之后): echo "Bugfix" > bugfixFile git commit -a -m " bug修正提交" Git checkout master Git merge -no-ff hotfix1 feature1的开发仍在继续: Git签出特性1

假设我需要在我的功能分支中进行热修复,可能因为bug也发生在那里。我怎样才能在不复制提交到我的特性分支的情况下实现这一点呢?

我想防止在我的特性分支上获得两个与特性实现无关的新提交。如果我使用拉请求,这对我来说尤其重要:所有这些提交也将包含在拉请求中,并且必须进行审查,尽管这已经完成了(因为热修复已经在master中)。

我不能做一个git合并主-ff-only: "fatal: not possible to fast-forward, aborting.",但我不确定这是否帮助了我。


当前回答

我在特征分支上进行重构。我现在想合并主更改到我的功能分支。我远远落后了。注意,我不想把主更改拉到本地,因为我的特性分支有模块从一个地方移动到另一个地方。我发现仅仅在没有拉力的情况下表演是行不通的。上面写着“已更新”。

 //below does not get the latest from remote master to my local feature branch without git pull
    git checkout master 
    git fetch 
    git checkout my-feature-branch 
    git merge master

下面的工作,注意使用git合并origin/master:

 git checkout master 
    git fetch 
    git checkout my-feature-branch 
    git merge origin/master

其他回答

我添加了我的答案,与其他答案相似,但可能是最快阅读和执行的答案。

注意:在这种情况下不需要Rebase。

假设我有一个repo1和master和dev-user两个分支。

Dev-user是在某个master状态下完成的分支。

现在假设dev-user和master都在前进。

在某些情况下,我希望dev-user获得所有在master中做出的提交。

我该怎么做?

我首先进入我的存储库根文件夹

cd name_of_the_repository

then

git checkout master 
git pull 
git checkout dev-user
git pull
git merge master 
git push 

我希望这能帮助到其他有同样情况的人。

根据这篇文章,你应该:

创建基于master新版本的新分支 Git分支-b newmaster 将旧的功能分支合并为新的 Git checkout newmaster 解决新特性分支上的冲突

前两个命令可以组合成git checkout -b newmaster。

这样,您的历史记录将保持清晰,因为您不需要反向合并。你不需要这么小心谨慎,因为你不需要做Git的基础。

In Eclipse -

1)结账主分支

Git Repositories ->Click on your repository -> click on Local ->double click master branch
->Click on yes for check out

2)拉主分支

Right click on project ->click on Team -> Click on Pull

3)检查你的功能分支(遵循第一点提到的相同步骤)

4)将master合并为feature

Git Repositories ->Click on your repository -> click on Local ->Right Click on your selected feature branch ->Click on merge ->Click on Local ->Click on Master ->Click on Merge.

5)现在你会在feature branch中看到Master branch的所有变化。消除冲突。

For conflict if any exists ,follow this -
Changes mentioned as Head(<<<<<< HEAD) is your change, Changes mentioned in branch(>>>>>>> branch) is other person change, you can update file accordingly.

注意-您需要为冲突文件添加索引

6)提交并在功能分支中推送你的更改。

Right click on project ->click on Team -> Click on commit -> Commit and Push.

OR

Git Repositories ->Click on your repository -> click on Local ->Right Click on your selected feature branch ->Click on Push Branch ->Preview ->Push

git 合并

您可以按照以下步骤进行操作

1. 合并源/主分支到特征分支

# step1: change branch to master, and pull to update all commits
$ git checkout master
$ git pull

# step2: change branch to target, and pull to update commits
$ git checkout feature
$ git pull

# step3: merge master to feature(⚠️ current is feature branch)
$ git merge master


2. 将特征分支合并到原点/主分支

Origin /master是远程主分支,而master是本地主分支

$ git checkout master
$ git pull origin/master

$ git merge feature
$ git push origin/master

我在特征分支上进行重构。我现在想合并主更改到我的功能分支。我远远落后了。注意,我不想把主更改拉到本地,因为我的特性分支有模块从一个地方移动到另一个地方。我发现仅仅在没有拉力的情况下表演是行不通的。上面写着“已更新”。

 //below does not get the latest from remote master to my local feature branch without git pull
    git checkout master 
    git fetch 
    git checkout my-feature-branch 
    git merge master

下面的工作,注意使用git合并origin/master:

 git checkout master 
    git fetch 
    git checkout my-feature-branch 
    git merge origin/master