开发者

Git branching / rebasing good practices

I have a following scenario:

3 branches:

- Master

- MyBranch branched off Master for the purpose of developing a new feature of the system

- MyBranchLocal branched off MyBranch as my local copy of the branch

MyBranch is being rebased against and pushed to by other developers (who are working on the same feature as I am).

As the owner of the MyBranch branch I want to keep it in sync with Master by rebasing. I also need to merge the changes I make to MyBranchLocal with MyBranch.

What is a good way to do that?

Couple of possible scenarios I tried so far:

I.

1. Commit change to MyBranchLocal

2. Rebase MyBranch against Master

3. Rebase MyBranchLocal against MyBranch

4. Merge MyBranch with MyBranchLocal

II.

1. Commit change to MyBranchLocal

2. Merge MyBranch with MyBranchLocal

3. Rebase MyBranch against Master

4. Rebase MyBranchLocal against MyBranch

III.

1. Commit change to MyBranchLocal

2. Rebase MyBranch against Master

3. Merge MyBranch with MyBranchLocal

4. Rebase MyBranchLocal against MyBranch

I already know that scenario III seems to be messing the commit history up a lot, potentially duplicating commits.

What is your experience? What scenarios do you recommend to minimize the m开发者_JS百科erging effort and keep the history clean?


My personal suggestion. This one is focused on having a straight commit history, and failing on the "more specific" branches (you'd better mess up your local branch than the feature branch).

  1. Commit change to MyBranchLocal
  2. Rebase MyBranchLocal against MyBranch
  3. Merge MyBranch with MyBranchLocal (should be fast forward) - MyBranch = Local
  4. Rebase MyBranch against Master
    1. (optional) Merge Master with MyBranch (also should be fast forward)
  5. Rebase MyBranchLocal against MyBranch


I found this question after link to Linus email. According to email - you shouldn't rebase after you published your history in some public site, because you could destroy other people history. So, rebase for MyBranchLocal is OK, but for MyBranch (shared with other developers) is not.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