서버에서 작업할때 깃 (feat.애증의 깃)
여러명이 같이 개발하는 프로젝트를 진행하면 꼭 사용하게되는 깃
사실 나는 깃파괴자라고 불렸다..
친구한테, 강사님들께 여러번 깃에 대한 설명을 들었지만, 늘 안익숙해서 merge만 뜨면 식은땀이 줄줄..
아직까지도 깃에 대해서 잘 아는건 아니다. 그렇지만 이렇게 있다가 회사가면 한번 날려먹겠구나.. 라는 무서움이 들어서 이왕 망쳐볼꺼면 지금 망쳐봐서 깨닫자라는 마음으로 좀 과감히 이것저것 눌러보는중..
틈틈히 거기서 알게된걸 여기 정리해보려한다.
순서는 전혀 일정하지 않을거다. 그때그때 문제상황을 해결하느라 공부한 것들이기때문에.. (엄청기본적인것도 넘쳐나겠지..)
서론이 길었다.
요즘 난 서버에서 개발을 하고 있는데, 동일 환경에서 여러명이 각자의 로컬 깃저장소를 갖고 작업하는경우가 있다.
거기서 발견한 문제!(아! 나는 주로 CLI로 깃을 사용해서 이런문제가 있는것같기도 하다.)
왜 내 fetch작업이 남이 한 걸로 되는거지?
우리는 각자의 pc에서 깃을 사용할때, 맨처음에
git config --global user.email “you@example.com”
git config --global user.name “Your Name” 요걸 설정한다.
간단히 설명하면, 지금부터 내가 이 pc에서 진행하는 모든 fetch은 저 계정을 가지고 리모트서버에 올린다.라는 뜻이다.
이렇게 되는 이유는 당연히 —global로 선언해버렸기 때문. 그러면 이 정보는 ~/.gitconfig에 기록이 되면서, 모든 fetch과정이 해당 계정으로 리모트서버에 반영된다.
그렇다면, 동일 서버에서 여러명이 사용하는 경우는 어떻게 해야할까?
간단하다. —global을 빼면된다.
각자의 로컬 저장소에
git config user.email “you@example.com”
git config user.name “Your Name” 요걸 설정한다.
그러면 각 로컬저장소 ./.git/config에 해당정보가 저장된다.
—global로 저장이 되어있는 계정이 있어도, 로컬저장소 ./.git/config에 계정정보가 있으면, 후자의 계정으로 fetch가 반영된다.
3. Commit 취소
Commit은 여러명이 작업하는 환경에서는 꽤 중요한 역할을 한다.
그걸보고 code history tracking도 하고, 이슈를 열고 닫기도하고..!
그래서 여러명이 작업할때는 commit message에 '.' 같은거 하면안된다. (ㅋㅋㅋ 그런사람 나야나)
종종 개발을하다 코드를 수정하고, 커밋을 했는데, 그 커밋을 취소하고 다시 커밋하고 싶을때가 있다.
그때 사용하는 2개의 마법 명령어
바로직전의 커밋이 취소되고, 해당파일은 unstaged된 상태로 남아있으려면,
git reset HEAD^
바로직전의 커밋이 취소되고, 해당 파일 또한 커밋 전의 상태로 복구하려면,
git reset --hard HEAD^
++
커밋메세지 수정
바로 직전 커밋 메세지를 'MESSAGE'로 수정
git commit amend -m 'MESSAGE'
참고. 내계정으로 fetch했는데, 잔디밭에 기록이 안되요..
(내가 한 2달간 겪었던 상황.. 내 잔디 너무 아쉽다 ㅠㅠ)
내 경우에는 git/config의 user.name / user.email을 잘못입력햇다.. ^^
2월부터 근 4개월을 내가 거의 매일 커밋했는데... user.name을 잘못 입력했을거란 생각을 못했고, 내 히스토리에는 남지도 않았다..
🐳