본문 바로가기

Git

(20)
git rebase 이해하기 branch를 하나 따서 작업한 코드를 dev나 main에 간단히 추가하려면 git merge를 쓴다. 현재 브랜치에서 추가하고 싶은 브랜치를 입력하면 된다. current-branch > git merge target-branch (current-branch의 내용을 target-branch에 merge 하라!) 그러나 merge와 비슷한 명령어로 rebase가 있는데 merge와 달리 작동 방식이 직관적이지 않아 헷갈린다. merge를 이용하면 브랜치가 꽈배기처럼 꼬이고 불필요한 커밋 log가 남아 git 관리를 좀 더 효율적으로 하기 위해서 rebase를 사용하는 것 같다. 이런 장점이 있는 rebase를 사용하기 위해서 쉽게 설명해보고자 한다. rebase는 말 그대로 base를 다시 설정하겠다..
git rebase로 commit 메시지를 수정하는 방법 다음 명령어를 입력하면 해당 커밋 아이디 이전까지의 커밋 메시지를 수정할 수 있다. git rebase -i 커밋아이디 에디터가 열리고 아래와 같은 내용이 나타난다. pick 3bd42b6 첫 번째 커밋 pick 9cc5200 두 번째 커밋 pick 478443d 세 번째 커밋 수정하고 싶은 커밋의 pick을 reword로 바꾸고 저장한 뒤 에디터를 종료하면 reword로 바꾼 커밋 메시지를 연달아 다시 작성할 수 있다.
git rebase로 commit 메시지 순서 변경하는 방법 다음 명령어를 입력하면 해당 커밋 아이디 이전까지의 커밋 순서를 변경할 수 있다. git rebase -i 커밋아이디 에디터가 열리고 아래와 같은 내용이 나타난다. pick 3bd42b6 첫 번째 커밋 pick 9cc5200 두 번째 커밋 pick 478443d 세 번째 커밋 위에서부터 오래된 커밋이고 여기서 커밋의 줄 위치를 변경한 뒤에 저장하면 커밋의 순서가 바뀐다. pick 9cc5200 두 번째 커밋 pick 3bd42b6 첫 번째 커밋 pick 478443d 세 번째 커밋 경우에 따라서 conflict이 발생할 수 있다. 그런 때 rebase를 취소하고 싶다면 git rebase --abort 명령어를 입력한다.
git reset --hard 되돌리는 방법 다음 명령어를 입력하면 해당 커밋 이후의 커밋은 다 사라진다. git reset --hard 커밋아이디 그러나 생성했던 깃의 정보는 리파지토리에 모두 기록되어 있기 때문에 다시 되돌릴 수 있다. 다음 명령어를 입력하면 HEAD가 지나쳤던 커밋들의 히스토리 리스트가 나온다. git reflog show 브랜치이름 여기서 git reset --hard로 사라진 커밋에 접근할 수 있다. 커밋 아이디를 복사해서 제일 위의 reset 명령어를 입력하자.
git fetch에 대해서 git은 협업에 사용할 때 진가를 발휘한다. 따라서 git을 이용해 github과 같은 리모트 리파지토리를 다루는 방법에 대해서도 알아야 한다. 리모트 리파지토리에 다른 커밋이 업데이트 됐다면 로컬 리파지토리도 동일하게 업데이트 해야 다른 사람이 작업한 벽돌에 또 다른 벽돌을 쌓아 올릴 수 있다. 리모트 리파지토리에 업데이트된 커밋들을 가져오려면 다음 명령어를 사용한다. git fetch git fetch origin 위 두 명령어는 동일하다. origin이 기본값이기 때문이다. 아무튼 origin이라는 이름의 리모트 리파지토리에서 커밋된 것들을 가져온다. 아래처럼 특정 브랜치만 fetch 할 수도 있다. git fetch origin 브랜치이름 fetch한다고 해서 로컬 리파지토리의 내용도 수정하는 것..
git stash 사용 방법 브랜치를 이용해서 버전을 왔다갔다해야 할 때 작업을 완료하지 못해 커밋하지 않은 파일들이 문제가 된다. 커밋하지 않으면 브랜치를 옮길 수 없기 때문이다. 이때 stash를 이용해서 임시 공간에 저장한다. stash에 저장하기 위해 다음 명령어를 입력한다. git stash push -m "구분하기 위한 메시지" 새로 생성한 파일까지 넣으려면 -a 옵션을 더 넣어야 한다. (-m 대신 -am) 이제 브랜치를 옮길 수 있다. stash에 임시로 저장된 리스트를 확인하려면 다음 명령어를 입력한다. git stash list stash된 리스트가 번호와 메시지로 구분된다. 메시지만 보고서 어떤 부분을 수정한 작업인지 분간이 안 된다면 다음 명령어를 입력한다. git stash show 스태시리스트의번호 stas..
git branch 작업 순서 깃의 브랜치를 사용하면 기존의 버전을 그대로 두고 손쉽게 다른 작업을 할 수 있다. 작업이 완료됐을 때 기존의 버전에 브랜치를 추가(merge)하면 될 뿐이다. 1. 새로운 브랜치를 생성한다. git branch 브랜치이름 2. 생성한 브랜치로 HEAD(작업 브랜치)를 변경한다. git switch 브랜치이름 (브랜치를 새로 생성하면서 HEAD도 변경하는 방법) git switch -C 브랜치이름 (브랜치 이름을 바꾸는 방법) git branch -m 브랜치이름 새로운브랜치이름 (현재 브랜치(master)와 특정 브랜치의 차이점을 확인하는 방법) git diff 특정브랜치 (merge 된 브랜치를 확인하는 방법) git branch --merged (merge 되지 않은 브랜치를 확인하는 방법) git ..
git에 tag를 사용하는 방법 git에 커밋 메시지 말고도 tag를 추가할 수 있다. 보통 버전을 표시하기 위해 사용하는 것 같고(v1.0) 그밖에도 커밋 메시지 이외의 정보를 넣기 위해 사용하면 좋을 것 같다. 현재 시점에 tag를 추가하려면 다음 명령어를 입력한다. git tag 태그이름 위 명령어 뒤에 커밋 아이디(7 글자)를 더 넣으면 특정 커밋에 태그를 추가할 수 있다. git tag 태그이름 커밋아이디 다음 명령어로 해당 태그의 커밋 시점에 HEAD를 옮길 수도 있다. git checkout 태그이름 태그를 지우려면 다음 명령어를 입력한다. git tag -d 태그이름