Giit 명령 시작:rebase(-i,edit)"16회"

안녕하세요!지난번에reword에서 댓글 수정을 했는데 좀 익숙해졌어요?이번에 제출한 파일의 내용은 편집으로 수정되었습니다.아~ 일반적으로 수정 후add,commiit도 가능하지만 제출수를 늘리지 않고 과거에 제출한 파일 내용을 수정할 수 있습니다. 이것은rebase지령의 특징이고 편리한 부분입니다. 서로 다른 장면에 맞추어 구분해서 사용할 수 있다면 가장 좋습니다!

저번 기사는 이쪽부터!"제15회"


https://zenn.dev/shiozumi/articles/1a60ea4c20c5d5

우선git log-p로 현재 상태를 확인합니다![1]


파일을 초기화하고 설정하려면 여기서부터 시작하십시오!


https://gist.github.com/77ac3ba418dbafb80a11d0053b034147.git
$ git log -p
commit 1839466df61a8fd35f337024ccc798924a4334e3 (HEAD -> main)
Date:   Wed Feb 17 06:56:04 2021 +0900

    Ccc

diff --git a/README.md b/README.md
index 2204aa9..b665a22 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,4 @@
 # rebase
 # AAA
 # BBB
+# CCC

commit 9a7ea356a703d68f62693bf4d57b20a5d8a329e3
Date:   Wed Feb 17 06:55:51 2021 +0900

    Bbb

diff --git a/README.md b/README.md
index 32eee12..2204aa9 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,3 @@
 # rebase
 # AAA
+# BBB

commit 41965dfb402ca1a5799c6709a108d2b7c966399c
Date:   Wed Feb 17 06:55:39 2021 +0900

    Aaa

diff --git a/README.md b/README.md
index 8c0227d..32eee12 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,2 @@
 # rebase
+# AAA

commit 445c067462a0b0a3cd8f21c40798dfd60750c6fb (origin/main, origin/HEAD)
Date:   Tue Feb 16 14:37:03 2021 +0900

    1st

diff --git a/README.md b/README.md
new file mode 100644
index 0000000..8c0227d
--- /dev/null
+++ b/README.md
@@ -0,0 +1 @@
+# rebase

그럼,git rebase-i41965df~1을 실행합니다!


Aaa에서 편집하고 싶으므로 41965dfb402ca1a 5799c 6709a 108d2b7c 966399c +~1 중에서 선택할 수 있습니다.실제로 해시 값의 시작 7자리를 지정하면 됩니다!~1하지만, ^1은 다 돼!
$ git rebase -i 41965df~1

// vi の編集画面には、3つのコミットが選択されてます。
edit 41965df Aaa  // pick を、edit に変更!
pick 9a7ea35 Bbb
pick 1839466 Ccc
// Esc + wq で、変更、保存、終了する。

Stopped at 41965df...  Aaa
You can amend the commit now, with

  git commit --amend

Once you are satisfied with your changes, run

  git rebase --continue
구글 번역:
지금 바로 수정 제출 가능합니다.git commit --amend
변경 사항이 만족스러우면 실행합니다.git rebase --continue
그럼, README.수정md, 실행git add README.mdgit commit --amend합시다!
// ファイルの最終行に、edit test AAA を追加!
echo "# edit test AAA" >> README.md
$ cat README.md
# rebase
# AAA
# edit test AAA // <-- 追加1行!

// 毎度の、add して、今度は、修正なので、--amend を指定します!
git add README.md
git commit --amend

// vi エディターで、再び、コメントの編集を求められるので、edit test を追加!
Aaa // <-- 現在は、Aaa
Aaa edit test // <-- edit test を追加!
// Esc + wq で、変更、保存、終了する。

[detached HEAD 80c08d0] Aaa edit test
 Date: Wed Feb 17 06:55:39 2021 +0900
 1 file changed, 2 insertions(+)
제출한 해시 값 41965df [주석:Aaa]의 파일 내용, README.MD 파일을 변경했습니다. 수정 제출 완료!"git rebase--continue"를 계속 실행하십시오!
git rebase --continue
Auto-merging README.md
CONFLICT (content): Merge conflict in README.md
error: could not apply 9a7ea35... Bbb
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".
구글 번역:
README.자동 병합 md
CONLICT(컨텐트): README.합병md의 충돌
오류: 9a7ea35를 적용할 수 없습니다...Bbb
모든 충돌을 수동으로 해결하고 해결됨으로 표시합니다.
"git add/rm≥confliccted files>"를 실행한 후 "git rebase-continue"를 실행합니다.이 커밋을 건너뛸 수 있습니다.git rebase--skip을 실행합니다.git rebase 이전의 상태를 중지하고 복원하려면 git rebase-abrt 를 실행합니다.
어?!이 상태에서 무슨 일이 있었던 걸까요?
README.경고문처럼 MD를 자동으로 통합할 수 없습니다.
cat README.MD부터 확인해 보세요!

오류: 9a7ea35를 적용할 수 없습니다...Bbb


아아를 수정하고 Bbb와 경쟁할 것인가?!처음 경험하면 이해하기 어렵다.
하지만 영화에서 흔히 볼 수 있는 시나리오와 마찬가지다.맞다 맞다 반대파처럼 과거로 돌아가 미래를 바꾸는 것처럼.응, git라면 할 수 있지만 앞뒤가 일치하지 않으면 반드시 문서의 완전성을 떼어내야 관리상 수정이 촉진될 거야.[2]

우선 서류의 내용을 확인해 보세요!


