Git MergeおよびGit Rebaseの究極のガイド

git mergeおよびgit rebaseコマンドへの究極のガイドへようこそ。 このチュートリア

Git Merge

git mergeコマンドは、別のブランチのコードベースに加えられた変更を新しいコミットとして現在のブランチにマージします。,

コマンド構文は次のとおりです。

git merge BRANCH-NAME

たとえば、現在devという名前のブランチで作業していて、new-featuresという名前のブランチで行われた新しい変更をマージしたい場合は、次のコマンドを発行します。

iv id=”4c2c9df942″注:現在のブランチにコミットされていない変更がある場合、現在のブランチのすべての変更がコミットされるまで、gitはマージを許可しません。, これらの変更を処理するには、次のいずれかを実行できます。

新しいブランチを作成し、変更をコミットします。

git checkout -b new-branch-namegit add .git commit -m "<your commit message>"

それらを隠します。

git stash # add them to the stashgit merge new-features # do your mergegit stash pop # get the changes back into your working tree

すべての変更を放棄します。

git reset --hard # removes all pending changes

Git Rebase

Gitのブランチをリベースすることは、Gitのブランチをリベースすることです。分岐の全体をツリー内の別のポイントに移動する方法。 最も簡単な例は、ツリー内の枝をさらに上に移動することです。, ポイントAでマスターブランチから分岐したブランチがあるとします。

 /o-----o---o--o-----o--------- branch--o-o--A--o---o---o---o----o--o-o-o--- master

リベースするときは、次のように移動できます。

 /o-----o---o--o-----o------ branch--o-o--A--o---o---o---o----o--o-o-o master

リベースするには、マスターブランチのリベースに必要なすべてのコミットがあることを確認してください。 リベースしたいブランチをチェックアウトし、git rebase masterと入力します(masterはリベースしたいブランチです)。, たとえば、別のブランチ(機能と呼びましょう)に基づいていたブランチは、マスターにリベースされます。

 /---o-o branch /---o-o-o-o---o--o------ feature----o--o-o-A----o---o--o-o-o--o--o- master

git rebase master branchまたはgit rebase masterブランチをチェックアウトすると、

 /---o-o-o-o---o--o------ feature----o--o-o-A----o---o--o-o-o--o--o- master \---o-o branch

コンソールでgit rebase interactive

git rebaseコミットのリストを使用するには、リベースで選択、編集、またはドロップできます。

  • git rebase -i HEAD~5最後の番号は、レビューしたい最新の後方からの任意の数のコミットです。,vimでescを押し、次にiを押してテストの編集を開始します。
  • 左側では、以下のコマンドのいずれかでpickを上書きすることができます。 コミットを前のコミットにスカッシュしてコミットメッセージを破棄する場合は、コミットのfの代わりにpickと入力します。
  • テキストエディタを保存して終了します。
  • rebaseが停止しているときは、必要な調整を行い、rebaseが成功するまでgit rebase --continueを使用します。,
  • 正常にリベースされた場合は、git push -fで変更を強制的にプッシュして、リベースされたバージョンをリモートリポジトリに追加する必要があります。
  • マージの競合がある場合、このガイドの提案に従うなど、これを修正する方法はいくつかあります。 一つの方法は、テキストエディタでファイルを開き、必要のないコードの部分を削除することです。 次に、git add <file name>の後にgit rebase --continueを使用します。, 競合したコミットをスキップするには、git rebase --skipを入力し、コンソールでgit rebase --abortを実行してリベースを停止します。

マージの競合

マージの競合は、同じ行を競合する方法で変更する別々のブランチでコミットを行うときです。,

CONFLICT (content): Merge conflict in resumé.txt Automatic merge failed; fix conflicts and then commit the result.

コードエディタでresumé.txtファイルを見ると、競合が発生した場所がわかります。

<<<<<<< HEADAddress: 808 South Street=======Address: 505 North Street>>>>>>> updated_address

Gitはファイルにいくつかの行を追加しました。

  • <<<<<<< HEAD
  • =======
  • >>>>>>> updated_address

git merge vs git rebase

両方git mergegit rebase非常に便利なコマンドであり、一方は他方よりも優れていません。, しかし、あなたとあなたのチームが考慮すべき二つのコマンドの間にいくつかの非常に重要な違いがあります。

git mergeが実行されるたびに、追加のマージコミットが作成されます。 ローカルリポジトリで作業しているときはいつでも、マージコミットが多すぎると、コミット履歴が混乱して見 マージコミットを回避する一つの方法は、代わりにgit rebaseを使用することです。

git rebase非常に強力な機能です。 そうは言っても、それが正しい方法で使用されていない場合、それは危険でもあります。, git rebaseコミット履歴を変更するので、注意して使用してください。 リモートリポジトリでリベースを行うと、他の開発者がリモートリポジトリから最新のコード変更をプルしようとすると、多くの問題が発生する可能性があ ローカルリポジトリでのみgit rebaseを実行することを忘れないでください。

それはあなたが’日の最高とマージし、リベースするために知っておく必要があるすべてです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です