[Git] 자주 사용하는 명령어들

태이니즘
|2024. 2. 24. 20:16
728x90

1. git clone

git clone https://<본인계정 이름>:<토큰 값>@<github 저장소 주소>
  • 특정 깃허브 리포지토리를 연결함과 동시에 메인 브랜치 커밋 내역들을 로컬의 커밋내역으로 병합한다.
  • 1. git remote add origin <github 주소>: 해당 주소를 원격 저장소로 연결
  • 2. git pull origin main: 원격 저장소의 메인 브랜치만 다운로드 하여 커밋내역을 병합한다.
  • 위 2가지가 합쳐진 명령어임

 

2. git pull

git pull origin <브랜치 이름>
  • 연결된 원격 저장소의 특정 브랜치의 커밋 내역들을 로컬에 현재 접속되어 있는 브랜치에 병합한다.
  • 1. git fetch origin: 원격 저장소의 모든 브랜치들을 다운 받는다.
  • 2. git merge origin/<브랜치 이름>: 다운받은 원격 저장소의 메인 브랜치를 병합한다.                                                 
  • 위 2가지가 합쳐진 명령어임

 

3. git checkout 

git checkout -b <브랜치 이름>
  • 특정 브랜치를 생성하면서 해당 브랜치로 이동한다.

 

4. git push

git push origin <브랜치 이름>
  • 원격 저장소의 특정 브랜치에 현재 로컬에서 접속되어 있는 브랜치의 커밋 내역을 병합한다.
  • 원격 저장소에 해당 브랜치가 없으면 자동으로 생성된다.
git push -f <브랜치 이름>
  • 현재 접속되어 있는 로컬 브랜치를 강제로 push 한다.
  • git push를 일반적으로 입력 할 때 오류가 생기는 부분이 있는데, 로컬에서 어떤 작업을 새로 했다면 그 새로 작업을 하기전의 커밋 내역들이 원격 저장소의 브랜치의 커밋 내역들과 동일해야 한다.
  • 이 조건이 충족이 되어야 push를 하면 Fast-Forward Merge나 3-Way Merge를 할텐데 이게 안되면 아예 커밋 시작점이 달라져 버리기 때문에 허용되지 않는다.
  • 이럴 경우 커밋 내역을 그냥 덮어씌어 버려야 하는데 이 때 git push -f 명령어를 사용한다.

 

5. git rebase

git rabase -i HEAD~<현재 HEAD를 포함하여 수정하고 싶은 커밋 로그의 갯수>
  • 특정 커밋 로그의 범위를 압축하여 원하지 않는 커밋 로그를 삭제하는 명령어.
  • ex) 1. 로그인 기능 만들다 잠와서 집감 - 2. 다음날 로그인 기능 만들다 화장실감 - 3. 로그인 기능 완료(HEAD)
    이 3개의 로그인 작업에 대한 커밋 로그가 있을 때 1번, 2번 로그가 마음에 들지 않을 때
    git rebase -i HEAD~3을 입력한 후 에디터에서 1. pick - 2.squash - 3.squash 수정

 

6. git reset

git reset --hard <돌아가고 싶은 지점의 해시 인덱스 번호>
  • git reflog 를 입력하면 내가 했던 모든 작업들, 예를 들면 브랜치 이동, 커밋 등의 로그들이 남는데 해당 특정 부분으로 시간을 돌리고 싶을 때 사용한다.
  • git reflog 출력 결과에 나오는 해시 인덱스를 입력하면 그곳으로 돌아갈 수 있다.
  • reset도 soft, hard 등 다양하지만 보통 hard를 많이 사용한다. 위험하지만 내가 뭔가 잘못한게 있어 돌아가고 싶은 확신이 있을 때 사용
728x90

'Git' 카테고리의 다른 글

[Git] 강제 Pull로 내 로컬 커밋내역 덮어 씌우기  (0) 2024.07.19