[Git] 정리

mj·2021년 6월 17일
0
post-custom-banner

커밋 돌리는 법

git log를 입력하여 commit ID를 확인할 수 있습니다.
git checkout ID(앞 7자리)를 입력하여 해당 commit으로 되돌릴 수 있습니다.
최신 commit으로 돌아가는 것은 git checkout -(-는 최신 commit을 의미)으로 해결!

clone 사용하기

git clone (repo Link 후 한 칸 띄고 마침표) .

Pull 사용하기

clone을 만들어 코딩하고 commit을 하면 원격 저장소에 올릴 수 있습니다. 하지만 clone이기 때문에 기존의 로컬 저장소(clone의 원본)에는 변화가 없습니다. 그러므로 git pull (원격저장소 이름) (브랜치 이름)을 통해 새로운 commit이 있다면 받아올 수 있습니다.

파일의 4가지 상태

우리는 git init명령어를 통하여 .git이라는 로컬 저장소를 만들어 파일을 관리해서 commit을 하거나 push를 합니다.
그 전에 우리가 add 명령어를 통해 파일들을 stage 위에 올려 둡니다.
add를 하고 난 뒤 commit을 했을 때 Git은 snap shot을 만들어 commit후의 버전을 저장합니다.
그 후 remote 명령어를 통하여 원격 저장소와 연동할 수 있습니다.
마지막으로 push하게 해주면 원격 저장소에 파일이 업로드 됩니다.
따라서, add를 하기 전 상태인 normal상태와 add를 하고 난 뒤의 Stage상태 다음으로 commit을 하였을 때의 snap shot상태가 됩니다. 마지막으로 push해주면 upload 상태가 되는 것입니다.
Before Add(Normal) -> After Add(Stage) -> After Commit(snap shot) -> After Push(Upload)
이후 우리가 커밋을 할 때마다 이전 스냅샷과 커밋 후의 스냅샷을 비교하여 바뀐 부분만 Upload하기 때문에 연산낭비는 걱정하지 않아도 되는 것이 Git의 장점입니다.

브랜치(Branch)

만약 2명 이상의 협업을 할 때, 각자 commit을 하게 된다면 서로 다른 스냅샷을 가리킨 상태로 업무를 하게 될 것이고 어느 분기부터 서로 다른 작업을 하였는 지 찾을 수 없어 곤란하게 될 것입니다. branch는 분기를 나누어 작업할 수 있는 기능입니다. 분기를 나누는 대신 서로 다른 길로 가지 않도록 Head라는 포인터를 통해서 이전 commit을 가리킬 수 있습니다. Head가 main 브랜치를 가리키지 않으면 분리된 Head가 되어(detached Head)상태가 됩니다.

브랜치 사용법

CLI환경에서 새 브랜치는 git branch (새 브랜치 이름)으로 만들 수 있습니다.
브랜치 이동하기는 git checkout (브랜치 이름)으로 작업할 브랜치를 변경할 수 있습니다.

브랜치 병합(merge)

서로 다른 브랜치로 작업하였으면 합쳐야 합니다. main브랜치에서 작업했으면 이전 분기의 최신 버전이므로 따로 합치지 않아도 됩니다. 하지만 Sub브랜치에서 작업한 내용은 합쳐야 하기 때문에 merge를 해주어야 합니다.
git merge (합칠 브랜치명) 으로 합칠 수 있습니다.
원격 저장소와 로컬 저장소의 코드가 다르다면 pull 해준 뒤에 merge해주면 됩니다.

풀 리퀘스트(Pull request)

이름에서 보는 것처럼 Pull을 요청합니다. 깃허브의 페이지에 Compare&pull request를 통해 [base: master], [compare: (합칠 브랜치)]를 설정해주고 base 브랜치에 풀 리퀘스트를 보낼 수 있습니다. 이후 merge pull request를 통해 서로 다른 두 개의 브랜치를 합칠 수 있습니다.

릴리즈(release)

개발이 다 완료되었다면 버전을 붙여서 출시할 수 있습니다. 버전을 붙이는 것은 태그(tag)를 통해서 간단하게 할 수 있습니다.

포크(fork)

컨트리뷰터(Contributor)는 기여자라는 뜻입니다. 우리들이 만든 프로젝트에 다른 사람이 참가하고 싶다면, 원본 저장소에 push할 수 있는 권한이 아닌 pull request를 요청할 수 있는 권한을 통해 코드의 분기점을 만들고 병합하는 것이 프로젝트 관리에 좋습니다. 새로운 브랜치를 만들어 관리하는 것이 아니라 포크는 복제된 저장소를 갖는 것을 말합니다. 따라서, 브랜치가 같은 저장소의 다른 분기라면 포크는 다른 저장소에서 다른 분기라고 볼 수 있습니다.

체리픽 (cherry-pick)

체리픽은 다른 브랜치의 커밋 하나만 내 브랜치에 반영하고 싶을 때 사용할 수 있습니다.

fast-forward

master 브랜치보다 앞서고, master 브랜치를 포함하고 있다면, fast-forward를 통한 merge가 가능하다.

rebase

불필요한 커밋들을 squash해서 처리한다.

amend

commit을 수정할 수 있다.

reset

옛날 커밋으로 브랜치를 되돌린다.
--hard: 돌아가려는 커밋 이후의 내역을 전부 삭제
--mixed: 스테이지 아래로 내역을 남겨서 필요한 것들만 add.
--soft: 스테이지와 내역은 남아있고 바로 다시 커밋할 수 있는 상태

post-custom-banner

0개의 댓글