항상 잊어버리는 Git 명령어

5191 단어 gitbashgithub
2020년 4월 19일 스위스에서 COVID-19 격리가 종료되는 원래 예정된 날짜까지 공유합니다. 이 첫 번째 이정표까지 3일이 남았습니다. 더 나은 날이 오기를 바랍니다.


Git 에 관해서는 제 편집기인 WebStorm 의 정말 잘 만들어진 통합에 너무 많이 의존하는 것 같습니다. 결과적으로 유용한 명령, 심지어 터미널에서 실행하는 경우가 거의 없는 간단한 명령도 가끔 잊어버립니다.

그래서 이 블로그 게시물을 주로 미래의 자신을 위해 공유하고 있습니다 😅.


마지막 커밋 되돌리기



아직 푸시되지 않은 마지막 커밋을 되돌리려면 reset 명령을 사용하여 이전 단계에서 기록을 되감을 수 있습니다.

그러나 커밋이 이미 푸시된 경우 기록을 보존하고 revert 명령을 실행할 수 있습니다. 여기서 eec47301는 되돌릴 커밋의 개정 번호이며 예를 들어 git log 명령) 커밋과 푸시가 뒤따릅니다.

git revert eec47301

또는 reset 명령과 --hard 옵션을 사용한 후 --force 옵션을 사용하여 기록을 보존하지 않고 되돌립니다.

git reset --hard eec47301

현명하게 사용해야 하는 것은 말할 필요도 없습니다.


마지막 커밋 메시지 변경



마지막 커밋 메시지가 잘못되었거나 예를 들어 오타가 있는 경우 --amend 옵션을 사용하여 마지막 또는 가장 최근의 커밋 메시지를 수정할 수 있습니다.

git commit --amend

커밋이 아직 푸시되지 않은 경우 다른 작업을 수행할 수 없습니다. 반대로 이미 푸시한 경우 --force 로 repo를 업데이트할 수 있습니다.

git push --force



여러 커밋 메시지 변경



예를 들어 관련 이슈 번호를 지정하는 것을 잊어버린 경우 발생할 수 있는 여러 커밋 메시지를 수정하려는 경우 rebase 의 도움을 받아 진행할 수 있습니다.

이 솔루션에 대한 크레딧은 Jaco PretoriusLinuxize에서 제공한 것으로 이동합니다. 모든 영웅이 망토를 입는 것은 아닙니다!

수정을 시작하려면 다음 명령을 실행합니다. 여기서 2rebase를 수행하려는 커밋 수입니다.

git rebase -i HEAD~2

이렇게 하면 각 커밋에 대한 변경 사항을 지정할 수 있는 프롬프트가 열립니다.

pick e68a142 my frst update
pick 1613f1e my scnd update

커밋 메시지를 변경하려면 pick (또는 짧은 버전 reword )로 r를 수정합니다.

reword e68a142 my frst update
reword 1613f1e my scnd update

완료되면 저장( :wq )하고 프롬프트가 자동으로 변경하려는 첫 번째 선택된 커밋으로 안내합니다.

my frst update

메시지를 수정하고(x 문자를 삭제하고, i 삽입 모드로 전환하고, a a를 추가하고 항상 Esc 편집 모드를 빠져나옴) 저장하면 프롬프트가 다시 자동으로 안내합니다. 변경하고 싶은 다음 커밋 메시지까지.

my snd update

완료되면 터미널은 다음과 같이 표시됩니다.

❯ git rebase -i HEAD~2

[detached HEAD 1f02610] my first update

Date: Thu Apr 16 15:55:09 2020 +0200

1 file changed, 1 insertion(+), 1 deletion(-)

[detached HEAD 68d3edd] my second update

Date: Thu Apr 16 16:00:29 2020 +0200

1 file changed, 4 insertions(+)

Successfully rebased and updated refs/heads/master.

이 시점에서 우리의 기록은 로컬에서 다시 작성되지만 아직 리포지토리에서 업데이트되지 않았습니다. 이것이 우리가 이것을 푸시하는 이유입니다.

git push --force



리베이스 중단



위 프로세스를 실행하는 동안 문제가 발생하면 --abort 를 사용하여 리베이스 작업을 취소할 수 있습니다.

git rebase --abort



병합 중단



중단에 대해 말하자면, 동일한 옵션을 사용하면서 병합을 종료하는 것도 가능합니다.

git merge --abort



태그 삭제



GitHub에서 릴리스를 삭제하면 릴리스가 삭제되지만 관련 태그는 삭제되지 않습니다. 일반적으로 브라우저를 사용하여 저장소로 돌아가면 여전히 표시됩니다.



이러한 태그를 제거하려면 Git 푸시와 옵션--delete 뒤에 제거할 태그 이름을 사용하여 제거할 수 있습니다.

git push --delete origin v0.0.1



요약



이번에는 이 명령줄을 기억할 수 있기를 바라지만 그렇지 않다면 적어도 어디에서 찾을 수 있는지 알 것입니다 😁.

집에 있어, 안전하게 있어!

다윗

Jonatan LewczukUnsplash님의 표지 사진

좋은 웹페이지 즐겨찾기