ブランチを作成する
$ 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をチェックして
、差異の
解決プロセスを確認します。
vim test.txt
- 次に削除します
<<<<<HEAD
=======
<<<<<newBranch
- 必要に応じて変更
git add test.txt
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 <远程分支>