9

複製した中央の git リポジトリを使用しており、ローカル ブランチで作業しています。

変更を中央リポジトリで利用できるようにしたい場合は、次のコマンドを発行する必要があります ( からmybranch)。

#Stash local changes not yet ready for checkin
git stash

#Make sure we have all changes from the central repository
git checkout master
git pull

#Rebase local changes
git checkout mybranch
git rebase

#Push changes
git checkout master
git merge mybranch
git push

#Back to my branch and continue work
git checkout mybranch
git stash apply

同じ目標を達成するために、より少ない git コマンドを使用できるかどうかを知りたいです。masterとの間のいくつかの切り替えmybranchは特に煩わしいものです。これは、リポジトリがかなり大きいため、時間がかかるためです。

4

4 に答える 4

13

ローカル マスター ブランチを更新する必要がない場合は、変更する必要はありません。これにより、多くの不要なブランチの切り替えが発生しているようです。

これは、より最小限のワークフローです。

git fetch

# ensure that everything is committed
# perhaps git commit -a is required...

git rebase origin/master


# If you don't want to push the very latest commits you might
# want to checkout a parent or ancestor of the current commit
# to test that the proposed commit passes tests, etc.
# e.g. git checkout HEAD~n

# push to the remote master
git push origin HEAD:master

# if you checked out a parent, go back to the original branch
git checkout mybranch

親コミットに非常に自信がある場合は、チェックアウト手順をスキップして次の手順を実行するだけでかまいませんが、強くお勧めしません。テストされていないコミットを公開することは、「ベスト プラクティス」ではありません。

git push origin HEAD^:master
于 2009-06-04T20:55:06.897 に答える
6

master ブランチと mybranch ブランチの両方でプルを行う必要はありません。あなたはとても親切な市民であり、早送りの更新を行っているので、それは非常に簡単です:

# Save local mods not ready for commit
git stash
# Do the pull & rebase local work assuming this is a remote tracking branch
git pull --rebase
git checkout master
git merge mybranch
git push

もちろん、mybranch ブランチからプッシュすることもできます

# Save local mods not ready for commit
git stash
# Do the pull & rebase local work assuming this is a remote tracking branch
git pull --rebase
git push origin mybranch:master
于 2009-06-03T18:50:53.180 に答える
1

プルとリベースを 1 つに組み合わせることができます。

git pull --rebase マスター

しかし、全体として、はい、私の経験からすると、これらすべてのコマンドが含まれます。

リポジトリをクリーンに保つには、未使用のオブジェクトを削除する "git gc" を頻繁に実行すると便利です。これにより、ブランチの切り替え時間が短縮されます。

于 2009-06-03T15:24:47.173 に答える
0

私は通常そうします。

git co master
git pull
git rebase master mywrk # fix conflicts if any
git rebase mywrk master
git push

必要に応じて、エイリアスを定義して入力を節約できます。

于 2009-06-03T15:32:02.727 に答える