zerocho님의 깃허브 강좌를 요약했습니다.
Git은 사실 Github를 이용하기 위해서 배우는거나 다름없다고 생각한다.
협업을 하기 위해서는 깃허브의 원격저장소를 이용하는 방법 그리고 작업을 합치고 실수를 되돌리는 방법에 대해서 공부해볼 것이다.
🔑 다양한 명령어가 기억나지 않는다면?
git remote(add,push...) --help
: --help 를 이용해서 명령어 사용법을 볼 수 있다. 영어가 완벽하지 않다면 구글에 오류메세지를 검색하면, 많은 개발자들이 올려놓은 해결방법들을 볼 수 있다.
git remote
: 현재 프로젝트에 등록된 리모트 저장소를 확인할 수 있다. 리모트 저장소가 여러 개 있다면 등록된 전부를 보여준다.
git remote -v
: 주어 단축이름과 URL을 함께 볼 수 있다.
git remote add orgin url
: origin이라는 이름으로 리모트 저장소를 추가 한다.
git remote get-url origin url
: 리모트 저장소가 저장됐는지 확인 할 수 있다.
git remote set-url origin url
: 새로운 리모트 저장소를 설정할 수 있다.
리모트 저장소를 관리할 줄 알아야 다른 사람과 함께 일할 수 있다.
리모트 저장소는 인터넷이나 네트워크 어딘가에 있는 저장소를 말한다.
git push origin master
: 로컬저장소에 있는 파일들을 깃허브 저장소에 올리는 것이다.
프로젝트를 공유하고 싶을 때 저장소에
Push
할 수 있다. 옵션이 다양하기 때문에, 확인하고 사용하는 것이 중요하다.
git pull origin master
: origin에 master에 있는 파일들을 받아온다.
pull을 통해서 리모트 저장소에 있는 파일들을 받아올 수 있다.
다른 사람이 작업한 내용을 내 로컬에 반영해 주는 것이다.
작업을 시작하기 전에 항상pull
하는 습관은 충돌을 막을 수 있다.
git fetch
: pull과 비슷하지만 merge 작업을 포함하지 않은 것이다.
git reset
: 현재 커밋을 취소한다.
HEAD
: 현재 작업하고 있는 브런치를 가리키는 포인터이며, 가장 마지막 커밋을 가리킨다.
git reset HAED~1
: 현재 커밋에서 한번 되돌아가고 싶다.
커밋했던 기록이 아예 사라지기 때문에 실수커밋을
push
하고reset
사용해야 한다.
🔑 reset 사용하면 3가지의 상태로 되돌아갈 수 있다.
git reset HAED~1 --mixed
: unmodified로 돌아간다.
git reset HAED~1 --soft
: staged으로 돌아간다.
git reset HAED~1 --hard
: 커밋되지 않은 모든 변경사항을 제거한다.
git reset --mixed
: 헤드없이 하는 것은 수정사항을 모두 삭제할 때
git reset ca82701
: 커밋의 고유한 로그번호를 이용해서 원하는 커밋으로 되돌릴 수 있다.
git reflog
: 지금까지 실행한 명령들을 모두 볼 수 있다.
git revert
: reset과는 다르게 실수내용을 새로운 커밋으로 남긴다.
revert는 실수한 커밋을 기록으로 남긴다.
내가 어떤 실수를 하고, 모든 팀원들이 알고 있는 상황이다.
나 혼자 되돌린다고 해서 문제가 해결되는 것이 아니다.
원격에 실수한 것을 커밋했을 때, 바로잡기 위해서 실수를 인정하고 revert로 되돌려야 한다.
🔑 revert
와 reset
언제 사용해야 할까?
reset
은 로컬에서 실수 했을때, revert
는 실수한 내용을 원격에 올리고 실수를 인정하고 다시 되돌리고 싶을 때 사용한다.
git branch development
: development 이름의 새로운 브런치가 생성된다.
master
: 고객이 실제로 사용하는것
branch
: 작업을 하는 부분, 새로운 시도를 하고 싶을 때 branch에서 작업을 한다. 테스트를 충분히 하고,master
에 합칠 수 있다.
git checkout master
: 작업해야 하는 branch
로 이동할 수 있다.
git merge development
: master
에서 development
에서 작업한 것들을 끌어오는 것이다.
merge
하면서 많은 충돌이 일어난다. 당황하지 말고, 오류메세지를 읽어서 충돌을 해결하는 것이 중요하다.
git rebase development
: merge와 같은 기능이지만, 가지들을 나누는 것이 아니라, 하나의 줄기로 끌어온다.
git stash
: 하고 있던 작업을 임시저장 할 수 있다.
git stash apply
: 하고 있던 작업을 적용할 수 있다.
커밋을 안하고 다른
branch
에 가게되면 오류가 난다.
하지만stash
를 이용해서 변경내용을 저장하고, 다른branch
에 이동하고stash apply
작업하던 내용을 적용할 수 있다.
브런치를 착각했을 때, 작업했던 내용을 임시저장하고 원하는
브런치에 적용할 수 있다.
git cherry-pick 76ae30ef
: 특정한 커밋만 현재 브런치에 적용할 수 있다.
중요한 사항과 안중요한 사항이 있는데, 중요한 사항만 가져오고 싶을 때
사용하면 된다. merge나 rebase는 모든 변경사항을 가져오는 것이기 떄문이다.
git tag v1.0
: 중요한 커밋에는 태그를 붙여서, 태그명을 이용해서 작업할 수 있다.