我和其他开发人员一起在一个项目上使用Git几个月了.我有几年的SVN经验,所以我想我给这段关系带来了很多包袱.
我听说Git非常适合分支和合并,到目前为止,我只是没有看到它.当然,分支很简单,但是当我尝试合并时,一切都变得很糟糕.现在,我已经习惯了SVN,但在我看来,我只是将一个低于标准的版本系统换成了另一个.
我的搭档告诉我,我的问题源于我不顾一切地合并,并且我应该在很多情况下使用rebase而不是合并.例如,这是他所规定的工作流程:
clone the remote repository
git checkout -b my_new_feature
..work and commit some stuff
git rebase master
..work and commit some stuff
git rebase master
..finish the feature
git checkout master
git merge my_new_feature
Run Code Online (Sandbox Code Playgroud)
基本上,创建一个功能分支,始终从主分支到分支,并从分支合并回主分支.需要注意的重要一点是,分支始终保持在本地.
这是我开始的工作流程
clone remote repository
create my_new_feature branch on remote repository
git checkout -b --track my_new_feature origin/my_new_feature
..work, commit, push to origin/my_new_feature
git merge master (to get some changes that my partner added)
..work, commit, push to origin/my_new_feature
git merge master
..finish …Run Code Online (Sandbox Code Playgroud) 我目前有一个稳定的主分支,以及在某些类上有很多重大变化的分支.
在使用"更改"分支时,我发现了一个我想在主分支上修复的错误.
我通过更改主机上的一行代码来修复它.
现在,我想将此修补程序添加到"更改"分支.
阅读一些答案,有人建议最好的选择是Rebase.
但是,在应用git rebase master"更改"分支时,git似乎认为其中一个冲突文件是一个完全不同的文件.使用mergetools --tool diffuse,我得到以下诊断:

正如您所看到的,第一个文件中有一个更改,第二个文件中有大量更改,并且显然没有任何重叠.
我的问题是:有没有办法将一个小的变化合并到一个重大改变的分支,而不必花费大量精力解决冲突?如果没有,处理这种情况的最佳方法是什么?
我有两个远程分支:origin/master和origin/my_remote_feature
我已签出my_remote_feature使用git checkout --track -b origin/my_remote_feature
在master中进行了一些更改,我想进入跟踪远程分支的分支.我该怎么办呢?
这是我的情况:
我已经开始了一个新的分支(让我们称之为foo)并做了一些工作,
我已经推foo送到远程
需要做一些事情master,所以我切换到大师,做了修复并推动,
现在:如何更新foo与master?因为我需要继续工作foo,但我希望它与master. 我知道我不应该到rebase已经发布的分支...
谢谢!
我该如何去更新已检出的分支,并使用已更新的分支(在本地分支从dev分支出来之后,合并了一些拉取请求)develop分支?目前,如果我branch_1正在进行未提交/已提交/已推送的更改,则可以执行
git checkout develop
git pull
git checkout branch_1
git merge develop
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以减少我实现的目标?