본문 바로가기

CS(Computer Science)/Git

git 기본 명령어

<기본>

 

commit : 디렉토리에 있는 모든 파일에 대한 스냅샷을 기록하는 것, ->  각 커밋은 변경 내역을 기록함

 

git commit : 새로운 커밋을 생성(저장)

 

git branch noah : noah라는 브랜치를 해당 커밋에서 생성 (브랜치는 특정 커밋에 대한 참조에 지나지 않기에 가벼움)

 

git checkout noah : noah브랜치로 이동. 

 

git merge noah : noah브랜치의 커밋내용을 합쳐서 생성 (해당 브랜치만 merge한 곳으로 이동)

                      - noah가 해당브랜치의 자식이면 noah로 이동만함

 

git rebase noah : 분기한 이후의 커밋들을 모아서 복사한 뒤 noah 뒤로 이어 붙임 (커밋트리의 히스토리를 수정하게됨)

 

                merge vs rebase -> merge는 히스토리 이력을 알 수 있음, rebase는 보기엔 깔끔하지만 히스토리 수정됨

 

git log : 로그들 확인

 

 

 

<원격저장소 기본>

git clone <>: 원격 저장소의 복사본을 로컬에 생성할때 사용하는 명령어

       

로컬에서 원격 브랜치 표현 : ex) origin/main의 origin는 원격 저장소 이름, main은 원격 브랜치 이름 

                                    -> 로컬에서는 원격 브랜치 checkout같은거 못함 (수정? 불가)

git fetch : 원격 저장소에서 데이터를 다 가져옴- *다운로드만 한다고 생각 

                     (단 로컬 상태는 변경 하지 않음- 로컬파일들이나 브랜치)

             1. 로컬에 없는 커밋들을 다운

             2. 로컬의 원격 브랜치 위치를 업데이트

 

git pull : git fetch + git merge       (ex- main브랜치는 origin/main을 추적하고있기에 자동으로 origin/main을 머지함 )

                                                      (추적도 변경 가능)

git pull --rebase : git fetch + git rebase

 

git push : 원격저장소에 업로드하고 그 원격 저장소가 새 커밋들을 합치고 갱신

     (push할 내용이 원격 저장소의 히스토리와 다르면 거부당함 - 그래서 원격 저장소의 최신 상태를 합치도록 강제함

         해결 -> git pull 같은 명렁어로 로컬을 갱신 후 푸쉬하면 됨)

 

pull request : 보통 원격저장소의 main 브랜치는 잠겨있다. 그래서 변경사항을 적용하려면 pull request 과정을 거쳐야함

                   (잠겨 있는데 그냥 push 하면 오류 뜸)

                  ->다른 브랜치로 작업 수행 후 push 한 후 원격에서 main브랜치로 pull request하는 식

 

 

<상대 참조>

^ :  한 커밋 위를 가리키는 참조 (HEAD^ 면 HEAD의 부모를 가리키는 것)

~ : 여러 커밋 위를 가리키는 참조 (HEAD~3 이면 HEAD의 3번째 위를 가리킴)

 

 

<깃 변경한 내용 되돌리기>

git reset : 브랜치를 예전의 커밋을 가리키도록 이동 (커밋하지 않은 것처럼 돌아감) - 히스토리를 변경하므로 리모트 브랜치에 쓸수 없음. ->   ex) git reset HEAD^ 한후에   git push -f 을 해줘야 리모트도 적용됨

 

git revert : 돌아갈 내용을 다음 커밋으로 덮어 추가함 (추가 되는 것이므로 리모트 브랜치에 공유 가능) 

               ex) git revert HEAD 하면 HEAD커밋을 없던것으로 돌려주는 내용이 다음 커밋으로 추가됨

 

git branch -f main HEAD~2   : main 브랜치를 HEAD~2위치로 옮겨줌

 

 

<참고>

HEAD : 현재 checkout 된 커밋

 

 git remote update : 원격의 브랜치를 찾지 못해서 발생하는 fatal: Cannot update paths and switch to branch 'feature/rename' at the same time. 라는 오류 메세지를 해결해준다.

 

만약 원격 저장소의 feature/create-meeting branch를 가져오고 싶다면, $ git checkout -t origin/feature/create-meeting 처럼 하면 된다.

 

git checkout -b noah origin/main   :  noah 브랜치를 생성하고 origin/main을 추적함,  noah에 체크아웃 되어있음

git branch -u origin/main noah  : noah브랜치가 origin/main을commit : 디렉토리에 있는 모든 파일에 대한 스냅샷을 기록하는 것, -> 각 커밋은 변경 내역을 기록함

반응형