Git & Github 협업하기

lacblueeun·2020년 9월 9일
0

Git & Github

목록 보기
2/2
post-thumbnail
post-custom-banner

Git & Github

zerocho님의 깃허브 강좌를 요약했습니다.

Git은 사실 Github를 이용하기 위해서 배우는거나 다름없다고 생각한다.
협업을 하기 위해서는 깃허브의 원격저장소를 이용하는 방법 그리고 작업을 합치고 실수를 되돌리는 방법에 대해서 공부해볼 것이다.

🔑 다양한 명령어가 기억나지 않는다면?
git remote(add,push...) --help : --help 를 이용해서 명령어 사용법을 볼 수 있다. 영어가 완벽하지 않다면 구글에 오류메세지를 검색하면, 많은 개발자들이 올려놓은 해결방법들을 볼 수 있다.


1. 깃허브 접근하기

1-1 remote

git remote : 현재 프로젝트에 등록된 리모트 저장소를 확인할 수 있다. 리모트 저장소가 여러 개 있다면 등록된 전부를 보여준다.
git remote -v : 주어 단축이름과 URL을 함께 볼 수 있다.
git remote add orgin url : origin이라는 이름으로 리모트 저장소를 추가 한다.

git remote get-url origin url: 리모트 저장소가 저장됐는지 확인 할 수 있다.
git remote set-url origin url : 새로운 리모트 저장소를 설정할 수 있다.

리모트 저장소를 관리할 줄 알아야 다른 사람과 함께 일할 수 있다.
리모트 저장소는 인터넷이나 네트워크 어딘가에 있는 저장소를 말한다.

1-2 push

git push origin master : 로컬저장소에 있는 파일들을 깃허브 저장소에 올리는 것이다.

프로젝트를 공유하고 싶을 때 저장소에 Push 할 수 있다. 옵션이 다양하기 때문에, 확인하고 사용하는 것이 중요하다.

1-3 pull

git pull origin master : origin에 master에 있는 파일들을 받아온다.

pull을 통해서 리모트 저장소에 있는 파일들을 받아올 수 있다.
다른 사람이 작업한 내용을 내 로컬에 반영해 주는 것이다.
작업을 시작하기 전에 항상 pull 하는 습관은 충돌을 막을 수 있다.

1-4 fetch

git fetch : pull과 비슷하지만 merge 작업을 포함하지 않은 것이다.


2. 깃허브 실수 되돌리기

2-1 reset ✨

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 : 커밋의 고유한 로그번호를 이용해서 원하는 커밋으로 되돌릴 수 있다.

2-2 reflog🧨

git reflog : 지금까지 실행한 명령들을 모두 볼 수 있다.

2-3 revert

git revert : reset과는 다르게 실수내용을 새로운 커밋으로 남긴다.

revert는 실수한 커밋을 기록으로 남긴다.
내가 어떤 실수를 하고, 모든 팀원들이 알고 있는 상황이다.
나 혼자 되돌린다고 해서 문제가 해결되는 것이 아니다.
원격에 실수한 것을 커밋했을 때, 바로잡기 위해서 실수를 인정하고 revert로 되돌려야 한다.

🔑 revertreset 언제 사용해야 할까?
reset 은 로컬에서 실수 했을때, revert 는 실수한 내용을 원격에 올리고 실수를 인정하고 다시 되돌리고 싶을 때 사용한다.


3. 깃허브로 협업하기

3-1 branch

git branch development : development 이름의 새로운 브런치가 생성된다.

master : 고객이 실제로 사용하는것
branch : 작업을 하는 부분, 새로운 시도를 하고 싶을 때 branch에서 작업을 한다. 테스트를 충분히 하고, master 에 합칠 수 있다.

3-2 checkout, merge

git checkout master : 작업해야 하는 branch 로 이동할 수 있다.
git merge development : master 에서 development 에서 작업한 것들을 끌어오는 것이다.

merge 하면서 많은 충돌이 일어난다. 당황하지 말고, 오류메세지를 읽어서 충돌을 해결하는 것이 중요하다.

3-3 rebase

git rebase development : merge와 같은 기능이지만, 가지들을 나누는 것이 아니라, 하나의 줄기로 끌어온다.

3-4 stash & stash apply

git stash : 하고 있던 작업을 임시저장 할 수 있다.
git stash apply : 하고 있던 작업을 적용할 수 있다.

커밋을 안하고 다른 branch에 가게되면 오류가 난다.
하지만 stash를 이용해서 변경내용을 저장하고, 다른 branch에 이동하고 stash apply 작업하던 내용을 적용할 수 있다.

브런치를 착각했을 때, 작업했던 내용을 임시저장하고 원하는
브런치에 적용할 수 있다.

3-5 cherry-pick

git cherry-pick 76ae30ef : 특정한 커밋만 현재 브런치에 적용할 수 있다.

중요한 사항과 안중요한 사항이 있는데, 중요한 사항만 가져오고 싶을 때
사용하면 된다. merge나 rebase는 모든 변경사항을 가져오는 것이기 떄문이다.

3-6 tag

git tag v1.0 : 중요한 커밋에는 태그를 붙여서, 태그명을 이용해서 작업할 수 있다.

profile
Go for Frontend Developer 🧪
post-custom-banner

0개의 댓글