🗝️
Gitコマンド入門::rebase(-i,drop,その4:ミス発見)「第二十回」
みなさん、こんにちは! さあ、drop 処理では、いきなり難解複雑な迷路にはまってしまい、これから、どう収集していけば良いのか迷走中ですね。また、そもそもの理解度、経験値が少ないため、学習するポイントも、ズレてきた感じです。><;;また、コマンド操作でも、前回、前々回と私が意図した動作とは違ってしまっていましたから、もう一度、その辺りの見直しと復習も兼ねて、引き続き、rebase コマンドの学習をして行きたいと思います。
次回の記事はこちらから!
git本家本元の情報はこちらから!
前回でのコマンド操作で、ミスを発見!
前回 Aを、dropした時の操作で、その後、README.mdファイルのマージを求められて、結果、1stと Bのマージとなってしまいましたが、その原因は、git commit --amend
でした。正しくは、git commit -m "コメント"
ですね。
又、その原因は、dropした直後の処理で、HEADの位置を完全に勘違いしてしまいましたね。
HEADの位置は、Bだと思っていたら、1stだったんですよね~ ><;;
ハッシュ値 | コメント | README.md | 補足事項 |
---|---|---|---|
c0f998d | 1st | # rebase | 実際には、HEAD がここでした! |
0fa830d | A | # A | drop削除 |
f8b5ccd | B | # B | 私は、HEADの位置が、ここだと思い込んでしまった。 |
2d138a2 | C | # C | - |
cb468d1 | D | # D | - |
ということで、drop直後は、以下のようになってます。
ハッシュ値 | コメント | README.md | 補足事項 |
---|---|---|---|
c0f998d | 1st | # rebase | HEAD |
f8b5ccd | B | # B | - |
2d138a2 | C | # C | - |
cb468d1 | D | # D | - |
git rebase -i --root
// drop 直後の、README.md のコンフィクト!
Auto-merging README.md
CONFLICT (content): Merge conflict in README.md
error: could not apply f8b5ccd... B
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply f8b5ccd... B
$ git log --oneline
c0f998d (HEAD) 1st
現状の、README.md ファイルの状態を確認
Working Tree | Staging Area | Repogitory | 補足事項 |
---|---|---|---|
cat README.md | git diff | git diff HEAD | コマンドで再確認! |
Working Treeの、README.mdを確認!
$ cat README.md
<<<<<<< HEAD
# rebase
=======
# B
>>>>>>> f8b5ccd... B
Staging Areaと、Working treeの差分を確認!
$ git diff
diff --cc README.md
index 8c0227d,399d883..0000000
--- a/README.md
+++ b/README.md
@@@ -1,1 -1,1 +1,5 @@@
++<<<<<<< HEAD
+ # rebase
++=======
+ # B
++>>>>>>> f8b5ccd... B
$ git restore README.md
error: path 'README.md' is unmerged
// 恐らく、Staging Area は、空っぽの状態!
$ git restore README.md --source=HEAD --staged
// 試しに、HEADからStagingへコピー
git restore README.md
// さらに、Stagingから、Worktreeへコピー
$ cat README.md
# rebase
// 問題なく、取り出せましたね。
Repogitoryと、Working treeの差分を確認!
$ git diff HEAD
diff --git a/README.md b/README.md
index 8c0227d..f46e27c 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,5 @@
+<<<<<<< HEAD
# rebase
+=======
+# B
+>>>>>>> f8b5ccd... B
git restore --source=HEAD --worktree
$ git restore --source=HEAD --worktree
$ cat README.md
# rebase
// README.md の中身が、# rebase でした。
// HEADが、1stを指しているので、当然の結果となりましたね。
現状の、README.md ファイルの状態のまとめ!
Working Tree | Staging Area | Repogitory | HEADの位置 |
---|---|---|---|
コンフィクト状態 | 空っぽ | # rebase | 1st |
add,commit では、Bが対象となる!
ハッシュ値 | コメント | README.md | 補足事項 |
---|---|---|---|
c0f998d | 1st | # rebase | HEADの位置 |
f8b5ccd | B | # B | ここの修正を求められている |
2d138a2 | C | # C | - |
cb468d1 | D | # D | - |
本日のまとめ!
次回の課題!
- Bの内容を、"# B" と、前と同じ内容にすれば、その後、git rebase --continueで完了となるが、違う内容にすると、今度は、BとCで、マージコンフィクトになる!
- git rebase --skip コマンドを行うと、そもそも、Bもdropしたのと同じ動作になる。
それでは、今回はここまで、お疲れ様でした!
Discussion