오픈소스 프로젝트 참여하기(3)-Git 명령어로 commit다루기

김재홍·2021년 8월 24일
1

오픈소스

목록 보기
3/3
post-thumbnail

📌 다양한 Git 명령어

💡 수정내용 확인하기(diff)

$ git diff

💡 수정내용 임시저장해두기(stash)

$ git stash

그 후에 현재 소스폴더 확인하기: 수정내용을 임시저장하였으므로 수정내용이 나타나지 않아야함

$ git status

💡 임시저장한 내용 복구

$ git stash pop

그 후에 현재 소스폴더 확인하기: 수정된 내용이 반영되어 있을 것임

$ git status

💡 add 명령어를 실행 후에 취소하기 (reset)

commit하기 전에 add까지 진행하여
commit할 준비를 했을 때 이를 취소하고 싶다면

$ git reset

💡 최근 commit 삭제하기 (reset)

commit을 진행했는데 이를 삭제하고싶다면 이번에도 reset을 사용할 수 있다.
가장 최근에 진행한 commit을 삭제하고싶다면

$ git reset --hard HEAD~1

여기서 HEAD~1은 가장 위에서 첫번째 내용을 삭제한다는 의미이다.

💡 최근 commit 수정하기 (amend)

commit을 진행했는데 생각했던 것과 달라 다시 수정을 해야한다면
그 위에 다시 commit을 했을 때 commit로그가 불필요하게 쌓일 수 있다.
그래서 사용할 수 있는 방법이 commit을 더 늘리지 않으면서,
가장 최근에 작성한 commit을 수정하는 것이다.

$ git commit --amend

명령을 실행하면 최근 commit을 수정할 수 있다.

💡 과거 commit 삭제하기 (rebase, reset)

만약 가장 최근이 아니라 과거에 진행된 커밋을 삭제하고 싶다면
rebase를 진행한 후에 위의 reset을 실행해주면 된다.
일단 먼저 어떤 commit이 진행된 후로 돌아갈 것인지 정해야한다.

# 로그 확인하기 
$ git log --oneline

이렇게 진행했다면 이때까지 진행된 commit이 순서대로 나올 것이다.
최근 commit부터 출력하므로 가장 위에 표시된 commit정보가 가장 최신이다.

여기서 이제 test: add hello_1.c hello_2.c hello_3.c 커밋을 작성한 직후로 되돌아가려면

$ git rebase -i --root

를 입력하자. 그럼 아래 그림처럼 txt로 갈 것이다.

여기서 원하는 commit이 진행된 시점을 정하여 pick를 edit으로 바꾸고
저장을 해야한다. 여기서는 가장 위에 표시된 정보가 가장 오래된 정보이므로 헷갈리지 말자.
나는 위에서 두번째 commit을 진행한 시점으로 돌아가기위해 저 부분을 edit으로 바꾸고 저장했다.

그리고 나서 commit log를 확인해보니 두번째 커밋이 진행된 시점으로 돌아갔다.

이렇게 진행된 시점에서 새로운 commit을 넣으면 이 시점에 새로운 commit이 등록되고

$ git rebase --continue

이 명령어를 수행하면 뒤에 나오는 commit들이 이어붙으면서 새로 만든commit 뒤에 기존에 있던 commit을 이어붙일 수 있다.

💡 과거시점에 commit 수정하기

먼저 임의로 hello_4.c commit을 추가해보겠다.

여기서 'Add hello_4.c' commit을 'test: add hello1.c hello_2.c hello_3.c' commit에 합쳐보자.
우선 아래 명령어를 실행하여 Add hello_4.c 커밋을 삭제한다.

# 먼저 가장 최근 커밋을 지우기
$ git reset --soft HEAD~1
# 그 다음은 amend을 통해 지워진 reset시킨 커밋내용 수정본에 넣기
# 이 때는 commit 제목도 바꿔주자!
$ git commit --amend

(위에서 진행했던 reset --hard와 reset --soft가 다른 점은
hard는 커밋내용까지 모두 없애는 반면, soft는 커밋내용은 저장해두지만 커밋기록만 삭제하는 것이라서
reset을 진행 후 amend를 진행하면 지워진 커밋내용까지 수정본에 넣을 수 있다.)
amend를 진행하면서 commit제목에 hello_4.c까지 붙여주고
로그를 확인해보면 아래그림과 같이 나올 것이다.

이제 여기다가

$ git rebase --continue

이렇게 입력해주면 뒤에 나오는 커밋들을 이어서 붙일 수 있다.

💡 rebase 취소, rebase 원상복구

만약 rebase를 취소해야할 경우가 있다면

$ git rebase --abort

그래도 안된다면 처음으로 원상복구

# 여기서 origin은 확장자명, master는 branch명이다.
$ git reset --hard origin/master

0개의 댓글