マージ・コンフリクト時各種コマンドの備忘録
・Automatic merge
・git diff
・git log --graph
■Automatic mergeとは
各コミットが異なる箇所を変更している場合、自動でマージしてくれる機能。
マージするブランチ同士がぶつからないケース。
逆にマージするブランチのファイルの差分が同じ場所だとGitがどちらのブランチの差分を採用すればいいかわからない(=Merge Conflict)
コミットが各ブランチで枝分かれしている場合、git logコマンドで他のブランチの情報が出てこない
※↓mainブランチのログしか表示されず、no-fast-fowardブランチが表示されない。
$ git log --oneline
8112ceb (HEAD -> main) make new file for automatic merge
1329e82 update readme
47a43df (origin/main, origin/HEAD) add gitignore
3282559 new file
6bb1377 delete file
ee0dfb8 make new file
728c928 changed name2
70d2c42 change name
c1632c9 add newfile
b52de06 Initial commit
この場合、「--all」を追加する」。
↓でno-fast-fowardブランチの情報も確認可能に
$ git log --all --oneline
8112ceb (HEAD -> main) make new file for automatic merge
377f6db (no-fast-forward) update readme for automatic merge
1329e82 update readme
47a43df (origin/main, origin/HEAD) add gitignore
3282559 new file
6bb1377 delete file
ee0dfb8 make new file
728c928 changed name2
70d2c42 change name
c1632c9 add newfile
b52de06 Initial commit
更に「--graph」を追加すると、コミットの親子関係を可視化してくれる※枝分かれしてるのがわかりやすい。
$ git log --all --oneline --graph
* 8112ceb (HEAD -> main) make new file for automatic merge
| * 377f6db (no-fast-forward) update readme for automatic merge
|/
* 1329e82 update readme
* 47a43df (origin/main, origin/HEAD) add gitignore
* 3282559 new file
* 6bb1377 delete file
* ee0dfb8 make new file
* 728c928 changed name2
* 70d2c42 change name
* c1632c9 add newfile
* b52de06 Initial commit
mergeする前に、差分の確認
$ git diff main no-fast-forward
diff --git a/README.md b/README.md
index bb97474..4c373cd 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
# git-practice
このリポジトリはGit動画講座用です.
ローカルリポで変更
-new-featureブランチで変更
\ No newline at end of file
+no-fast-branchでブランチで変更
\ No newline at end of file
diff --git a/newfile.txt b/newfile.txt
deleted file mode 100644
index 6704adb..0000000
--- a/newfile.txt
+++ /dev/null
@@ -1 +0,0 @@
-created new file!
\ No newline at end of file
差分を見て問題なければ、mergeしていく
Merge
mainのブランチに移動し、mergeしたいブランチを指定してgit mergeコマンドを入力
git merge no-fast-forward
Merge made by the 'ort' strategy.
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
上記コマンドでデフォルトのエディタが開き、コミットメッセージを入力を求められるが、自動で記述されているのでメモ不要でクローズ
git logで確認
$ git log --oneline --all --graph
* d1dc2b0 (HEAD -> main) Merge branch 'no-fast-forward'
|\
| * 377f6db (no-fast-forward) update readme for automatic merge
* | 8112ceb make new file for automatic merge
|/
* 1329e82 update readme
* 47a43df (origin/main, origin/HEAD) add gitignore
* 3282559 new file
* 6bb1377 delete file
* ee0dfb8 make new file
* 728c928 changed name2
* 70d2c42 change name
* c1632c9 add newfile
* b52de06 Initial commit
mergeできたこと確認したら、不要なブランチ(no-fast-branch)を削除
$ git branch
* main
no-fast-forward
~/Desktop/git-practice (main)
$ git branch -d no-fast-forward
Deleted branch no-fast-forward (was 377f6db).
~/Desktop/git-practice (main)
$ git branch
* main