$ cat README.md // ファイルの中身の確認!
# rebase
# AAA
<<<<<<< HEAD
# edit test AAA
=======
# BBB
>>>>>>> 9a7ea35... Bbb
열두 번째 배운 git merge 기억나?
그때와 마찬가지로git가 자동으로 통합될 때 오류가 발생했습니다.
https://zenn.dev/shiozumi/articles/0a0c0c4fa53c3b

그럼,rebase 전에!?


// 9a7ea35 Bbb
 # rebase // 41965df Aaa との差はなし
 # AAA     // 41965df Aaa との差はなし
+# BBB     // Aaaとの差分は、この一行だけ

// 41965df Aaa
 # rebase
 # AAA

rebase, #edit test AAA가 추가되면?!


// 9a7ea35 Bbb
 # rebase // 41965df Aaa との差はなし
 # AAA     // 41965df Aaa との差はなし
+# BBB     // Aaaとの差分は、この一行だけ

// 41965df Aaa
 # rebase
 # AAA
+# edit test AAA  // この一行は、BbbとAaaとの差分として認識していない。
41965df Aaa, 9a7ea35Bbb의 차이, +#BBB의 한 줄이라면,git, 기록관리 장소 때문에 Aaa의 끝줄, #edit test AAAAA가 추가되어서 듣지 못했고 모르고 이렇게 됐어요.
$ vi README.md // 実際に、以下のように編集!
# rebase
# AAA
# edit test AAA
# BBB

git add README.md
git rebase --continue

// ここで、再び、コメントを求められます。
Bbb + test edit AAA // Bbb の後ろに、+ test edit AAA と追加!
// Esc + wq で、変更、保存、終了する。

그럼 도대체 어떻게 된 거예요?


$ git log --oneline
6757a96 (HEAD -> main) Ccc    // ハッシュ値のみ変更
b01b057 Bbb + test edit AAA   // ハッシュ値とコメントが変更
80c08d0 Aaa edit test      // ハッシュ値とコメントが変更
445c067 (origin/main, origin/HEAD) 1st

해시치가 모두 변했다.git log-p로 재확인!


$ git log -p
commit 6757a9658832505ad907d341f76943d1162cb206 (HEAD -> main)
Date:   Wed Feb 17 06:56:04 2021 +0900

    Ccc

diff --git a/README.md b/README.md
index 4404c96..a2e773b 100644
--- a/README.md
+++ b/README.md
@@ -2,3 +2,4 @@
 # AAA
 # edit test AAA // <-- Bbbの修正が、Ccc にも自動で反映されています!?
 # BBB
+# CCC

commit b01b0578b1a31ed7e4f1055c82ffe92448936861
Date:   Wed Feb 17 06:55:51 2021 +0900

    Bbb + test edit AAA

diff --git a/README.md b/README.md
index 651996c..4404c96 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,4 @@
 # rebase
 # AAA
 # edit test AAA // <-- ここでのコンフィクトを、viで修正しましたね!
+# BBB

commit 80c08d00a46bc95158dc6ea0ef1f0225f17f5a01
Date:   Wed Feb 17 06:55:39 2021 +0900

    Aaa edit test

diff --git a/README.md b/README.md
index 8c0227d..651996c 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,3 @@
 # rebase
+# AAA
+# edit test AAA

commit 445c067462a0b0a3cd8f21c40798dfd60750c6fb (origin/main, origin/HEAD)
Date:   Tue Feb 16 14:37:03 2021 +0900

    1st

diff --git a/README.md b/README.md
new file mode 100644
index 0000000..8c0227d
--- /dev/null
+++ b/README.md
@@ -0,0 +1 @@
+# rebase
6757a96(HEAD->main) Ccc도 Bbb의 수정 내용을 충분히 반영했다.
$ cat README.md
# rebase
# AAA
# edit test AAA // Aaaに追加、Bbbのコンフィクト修正、なんと、Cccにも反映!
# BBB
# CCC
그럼,어때요?한 번만 해결됐고 이후 제출도 변경됐다.리베이스라는 이름이기 때문에 베이스를 바꾸면 그 다음에도 똑같이 업데이트가 되는 건 당연하죠. 저도 그런 느낌이 들어요.어쨌든 가볍다.그리고 제출한 해시 값이 바뀌었습니다. 물론git reflowg 명령을 사용하면git reset-hard로 원래 상태의 해시 값을 지정하면rebase 이전의 원상태로 돌아갑니다.가능하다면 몇 번 연습해 보세요!
또한 실제로 모든 사례가 자동으로 해결되는 것은 아니니 탓하지 마세요.샘플로 아래 서류를 시험해 보십시오.git rebase --continue 마지막까지 모든 README.MD를 수동으로 수정해야 합니다!(쓴웃음)[3]

그리고 샘플 창고를 하나 올렸어요.가능하다면 시도해 보세요.


https://gist.github.com/544b33afb82d0b3b2eea202bf8cda40b.git
git reflowg 해시 값을 확인하고, git reset-hard를 사용하여 HEAD를 초기 설정으로 설정하십시오!

그럼, 이번엔 여기까지 수고하셨습니다!


말은 그렇지만 머리가 좀 혼란스럽다.더 쉽게 이해하기 위해 다음에 설명할 수 있는 것은 우선 내가 스스로 배운 곳이다.(쓴웃음) 그리고 또 그림을 그리고 싶어요~
https://zenn.dev/shiozumi/articles/16a37391306777
각주
나는 모두가 편집하고 있다고 생각한다. 표시된 상태가 다르다.↩︎
git의 역할은 파일을 관리하는 차별이기 때문이다.이것은 당연한 일이다.↩︎
이 근처는 다음에 더 깊이 파헤치고 싶어요.↩︎

좋은 웹페이지 즐겨찾기