私は多くの開発者がいるいくつかのプロジェクトでgitを使用しています。私の通常のワークフローは、特定の機能/リクエストのためにローカルでブランチし、早送りマージとしてアップストリームで追跡されるローカルブランチに変更をマージし、変更をプッシュすることです。私は常に1つのコミットでも分岐します。他の人と共有しているブランチでローカルにコミットすることはないので、変更をアップストリームにプッシュするまで、ローカルでリベース/マックすることができます。好みの問題として、可能な限り、マージを早送りコミットにするのが好きです。origin/v1
例として、プロジェクトのバージョン1のすべてが、ブランチ上のすべての開発者によってプッシュされた場合、次のようになります。
git checkout v1
git checkout -b feature-A
#Do work on feature-A branch. Test, rebase --interactive to clean up
v1
最終的には、変更をローカルにマージしてにプッシュしたいところですorigin/v1
。チェックアウトしてやりgit fetch origin
ます。feature-A
変更があった場合は、チェックアウトv1
してマージします
git fetch origin
#If New changes are present checkout v1 and merge
git checkout v1
git merge origin/v1 #I could pull but I prefer to fetch, log origin/v1, and then merge
feature-A
ここで、チェックアウトfeature-A
、リベースv1
、チェックアウトv1
、マージfeature-A
、およびプッシュv1
バックの早送りマージを実現しorigin
ます。
git checkout feature-A
git rebase v1
git checkout v1
git merge --ff-only feature-A
git push origin v1
非早送りコミットには何も問題はなく、マージコミットにも問題はありません。繰り返しますが、それは好みの問題です。ブランチのすべてのチェックアウトを実行せずに同じことを達成するためのより良いワークフローがあるかどうか疑問に思います。更新されたブランチfeature-A
の上にリベースした後、それが機能することに気付いていないgitコマンドがあるかもしれません。v1
https://stackoverflow.com/a/4157106/620304それが役立つようです。考えられるワークフローはv1
、元の場所からの最新の変更で更新し、リベース後にローカルv1
のHEADに更新することです。feature-A
#Starting from feature-A currently checked out
git fetch origin
#New changes are present
git checkout v1
git merge origin/v1
git checkout feature-A
#In I didn't fetch anything from origin's v1 branch I can skip the commands between the comments
git rebase v1
git branch -f v1 feature-A
git push origin v1
もっと良い方法があるかもしれないと確信しています。ヘルプ/入力は大歓迎です。