Git流功能创建和重定基调功能

Git流功能创建和重定基调功能,git,merge,rebase,vimdiff,vim-fugitive,Git,Merge,Rebase,Vimdiff,Vim Fugitive,我有两个分支机构,发展部和硕士部。我想在开发分支上创建一个新功能,因此我: git flow feature start test_01 这将创建要素分支并切换到此分支。出于测试原因,我切换到开发分支并编辑文件read_me.markdown。我承诺并推动这一变化 我切换回要素分支,并在同一行编辑相同的read_me.markdown文件,以引发合并冲突。要完成此功能,我需要执行以下操作: git flow feature finish test_01 -r (so it rebases th

我有两个分支机构,发展部和硕士部。我想在开发分支上创建一个新功能,因此我:

git flow feature start test_01
这将创建要素分支并切换到此分支。出于测试原因,我切换到开发分支并编辑文件read_me.markdown。我承诺并推动这一变化

我切换回要素分支,并在同一行编辑相同的read_me.markdown文件,以引发合并冲突。要完成此功能,我需要执行以下操作:

git flow feature finish test_01 -r (so it rebases the feature branch)
现在发生了冲突,我使用vim Squisition和vim Diff解决冲突。我启动vimdiff并执行“:ls”我选择要使用的远程分支。接下来我执行“:diffget 4”,然后执行“:diffupdate”,接下来我只需编写文件并退出所有“:wqa”

现在冲突已经解决,合并已经发生,我只是简单地推送我的更改

问题:执行此操作时,我会查看Github for mac工具,并确保没有冲突和更改。但是,当我切换(签出)到主分支并返回到开发分支时,我再次遇到相同的合并冲突

所以我想知道我的工作方式有什么问题。

非常感谢你的帮助

更新1)Github工具冲突:

Auto-merging README.markdown
CONFLICT (content): Merge conflict in README.markdown
 (1)
UPDATE2)在没有重新设置基础的情况下尝试了相同的错误,仅在Github工具中签出分支时没有错误

更新3)

1) git流特性启动测试

2) 进行更改以开发->以便引发冲突

3) 对功能进行更改

4) git重基特性开发

5) 修复更改->当我想提交时,它会说“没有更改-你忘记使用'git add'了吗?”

6) git签出开发

7) git合并功能->在开发分支上仍然存在合并冲突

更新4)更多详细信息

1) 我在一家新的分公司工作

2) git流初始化

3) git flow功能启动增强1->功能分支已创建

4) git签出开发

4.1)在文件readme.md中,我添加“testtest”并提交我的工作

4.2)tig状态

4.2)我将文件readme.md设置为“要提交的更改”

4.3)我提交此文件

4.4)承诺为“发展分行承诺”

5) git签出功能/增强功能1

5.1)在文件readme.md中,我添加“xxxxxxxxx”并提交我的工作

5.2)tig状态

5.2)我将文件readme.md设置为“要提交的更改”

5.3)我提交此文件

5.4)提交为“在功能分支上提交”

6) git rebase功能/增强1开发

First, rewinding head to replay your work on top of it...
Applying: Commit on Develop Branch
Using index info to reconstruct a base tree...
M   README.md
Falling back to patching base and 3-way merge...
Auto-merging README.md
CONFLICT (content): Merge conflict in README.md
Failed to merge in the changes.
Patch failed at 0001 Commit on Develop Branch
The copy of the patch that failed is found in:
   /Users/Vincent/Documents/featureconflicts/.git/rebase-apply/patch

When you have resolved this problem, run "git rebase --continue".
If you prefer to skip this patch, run "git rebase --skip" instead.
To check out the original branch and stop rebasing, run "git rebase --abort".
7) 我现在有一个冲突,我将把文件设置为5.1的条件(在文件readme.md中,我添加了“xxxxxxxx”)来修复它

8) 修正了冲突

9) git是否重新设置了基址--跳过

10) 切换到我的开发分支

11) git流功能完成增强


-->现在一切都很好。因此,需要的是重新设置基础—跳过。您是否在一个有数百人参与同一项目的环境中工作?我不觉得你会这样做,因此盲目使用git flow所指的分支模型是一种巨大的过度使用。您不必为了使用分支而从一个分支跳到另一个分支。需要时使用分支。 所以首先我建议放弃flow工具,只使用git。 在一个单独的项目中,您可以轻松地直接在开发分支中进行开发,并且仅在需要并行执行其他操作的情况下才可以分支出功能

如果您确实使用了特征分支,以下是应该实现这一技巧的顺序:

git checkout -b myfeature develop # creating branch from develop and checking out
commit, commit, commit...
git rebase myfeature develop # resolve conflicts if any
git checkout develop
git merge myfeature # fast-forward
git checkout master
git merge develop # fast-forward
git push # or git push <remote_name> master

根据您解决冲突的方式,如果触碰了同一段代码,下一个补丁可能会导致另一组冲突。

因此,这个故事的线索是,如果发生冲突:

->需要保留这两个分支的更改—git rebase—是否继续
->如果只需要保留对功能的更改-git rebase--skip

签出时会出现合并冲突,或者合并代码在其他分支中没有得到解决?@ExplosionPills第一次合并冲突发生在git flow功能完成时。第二种情况发生在Github工具中切换分支时。如果使用git checkout切换分支,则不会发生错误。我已经在我的第一次更新中添加了确切的错误。
当我想要提交时,它会说“没有更改-你忘了使用‘git add’?”
你真的这样做了吗?但是你真的像错误消息告诉你的那样添加了更改吗?你描述了flow是完美的,但没有回答他为什么会出错的问题。我会说:在你的例子中,Rebase正在尝试重新应用补丁(从feature和develop之间的共同祖先到feature分支的尖端)在开发分支的顶部。在发生冲突的情况下,您必须解决它们,并告诉git您使用了GitAdd,然后重新设置了基址——继续。如果使用“跳过”,则意味着将不会应用要素分支的重基序列中的当前修补程序,并且将转到下一个修补程序。
    `git status` #will provide the the list of conflicting files marking them as 
both modified, so edit them to remove conflicts
    `git add {files}` # to tell git that the conflicts are resolved and you can 
continue with rebase
    `git rebase --continue` # continue rebase operation, by applying next 
patch in line.