[Git] 어떻게 Git 전문가가 되는가? (amend, rebase)
위 링크의 글을 보고 옮겨봅니다.
간단한 내용이지만 git 을 처음 쓰거나 협업이 처음이신 분들은 미처 알지 못하는 부분일 수도 있겠다는 생각이 듭니다.
이 글에서 중점적으로 알려주는 것은 amending commits
과 rebase
입니다.
상황1. 상당히 많은 작업을 하고 나서 명확하지 않은 내용으로 커밋을 했을 경우 아래와 같이 커밋 메세지를 바꿀 수 있습니다.
git commit --amend -m "new commit message"
-m 부분부터 명시하지 않으면 에디터 화면으로 넘어가서 메세지를 작성하게 됩니다.
상황2. 실수로 파일을 하나 빠뜨리고 커밋을 했을 경우, 파일을 추가하며 기존 커밋을 갱신할 수 있습니다.
git add filename
git commit --amend --no-edit
— no-edit 를 적어주면 커밋 메세지 수정을 안하게 됩니다.
상황3. 커밋은 작성자의 이름과 메일 주소를 포함하고 있습니다. git 초기 세팅을 하게 된다면 모든 커밋은 메일 주소를 갖게 됩니다. 만약 특정 프로젝트에 다른 메일을 쓰고 싶다면, 아래와 같이 입력하면 됩니다.
git config user.email "email address"
만약 메일 셋팅을 하기 전에 커밋을 했다면, 아래와 같이 수정이 가능합니다.
git commit --amend --author "Author Name <Author Email>"
주의 할 점 : amend 는 로컬에서만 사용하세요. 원격 브랜치에서 사용시 문제를 일으킬 수 있습니다.
상황4. 오랫동안 작업을 하는 중에 다른 사람의 작업이 원격 저장소에 올라왔습니다. 나중에 한꺼번에 내려 받게 되면 conflict가 날 수 있습니다. 자주 내려받아야겠습니다. 그런데 이번에는 잦은 pull로 많은 머지커밋이 쌓이게 되었습니다. 이렇게 되면 히스토리가 지져분하게되어 나중에 이슈들을 확인할 때 보기 좋진 않습니다.
이때 rebase를 사용합니다.
보통 작업 최신코드는 master 또는 dev에 있을 것입니다. (조직마다 다르겠죠) 그리고 기능 구현을 위한 feature branch가 있을 것입니다. 이때 아래와 같이 타이핑합니다.
git checkout dev
git pull oringin dev
git checkout featurebranch
git rebase dev
이때, conflict가 발생할 수 있습니다.
충돌난 부분을 수정하고, 다음과 같이 합니다.
git add filename
git rebase – – continue
conflict이 발생하면 위 작업을 반복합니다.
이제 feature branch는 머지커밋 없이 최신의 작업내용을 가지고 있습니다. pull request 하게 되면 머지커밋 없이 작업 내용만 히스토리에서 보일 것입니다.
그림과 함께 이해하시려면 맨위 링크를 누르세요.
이외에도 reset, stash등 알아두면 유용한 것들이 많습니다. 쉽게 이해를 도울 수 있는 글을 찾아보겠습니다.
이렇게 위 글과 같이 커밋을 다루게 되시면 git 이 좀 더 친숙하게 다가 옵니다. 아직 전문가는 아니지만, 전문가가 되고픈 의욕이 생기지 않나요?