Gitは(2つの)ブランチマージ競合解決リモートブランチ操作リベースを使用します

ブランチを作成する

$ git branch newBranch
GitにはHEADと呼ばれる特別なポインターがあり、そのポインティングブランチは現在のブランチです。
ブランチが作成された後は、新しいブランチに移動しないため、手動で移動する必要があります。または、-bパラメータ
$ git checkout newBranchを追加し
て、オブジェクトを指す現在のブランチ表示し
git log --oneline --decorate --graph --all
ここに画像の説明を挿入
ます。newBranchブランチに新しいファイルを作成します。
ここに画像の説明を挿入
ツリーは次のようになります。
ここに画像の説明を挿入

マージ

マージされたブランチをマスターブランチにしたい場合:次のコマンドを実行します
git checkout master
git merge newBranch

ここに画像の説明を挿入
上の図は例のマージを示しています。マスターはnewBranchの祖先であるため、マスターはnewBranchに移動するだけで済みます。
ここに画像の説明を挿入
マスターブランチがコンテンツを変更する前にマージがない場合:
ここに画像の説明を挿入
同じコマンドをマージした後:(3、4、5データを比較)接続は6)にマージされました
ここに画像の説明を挿入

紛争

上記の最後のマージされたケースでは、マスターの変更とnewBranchの変更が同じ位置にある可能性が高いため、競合が発生します。マージコマンドを実行すると、Gitが一時停止し、競合を解決しましょう

96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview/solution (master)
Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.

マージコマンドの競合を実行した後、を使用しgit statusて競合の内容表示できます

96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview/solution (master|MERGING)
$ git status
On branch master
You have unmerged paths.
  (fix conflicts and run "git commit")
  (use "git merge --abort" to abort the merge)

Unmerged paths:
  (use "git add <file>..." to mark resolution)
        both modified:   test.txt

no changes added to commit (use "git add" and/or "git commit -a")

96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview/solution (master|MERGING)

この時点でtest.txtをチェックして
ここに画像の説明を挿入
、差異の
解決プロセスを確認します。

  1. vim test.txt
  2. 次に削除します
<<<<<HEAD
=======
<<<<<newBranch
  1. 必要に応じて変更
  2. git add test.txt
  3. git commit -m "merge complete!"

リモートブランチオペレーション

リモートウェアハウスに接続するたびにユーザー名とパスワードを入力する必要をなくすために、グローバル構成を実行できます。git config --global credential.helper cacheその後、数分以内にユーザー情報を保存できます。

倉庫のクローンを作成します。

96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
$ git clone https://github.com/HLZ278/GitTest.git

クローンされたウェアハウスディレクトリを入力してブランチを確認します。ブランチ
ここに画像の説明を挿入
がありorgin/master、このブランチはリモートウェアハウスのマスターブランチであることがわかりました。起点/に特別な意味はありません。Gitクローンは、リモートウェアハウスのマスターを区別するために、自動的に名前を付けるのに役立ちますまた、gitはリモートブランチが指すバージョンを指すローカルマスターブランチも自動的に作成することもわかりました。そして現在、私たちはマスターブランチにいます。

次に、ローカルで新しいファイルを送信しようとします。
ここに画像の説明を挿入
ローカルマスターブランチのみが移動され、リモートマスターブランチは移動されないことがわかりました。つまり、プルまたはクローンを作成している限り、ローカルウェアハウスは私たちとリモートウェアハウスです。コミュニケーションの最終状態。この時点で誰かがリモートの倉庫で何かを変更したとしても、私たちにはわかりません。リモートウェアハウスを再度プルしない限り(プルするとプルされるのは異なるデータのみ)git fetch <remote>、プル後にマージなどの操作を実行できます。絵を描く:

ここに画像の説明を挿入
上の図は、リモートウェアハウスのクローンを作成し、ローカルで更新を1回送信したことを示しています。
この時点で誰かがリモートウェアハウスで操作している場合、新しいデータをフェッチする必要
がある
ことがわかりません

ここに画像の説明を挿入

新しいデータをローカルで変更した後、新しいデータをリモートウェアハウスに送信する方法
走るだけgit push <remote> <branch>

リベース

リベース前に:
ここに画像の説明を挿入
実行するgit rebase master newBranch変数グループを:
ここに画像の説明を挿入

つまり、祖先に対する現在のブランチの以前のコミットを比較し、対応する変更を抽出して一時ファイルとして保存してから、現在のブランチをターゲットのベースC3にポイントし、最後に一時ファイルとして以前に保存した変更を順番に適用します。
リベースの使用方法に注意してください。公式ドキュメントを参照してください。https//www.git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%8F%98% E5%9F%BA

その他のブランチ管理コマンド
現在のブランチとバージョンの場所を
git branch -v
表示マージされたブランチを
git branch --merged
表示マージされていないブランチを表示
git branch --no-merged
ブランチの場所にブランチを作成
git checkout -b 新分支 已有分支
リモートウェアハウスのブランチを削除:
git push <remote> --delete <远程分支>

元の記事を公開16件 ・いい ね0 訪問数249

おすすめ

転載: blog.csdn.net/weixin_43860530/article/details/105393656
おすすめ