2016-02-27 6 views
8

私は1つのファイルでクリーンなレポで作業しています。私は唯一の開発者です。"Gitブランチモデルの成功"を使用している間に、 "このブランチは先に1コミット、マスターの後に1コミット"です

私はので、私がやったA succesful git branching modelで開発・リリース・マスター・ワークフローをしたい:

注:私は、デフォルトではオフに早送りを持っていることに注意してください、そうmerge --no-ffとしてすべてmergeのコマンドをご検討ください。

私の出身はGithubです。

支店マスターで:

git add . 
git commit -m "Initial commit" 
git push origin master 
git checkout -b develop 

枝を開発。私はその後、ファイルへの変更を行います。

git add . 
git commit -m "work in the file" 

は私がリリース0.0ブランチでは、バージョン0.0

git checkout -b release-0.0 develop 

としてこれをリリースする準備ができています。ファイルにバージョン番号を追加します。

git add .  
git commit -m "Bumped version 0.0" 

このリリースをマスターにマージする準備が整いました。

git checkout master 
git merge release-0.0 -m "Releasing v0.0" 
git tag -a 0.0 -m "Version 0.0" 

...と開発中です。

git checkout develop 
git merge release-0.0 -m "Merge release 0.0 into develop" 

その後、私はマスターの両方を押して私ははGitHubの中で枝を開発チェックすると

のGithubへ
git push origin master 
git push origin develop 

を開発し、それは言う:

この分岐があります1つ前のコミット、マスターの後ろに1つのコミット。

マスターブランチには、そのようなメッセージはありません。

これを解決するにはどうすればよいですか? マスターの両方がリリース-0.の両方にマージされているので、この時点で同じになるはずです。

答えて

2

デフォルトでは早送りが無効になっているため、等しくはありません。すべてのマージは新しいコミットを作成し、マージコミットは異なるIDを持ちます。したがって、マスターでのマージコミットは、マージコミットではありません。したがって、マスターは開発中ではないコミットを持っている間に、開発はマスターではないコミットを持っています。したがって、メッセージは発展しています。

メッセージがマスターに存在しないのは、ブランチをマスターと比較したときにメッセージが表示されるためです。マスターとマスターを比較すると、メッセージは必要ありません。

解決策の1つは、早送りを有効にして、リリースとマスターで明示的にマージコミットを作成してから、早送りを続けることです。もう1つの選択肢は、すべてのマージの後でマスターするようにrebaseすることです。どのようにあなたはそれをあなたのワークフローとコードに応じて純粋にあなたの個人的な選択で行くことを望みます。

また、そこにあるメッセージは、ブランチのコードがあなたが望むのとまったく同じだと心配する必要はありません。

1

あなたがを使用しているため、すべての単なる単なるコミットが異なります。 relese-0.0をマージしてマスターにすると、マージコミットが異なります。あなたが開発ブランチがマスターとマスターブランチが1つを持っている1コミット(開発に0.0をリリースマージ)(から到達可能ではない)でされていない持って見ることができるように

commits

:ここではそれがどのように見えるかです開発ブランチにないコミット(v0.0の解放)。そしてそれはgihubがそのメッセージで言っているものであり、内容は全く同じですが、コミットは異なります。

gitフローを使用する場合は、https://github.com/nvie/gitflowをご覧ください。これは多くの役に立ちます。ただ、他の回答に追加する

+0

OPうんgitflow – TheGeorgeous

+0

を使用している、私は多くが始めるのに役立つもののために(nvieことで、ブログの記事の著者)ヘルパースクリプトがあることを指摘したかったです。 – 1ed

4

git-flowは、2012年から開発されておらず、それが(Ubuntu repositoriesGit for Windowsを含む)多くの場所でgit-flow AVH editionに取って代わられています。 AVH版で導入された差異の

一つは、最終的なマージがマスター *のものであるを開発にかなりリリースよりもを開発することです。

これはの直接の親がを開発し、あなたが見たメッセージの一部を排除すべきであるマスターます。唯一の「1は、先にコミットする」のままであるべきです。また、マスターと開発が偶然に発散していないことを確認するのがやや簡単になります。

は*より正確には、開発にマージされる(マスター上の)新しいタグです。

関連する問題