私はGITを使い始めたばかりで素晴らしいと思いますが、merge
コマンドの機能について少し混乱しています。
ブランチ「A」に作業中のプロジェクトがあるとします。
家に帰り、このブランチに変更を加えて、「B」という名前で保存します。別のプログラマーが "A"を変更し、 "C"として保存します。
2つのブランチ「B」と「C」をマージして、変更を新しいブランチとしてコミットする方法はありますか、「D」と言いますか?
または「マージ」のポイントを逃していますか?
私はGITを使い始めたばかりで素晴らしいと思いますが、merge
コマンドの機能について少し混乱しています。
ブランチ「A」に作業中のプロジェクトがあるとします。
家に帰り、このブランチに変更を加えて、「B」という名前で保存します。別のプログラマーが "A"を変更し、 "C"として保存します。
2つのブランチ「B」と「C」をマージして、変更を新しいブランチとしてコミットする方法はありますか、「D」と言いますか?
または「マージ」のポイントを逃していますか?
回答:
merge
2つ(またはそれ以上)のブランチをまとめるために使用されます。
小さな例:
# on branch A:
# create new branch B
$ git checkout -b B
# hack hack
$ git commit -am "commit on branch B"
# create new branch C from A
$ git checkout -b C A
# hack hack
$ git commit -am "commit on branch C"
# go back to branch A
$ git checkout A
# hack hack
$ git commit -am "commit on branch A"
だから今は異なるヘッドを持つ3つの別々のブランチ(つまりABとC)があります
変更をBおよびCからAに戻すには、Aをチェックアウトし(この例ではすでに実行済み)、次にmergeコマンドを使用します。
# create an octopus merge
$ git merge B C
すると、履歴は次のようになります。
…-o-o-x-------A
|\ /|
| B---/ |
\ /
C---/
リポジトリ/コンピューターの境界を越えてマージしたい場合はgit pull
、たとえばブランチAのPCからコマンドを見てください(この例では2つの新しいコミットが作成されます)。
# pull branch B
$ git pull ssh://host/… B
# pull branch C
$ git pull ssh://host/… C
git add conflicting_files
からgit commit
あなたはの変化マージしたい場合はサブブランチにMainBranchを
git checkout MainBranch
git merge SubBranch
ケース:デフォルトで作成されたマージコミットを無視する必要がある場合は、次の手順に従います。
たとえば、新しい機能ブランチがすでに2つのコミットがあるマスターからチェックアウトされているとします。
Checkout a new feature_branch
次に機能ブランチは2つのコミットを追加します->
ここで、feature_branchの変更をマスターにマージする場合git merge feature_branch
は、マスターに座ってください。
これにより、すべてのコミットがマスターブランチに追加されます(マスターに4つ+ feature_branchに2つ=合計6)+ 'Merge branch 'feature_branch'
マスターが分岐しているため、マージコミットのようなものを追加します。
これらのコミット(FBで行われたもの)を本当に無視して、feature_branchで行われた変更全体を'Integrated feature branch changes into master'
、Run などの単一のコミットとして追加する必要がある場合git merge feature_merge --no-commit
。
--no-commitを使用すると、マージが実行され、マージコミットが作成される直前に停止します。機能ブランチに追加されたすべての変更がマスターになり、新しいコミットを独自のものとして作成する機会を得ます。
詳しくはこちらをご覧ください:https : //git-scm.com/docs/git-merge