CI/CD를 katacoda로 체험(초보자용) - Part9(Re-writing History)
CI/CD 입문
이 페이지에서는, 카타코다 라고 하는 「브라우저로부터 무료로 공부용의 인스턴스를 기동할 수 있는 Web 서비스」를 이용해 CI/CD를 실천합니다
내용은 위의 링크를 따르므로 불명확한 점이 있으면 그곳에 문의하십시오.
Git 버전 관리 정보 - Scenario 9 - Re-writing History
여기에서는 CI/CD로 빼놓을 수 없는 Git에 의한 버전 관리에 대해 배웁니다.
이 시나리오에서 학습을 빨리 확인하려면 개요를 확인하십시오.
이해에 실수 등이 있으면 꼭 지적하십시오.
개요
git rebase --interactive (--root)
에서 저장소 내역 변경 가능 git rebase --interactive (--root) (hash)
Amending Commit Messages
리포지토리 내역의 가독성을 향상시키기 위해
git rebase
를 사용하여 구성이번 시나리오는 커밋 내용 변경
초기 상태의 커밋 이력은 다음과 같습니다.
$ git log --oneline
ESC[33m254883aESC[mESC[33m (ESC[mESC[1;36mHEAD -> ESC[mESC[1;32mmasterESC[mESC[33m)ESC[m Final Item
ESC[33mb1a5bb4ESC[m New Item
ESC[33m0c3ff30ESC[m Initial comit of the list
git rebase --interactive --root
에서 대화식 모드에서 루트 사용자로 리포지토리 편집이 명령을 입력하면 다음과 같은 Vim이 시작됩니다.
이번에는 "comit"라고 댓글을 달고 있는 커밋을 편집하기 때문에 아래와 같이
reword
를 요구해 esc
, :wq
그러면 새롭게 다음과 같은 Vim이 일어납니다.
여기서 "reword"요청 커밋 메시지를 변경할 수 있습니다.
이번은 아래와 같이,
comit
-> commit
로 변경terminal로 돌아 오면 변경 사항이 반영됩니다.
$ git rebase --interactive --root
[detached HEAD d1cc84f] Initial commit of the list
Date: Tue Oct 20 07:21:12 2020 +0000
1 file changed, 5 insertions(+)
create mode 100644 list.html
Successfully rebased and updated refs/heads/master.
$ git log --oneline
ESC[33m8081e1dESC[mESC[33m (ESC[mESC[1;36mHEAD -> ESC[mESC[1;32mmasterESC[mESC[33m)ESC[m Final Item
ESC[33mc6dc2adESC[m New Item
ESC[33md1cc84fESC[m Initial commit of the list //"comit"->"commit"
Squash Commits
다음 시나리오에서는 여러 커밋을 하나로 결합합니다.
리포지토리의 초기 상태는 다음과 같습니다.
$ git log --oneline
ESC[33m1cf8e31ESC[mESC[33m (ESC[mESC[1;36mHEAD -> ESC[mESC[1;32mmasterESC[mESC[33m)ESC[m TODO
ESC[33ma340728ESC[m TODO
ESC[33m901fe75ESC[m TODO
ESC[33m6b4db09ESC[m TODO
ESC[33mfbf4a5dESC[m TODO
ESC[33m52204d0ESC[m TODO
ESC[33mf8f4e01ESC[m TODO
ESC[33m260d2cbESC[m TODO
ESC[33m3a1f752ESC[m Final Item
ESC[33mf74f00dESC[m New Item
ESC[33mfabfbbaESC[m Initial comit of the list
$ git rebase --interactive HEAD~8
이번에는 이전 커밋에 다른 커밋을 융합하기 때문에
squash/s
그런 다음 아래와 같이 첫 번째 커밋 메시지 만 남기고 저장
[detached HEAD d957dad] TODO
Date: Tue Oct 20 07:43:38 2020 +0000
1 file changed, 8 insertions(+)
create mode 100644 TODO
Successfully rebased and updated refs/heads/master.
$ git log --oneline
ESC[33md957dadESC[mESC[33m (ESC[mESC[1;36mHEAD -> ESC[mESC[1;32mmasterESC[mESC[33m)ESC[m TODO
ESC[33m3a1f752ESC[m Final Item
ESC[33mf74f00dESC[m New Item
ESC[33mfabfbbaESC[m Initial comit of the list
commit 메시지가 "TODO"하나로 변경되었는지 확인
Re-order Commits
다음 시나리오에서는 커밋 순서를 바꿉니다.
리포지토리의 초기 상태는 다음과 같습니다.
$ git log --oneline
ESC[33m356b8fdESC[mESC[33m (ESC[mESC[1;36mHEAD -> ESC[mESC[1;32mmasterESC[mESC[33m)ESC[m Adding File 1
ESC[33maa0b258ESC[m Adding File 2
ESC[33md957dadESC[m TODO
ESC[33m3a1f752ESC[m Final Item
ESC[33mf74f00dESC[m New Item
ESC[33mfabfbbaESC[m Initial comit of the list
$ git rebase --interactive HEAD~2
이번에는 "pick"요청으로 남을 수 있지만 순서만 바꿉니다.
Successfully rebased and updated refs/heads/master.
$ git log --oneline
ESC[33md49ad2bESC[mESC[33m (ESC[mESC[1;36mHEAD -> ESC[mESC[1;32mmasterESC[mESC[33m)ESC[m Adding File 2
ESC[33mb533037ESC[m Adding File 1
ESC[33md957dadESC[m TODO
ESC[33m3a1f752ESC[m Final Item
ESC[33mf74f00dESC[m New Item
ESC[33mfabfbbaESC[m Initial comit of the list
Split Commit
다음 시나리오에서는 커밋 분할
리포지토리의 초기 상태는 다음과 같습니다.
$ git log --oneline
ESC[33me957a8bESC[mESC[33m (ESC[mESC[1;36mHEAD -> ESC[mESC[1;32mmasterESC[mESC[33m)ESC[m Adding Fil
ESC[33m6141321ESC[m Adding File 1
ESC[33mb150469ESC[m Adding File 2
ESC[33m2f349e4ESC[m TODO
ESC[33me5a591fESC[m TODO
ESC[33mf7de1a0ESC[m TODO
ESC[33m5637843ESC[m TODO
ESC[33m0c4df92ESC[m TODO
ESC[33m846e96dESC[m TODO
ESC[33mec5bac6ESC[m TODO
ESC[33m69440bcESC[m TODO
ESC[33me5197fdESC[m Final Item
ESC[33mdbef64cESC[m New Item
ESC[33md6dc0e6ESC[m Initial comit of the list
$ git rebase --interactive HEAD~1
이번에는
rebase
의 edit
아래 결과와 같이 일시적으로
rebase
Stopped at e957a8b... Adding File 3 and File 4
You can amend the commit now, with
git commit --amend
Once you are satisfied with your changes, run
git rebase --continue
$ git reset HEAD^ //分割commitをリセット
$ git add file3.txt
$ git commit -m "File 3"
[detached HEAD f491f57] File 3
1 file changed, 1 insertion(+)
create mode 100644 file3.txt
$ git add file4.txt
$ git commit -m "File 4"
[detached HEAD 67edd65] File 4
1 file changed, 1 insertion(+)
create mode 100644 file4.txt
$ git rebase --continue //一時停止していたrebaseを再度実行
Successfully rebased and updated refs/heads/master.
$ git log --oneline
ESC[33m67edd65ESC[mESC[33m (ESC[mESC[1;36mHEAD -> ESC[mESC[1;32mmasterESC[mESC[33m)ESC[m File 4
ESC[33mf491f57ESC[m File 3
ESC[33m6141321ESC[m Adding File 1
ESC[33mb150469ESC[m Adding File 2
ESC[33m2f349e4ESC[m TODO
ESC[33me5a591fESC[m TODO
ESC[33mf7de1a0ESC[m TODO
ESC[33m5637843ESC[m TODO
ESC[33m0c4df92ESC[m TODO
ESC[33m846e96dESC[m TODO
ESC[33mec5bac6ESC[m TODO
ESC[33m69440bcESC[m TODO
ESC[33me5197fdESC[m Final Item
ESC[33mdbef64cESC[m New Item
ESC[33md6dc0e6ESC[m Initial comit of the list
위의 결과와 같이
rebase
Reference
이 문제에 관하여(CI/CD를 katacoda로 체험(초보자용) - Part9(Re-writing History)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tem-individual/items/46204962af22f10db502텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)