Giit 명령 시작:rebase(-i,drop,#D)"제17회"

안녕하세요!저번에 리베이스-i로 편집을 해봤는데 조금만 이해해 주시겠어요?나도 여러 가지 예를 도전해 봤는데, 아~ 이해하기 어려운 게 많군.따라서edit는 뒤에 놓고 (^^;;;;;;;;;먼저 간단한drop부터 하세요![1]

저번에는 이쪽!


https://zenn.dev/shiozumi/articles/6c462fac625cd2

창고 초기화!


git 보고서를 초기화하고 설정하는 파일은 아래 링크에서 선택하십시오!
https://gist.github.com/7993d2ea6751c22158407b9bf3669437.git

창고는 이런 상태입니다.


$ git log -p --oneline --reverse

c0f998d 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

0fa830d A
diff --git a/README.md b/README.md
index 8c0227d..7f3b95d 100644
--- a/README.md
+++ b/README.md
@@ -1 +1 @@
-# rebase
+# A

f8b5ccd B
diff --git a/README.md b/README.md
index 7f3b95d..399d883 100644
--- a/README.md
+++ b/README.md
@@ -1 +1 @@
-# A
+# B

2d138a2 C
diff --git a/README.md b/README.md
index 399d883..57b8895 100644
--- a/README.md
+++ b/README.md
@@ -1 +1 @@
-# B
+# C

cb468d1 (HEAD -> main, origin/main) D
diff --git a/README.md b/README.md
index 57b8895..60afb60 100644
--- a/README.md
+++ b/README.md
@@ -1 +1 @@
-# C
+# D
git log -p --oneline --reverse 이것은 내가 처음으로 재장착 옵션을 추가한 것이다.최신 물건이 가장 밑에 있기 때문에rebase-i의 배열과 같고 초보자도 이해하기 쉽죠?괜찮으시다면!!

다시 간이 디스플레이로 확인합니다.


$ git log --oneline --reverse
c0f998d 1st
0fa830d A
f8b5ccd B
2d138a2 C
cb468d1 (HEAD -> main, origin/main) D

실제 READMEmd의 내용은 다음과 같다.


하치
메모
README.md
c0f998d
1st
# rebase
0fa830d
A
# A
f8b5ccd
B
# B
2d138a2
C
# C
cb468d1
D
# D
이번에 책상에 떴어요.실제로 git rebase 명령으로 동작을 확인할 때 엑셀 등으로 표를 만들면 이해하기 쉬워진다.[2]

git rebase-i--root 실행!


모든 제출은 편집 대상이기 때문에 --root로 실행합니다!
$ git rebase -i --root

vi 편집을 시작합니다. 이렇게 화면이 됩니다!


//
// 左から、コマンド、hash値、コメント、README.mdのファイルの中身です。
//
pick c0f998d 1st // <-- # rebase
pick 0fa830d A   // <-- # A
pick f8b5ccd B   // <-- # B
pick 2d138a2 C   // <-- # C
pick cb468d1 D   // <-- # D

// まずは、イメージを固めるためにも、補足事項を付け足しました!
// 並び順も、上から古いもの、一番下が、最新のコミットです。
//
// 以下は、rebase -i の help ですね。
//
# Rebase cb468d1 onto 2d138a2 (5 commands)
#
# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amending
# s, squash <commit> = use commit, but meld into previous commit
# f, fixup <commit> = like "squash", but discard this commit's log message
# x, exec <command> = run command (the rest of the line) using shell
# b, break = stop here (continue rebase later with 'git rebase --continue')
# d, drop <commit> = remove commit
# l, label <label> = label current HEAD with a name
# t, reset <label> = reset HEAD to a label
# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
# .       create a merge commit using the original merge commit's
# .       message (or the oneline, if no original merge commit was
# .       specified). Use -c <commit> to reword the commit message.
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out
README.그 후에 나는 또md를 보충 썼다.실제로 파일 컨텐트는 표시되지 않습니다.

그럼 입문하는 입문!


우선 맨 아래 줄'cb468d1D'를 픽에서 드롭으로 변경합시다!
pick c0f998d 1st
pick 0fa830d A
pick f8b5ccd B
pick 2d138a2 C
drop cb468d1 D   // <-- pick から、drop に変更
// Esc + wq
vi 편집의 사용 방법을 모르는 사람은 아래 사이트에서 조회할 수 있습니다.[3]
https://vim.jp.net/

파일을 저장하면 Successfully로 표시됩니다.


Successfully rebased and updated refs/heads/main.

// さっそく、git log で確認!
$ git log --oneline --reverse
c0f998d 1st
0fa830d A
f8b5ccd B
2d138a2 (HEAD -> main) C

// ファイルの中身も!
$ cat README.md
# C

// これで予想通り、cb468d1 D が削除されました。
// README.md の中身も、# C となりました!!

아주 간단하네요.다시 해봐!


물론 복원 지령, 이거 완전 편리해!  git reset --hard cb468d1해시 값을 모르면 git reflog죠.[4]
$ git reflog

// 中略 ~

cb468d1 (origin/main) HEAD@{47}: commit: D
// commit: D が目印ですよ!

$ git reset --hard cb468d1
HEAD is now at cb468d1 D

$ git log --oneline --reverse
c0f998d 1st
0fa830d A
f8b5ccd B
2d138a2 C
cb468d1 (HEAD -> main, origin/main) D

// はい!元通り!(^^)v
drop 때문에, 동시에 다른 지령도 많이 사용되기 때문에, 반드시!

그럼 안녕히 계세요!git rebase-90fa830d 실행!


이번에는 -root이 아니라 해시치로 0fa830d를 지정해서 실행하세요!
또한 A를 포함하기 위해서는 앞부분을 지정해야 하기 때문에 0fa830d~1이다.
$ git rebase -i 0fa830d~1

vi 편집이 시작되었습니다. 이번에는 이런 화면입니다!


//
// 左から、コマンド、hash値、コメント
//
pick 0fa830d A
pick f8b5ccd B
drop 2d138a2 C   // <-- pick から、drop に変更
drop cb468d1 D   // <-- pick から、drop に変更

// Esc + wq
// 今度は、1st が選択対象から外れて、A~Dの4コミットですね。 
Successfully rebased and updated refs/heads/main.

$ git log --oneline --reverse
c0f998d 1st
0fa830d A
f8b5ccd (HEAD -> main) B

// ファイルの中身も!
$ cat README.md
# B

// これで予想通り、2d138a2 cb468d1 の2コミットが削除されました。
// README.md の中身も、# B ですね!
그럼, 이후 3줄을 함께 삭제하는 등 각자 생각나는 대로 복습하세요.
또한 최신 제출 프로그램을 삭제하는 것은 매우 간단하고 간단하다.
그렇지만
중도에 제출한 서류를 삭제하면 갑자기 대량의 정보가 표시되며 합병 방법에 따라 진흙탕에 빠져 머리가 혼란스러워질 수 있으니 주의하세요!
절대 혼자 시도하지 마세요.와!다음을 기대합니다!(폭소)
여러 번 반복되지만 git reset --hard, git reflog 이 두 지령은 반드시 해결하기 어려운 문제, 해결할 수 없는 위기에서 우리를 구할 것이다.그래.여기서부터 전진하려면 아이템, 가장 중요한 지령이 있어야 해!!

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


https://zenn.dev/shiozumi/articles/10c9c294537a24
각주
그나저나 드롭은 좀 복잡해요.reword 이후에 나는 squash를 기억하는 것이 비교적 좋다고 생각한다.응, 들었다고 할 수도 있어.↩︎
반대로 표를 만들지 않고 명령을 수행하면 머릿속이 혼란스러워질 수 있으니 주의하세요.음...와~!?이런 느낌.↩︎
내 환경은 CentOS 7입니다.x이기 때문에vi편집입니다.각자 협조해 주세요.↩︎
이 방면의 이해도는 확고히 파악해야 한다.절대 손해 볼 일 없어!↩︎

좋은 웹페이지 즐겨찾기