Git Flow功能创建和返利功能



我有两个分支,开发。我想在开发分支上创建一个新功能,所以我这样做了:

git flow feature start test_01

这将创建一个要素分支并切换到此分支。出于测试原因,我切换到开发分支并编辑文件read_me.markdown

我切换回feature分支,在同一行编辑相同的read_me.markdown文件,以引发合并冲突。要完成我所做的功能:

git flow feature finish test_01 -r (so it rebases the feature branch)

现在发生冲突,我使用vimdiff和vim-escaper修复它。我启动vimdiff并执行":ls"我选择要使用的远程分支。接下来,我执行":diffget4",然后执行<strong]":diffupdate">:wqa"

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

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

所以我想知道我的工作方式出了什么问题

非常感谢的帮助

UPDATE1)Github工具冲突:

Auto-merging README.markdown
CONFLICT (content): Merge conflict in README.markdown
 (1)

UPDATE2)尝试时没有重新基准相同错误,仅在Github Tool 中检出分支时没有错误

更新3)

1) git流量特性启动测试

2) 进行更改以开发->这样我就可以引发冲突

3) 对功能进行更改

4) git-rebase功能开发

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

6) gitcheckout开发

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

更新4)更多详细信息

1) 我在一个新的分支机构开发

2) git流初始化

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

4) gitcheckout开发

4.1)在文件readme.md中,我添加了"testtesttest"并提交了我的工作

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的条件(在file readme.md中,我添加了"xxxxxxxxx")

8) 修复冲突

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

10) 切换到我的开发分支

11) git流特征完成增强

-->现在一切都很好。所以这是需要重新调整的基础——跳过。

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

->并且需要保留这两个分支的更改-git-rebase-continue->如果只需要更改功能-git rebase-跳过

您是否在一个有数百人在同一项目中工作的环境中工作?我不觉得你会这样做,因此盲目使用git 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

这似乎更清晰,也不那么冗长。

从OP的最新更新中可以清楚地看出,最初他没有正确完成重新基准操作,以防发生冲突。如果在重新基准期间发生冲突,您应该执行以下操作:

    `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.

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

最新更新