![線形 Git フローを実行するにはどうすればよいでしょうか?](https://rvso.com/image/1414669/%E7%B7%9A%E5%BD%A2%20Git%20%E3%83%95%E3%83%AD%E3%83%BC%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%3F.png)
私の開発ショップでは、次のような Git フローを推奨しています。
- 問題ブランチ (
issue9
) をチェックアウトします。 - 問題(
serve over port 80
)を解決します。 - 専念 (
git commit
...)。 - 問題ブランチをローカル機能ブランチ (
cal
) にマージします。 ローカル機能ブランチを にプッシュします
origin
。- 可能であれば、すべてのマージを早送りする必要があります。
この最後の制約は私を困惑させています。実際には、次のいずれかが可能です。
- 問題コミットをローカル機能ブランチにマージします。
- すると、リモートの変更により、git は origin へのプッシュを拒否します。
- リモートの変更をローカル機能ブランチにプルします。
- Git は自動的に別のマージコミットを生成します。
または
- リモートの変更をローカル機能ブランチにプルします。
- Git は自動的に別のマージコミットを生成します。
この動作を実現するために、グローバル/ローカルの git 構成で微調整できる設定はありますか? これを実行しようとすると、git が台無しになり、クリーンアップするために 4 つまたは 5 つの git コマンドを実行する必要があります。
ただ、そうしたいだけなんですemacs && git commit && git checkout cal && git merge issue9 && git push origin cal
、分かりますか?
答え1
1 回限りのプルの場合は、以下を使用できますgit pull --rebase
。
$ git commit
$ git checkout cal
$ git merge issue9
$ git pull --rebase
$ git push origin cal
git が常にこのように動作するように設定するにはgit pull
、~/.gitconfig
次のようにします。
[push]
default = matching
[branch]
autosetuprebase = always
[color]
status = auto
[merge]
ff = true