41

私がよく遭遇する一般的なワークフローのハードルは次のとおりです。

masterは「安定した」ブランチです

$ git status
# On branch master
nothing to commit (working directory clean)

ブランチにモジュールを作成する

$ git checkout -b foo
$ echo "hello" > world
$ git add .
$ git commit -m "init commit for foo module"
$ git checkout master
$ git merge foo

マスターまたは他のブランチで作業する

次の数週間で、より多くのコードが直接、または他のブランチによってマスターされる予定です。このfoo期間、ブランチは変更されません。

作業を再開し、fooブランチを更新します

$ git checkout foo

大野!fooは大幅に時代遅れです! 理由は理解できますが、同期を戻す必要があります。

質問

masterブランチから最新のコンテンツを取得するにはどうすればよいですか?

4

3 に答える 3

49

周りにブランチが必要ない場合:

foo を master にマージし直した場合は、"git branch -d foo" を実行してトピック ブランチを削除し、後で再びハックする必要があるときに "checkout -b foo" を実行します。

ブランチが必要な場合:

master ブランチに対してトピック ブランチをリベースできます。

git checkout foo
git rebase master

または:

git rebase master foo
于 2010-10-24T23:16:39.593 に答える
17

リベースとは、一連のコミットを新しいベース コミットに移動または結合するプロセスです。リベースは、機能分岐ワークフローのコンテキストで最も便利で簡単に視覚化できます。一般的なプロセスは、次のように視覚化できます。

Git Rebase の視覚的な説明

以下の例では、git rebase と git merge を組み合わせて、線形のプロジェクト履歴を維持しています。これは、マージが早送りされるようにするための迅速かつ簡単な方法です。

# Start a new feature
git checkout -b new-feature master
# Edit files
git commit -a -m "Start developing a feature"

機能の途中で、プロジェクトにセキュリティ ホールがあることに気付きました

# Create a hotfix branch based off of master
git checkout -b hotfix master
# Edit files
git commit -a -m "Fix security hole"
# Merge back into master
git checkout master
git merge hotfix
git branch -d hotfix

ホットフィックスをマスターにマージした後、フォークされたプロジェクト履歴ができました。単純な git マージの代わりに、機能ブランチをリベースと統合して、線形の履歴を維持します。

git checkout new-feature
git rebase master

これにより、new-feature が master の先端に移動し、master から標準の早送りマージを実行できるようになります。

git checkout master
git merge new-feature

Atlassian Git Rebase チュートリアルから引用

于 2015-02-20T13:49:21.720 に答える