web-dev-qa-db-ja.com

「成功したGitブランチモデル」を使用しながら、Githubで「このブランチは1コミット先、1コミット遅れマスター」

私はたった1つのファイルでクリーンなリポジトリで作業しています。私は唯一の開発者です。

成功したgit分岐モデル でdevelop-release-masterワークフローを実行したいので、次のようにしました。

注:デフォルトでは早送りがオフになっていることに注意してください。したがって、すべてのmergeコマンドをmerge --no-ffと見なしてください。

私の起源はGithubです。

masterブランチ:

git add .
git commit -m "Initial commit"
git Push Origin master
git checkout -b develop

developブランチ内。ファイルに変更を加えてから、次のようにします。

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

これをバージョン0.0としてリリースする準備ができました

git checkout -b release-0.0 develop

release-0.0ブランチ内。ファイルにバージョン番号を追加します。

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"

次に、masterdevelopの両方をGithubにプッシュします

git Push Origin master
git Push Origin develop

Githubのdevelopブランチを確認すると、次のように表示されます。

このブランチは、マスターより1コミット先、1コミット遅れです。

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

これを修正するにはどうすればよいですか? masterdevelopは、この時点では同じである必要があります。両方をrelease-0.0とマージしました。

12
Victor

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

マスターにメッセージがないのは、ブランチをマスターと比較したときにメッセージが届くからです。したがって、マスターとマスターを比較する場合、メッセージは必要ありません。

1つの解決策は、早送りを有効にし、リリースとマスターでマージコミットを明示的に作成してから、早送りを開発し続けることです。もう1つのオプションは、マスターにマージするたびに開発をリベースすることです。どのようにそれを実行したいかは、ワークフローとコードに応じて、純粋に個人的な選択です。

また、ブランチ内のコードが希望どおりである限り、そこにあるというメッセージについて心配する必要はありません。

6
TheGeorgeous

他の答えに追加するだけです:

オリジナルの git-flow は2012年から開発されておらず、多くの場所で git-flow AVHエディション に取って代わられています( buntuを含む)リポジトリ および Git for Windows )。

AVHエディションによって導入された違いの1つは、最終的なマージがmaster*からdevelopreleaseからdevelopへの変換ではなく。

これにより、masterdevelopの直接の親になり、の一部が削除されます。あなたが見るメッセージ; 「1コミット先」のみを残す必要があります。また、マスターと開発が誤って分岐していないことを確認するのも少し簡単になります。

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

6
Konipas

--no-ffを使用しているため、すべてのマージは異なるコミットになります。 release-0.0を開発にマージしてマスターにマージすると、マージコミットは異なります。外観は次のとおりです。

commits

ご覧のとおり、開発ブランチにはマスターにない(そこから到達できない)コミット(リリース0.0を開発にマージ)が1つあり、マスターブランチには開発ブランチにないコミット(リリースv0.0)が1つあります。そして、それはGitHubがそのメッセージで言っていることであり、それはまったく問題ありません(内容は同じですが、コミットは異なります)。

Git flowを使用したい場合は、 https://github.com/nvie/gitflow を参照してください。これは非常に役立ちます。

2
1ed