Git
Git 명령어를 모아둔 페이지.
git
을 로컬 컴퓨터에서 사용하기 위해서는 git bash
를 설치해야한다.
working directory - staging area - git repository
순으로 데이터가 저장된다.
working directory
: 현재 작업하고 있는 로컬 컴퓨터 내 루트 디렉토리staging area
: git에 커밋하기 전 단계로 커밋을 할 데이터를 모아두는 곳git repository
: 실제 버전 관리를 하기 위해 커밋을 한 데이터들이 저장되는 곳
github
은 나의 로컬 컴퓨터에 커밋된 데이터를 내가 아닌 협업 개발자들도 같이 공유해서 사용할 수 있도록 만들어진 git
의 원격 저장소이다.
협업 프로젝트를 할 때는 레포지토리에 브랜치로 작업을 나누어 진행한다.
✅ bash에서는 명령어를 한꺼번에 사용하는 방법이 있다.
git add . && git commit -m "커밋 메시지" && git push origin main
파워쉘환경에서는 다음과 같이 작성한다.
git add .; git commit -m "커밋 메시지"; git push origin main
이러면 순차적으로 명령어를 한번에 실행할 수 있다.
레포지토리
레포지토리는 프로젝트의 저장소이다. 프로젝트의 모든 버전을 저장하고 관리한다.
로컬 공간과 Git의 레포지토리를 연결하기 위해서는 2가지 방법이 있다.
참고로, 레포지토리를 private으로 설정하면 흔히 말하는 잔디(commit)이 채워지지 않는다.
- 초기화
git init
# 새로운 Git 저장소 초기화
git remote add origin <레포지토리 URL>
# 원격 저장소 연결
git remote -v
# 원격 저장소 연결 확인
git add .
# 모든 파일을 스테이징
git commit -m "커밋 메시지"
# 커밋 생성
git branch -M main
# 현재 브랜치를 main으로 이름 변경, -M은 -m을 force로 사용한 것과 같다. -m은 이름을 지정하는 것이다.
git push -u origin main
# 원격 저장소에 푸시
# -u (--set-upstream)는 로컬 브랜치와 원격 브랜치를 연결하여 추적 관계를 설정
# 이후 git push/pull 시 브랜치 지정 없이 사용 가능
아니면 다음의 빌트인 repo 추가 git 스크립트 사용
echo "# test123" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/GiToon10100011/test123.git
git push -u origin main
- 복사
git clone (url)
아예 최초가 아니고 기존의 레포지토리를 로컬상으로 가져오고 싶다면 클론을 사용하면 된다.
보통 레포지토리에는 해당 저장소가 어떤 프로젝트인지 명시하는지 알 수 있도록 readme.md
파일을 제작한다.
명령어
git -v
위의 명령어를 통해 git의 버전을 확인할 수 있다(값이 나오냐 안나오냐에 따라 설치여부도 알 수 있다).
branch
-
branch
- 레포지토리의 브랜치목록을 확인할 수 있다.git branch
-r
를 붙이면 원격 브랜치를 확인할 수 있다.-a
를 붙이면 모든 브랜치를 확인할 수 있다.-
-d
를 붙이면 브랜치를 삭제할 수 있다.⚠️ 주의해야할 점은 일반
git branch -d
를 사용하면 원격상에서 브랜치가 삭제되지 않는다. 원격상에서도 브랜치를 삭제하고 싶다면git push origin -d (브랜치 이름)
을 사용해야 한다.# 로컬상에서 브랜치 삭제 git branch -d (브랜치 이름) # 원격상에서 브랜치 삭제 git push origin -d (브랜치 이름)
status
-
status
- 현재 브랜치의 상태를 확인할 수 있다.git status
-s
를 붙이면 간단한 상태를 확인할 수 있다.
git status -s
commit
-
commit
- 파일의 변경사항을 저장하는 작업이다.git commit -m "커밋 메시지"
만약 바로 직전의 커밋 메시지를 수정하고 싶다면 다음과 같이 작성한다.
git commit --amend -m "수정할 커밋 메시지"
만약 이미 푸시한 커밋이었다면 amend를 사용하고 강제로 저장소에 푸시해야한다.
git push --force
push
-
push
- 로컬상에서 일어난 변동사항을 원격 저장소에 업로드하는 작업이다.git push
git push
는 현재 브랜치의 변경사항을 연결된 원격 브랜치(upstream branch)에 푸시한다. 업스트림이란 로컬 브랜치와 원격 브랜치 간의 연결 관계를 의미한다.main 브랜치의 경우:
git clone
으로 저장소를 복제할 때 자동으로 업스트림이 설정된다git init
으로 새 저장소를 만들 때는 첫 push 시-u
옵션을 사용하는데, 이것이 바로 초기 설정 과정이다:git push -u origin main # 저장소 초기화 시 사용했던 이 명령어가 업스트림을 설정한다
새로운 브랜치를 만들 때는 수동으로 업스트림을 설정해야 한다:
git push -u origin feature # feature 브랜치의 업스트림을 origin/feature로 설정
한번 업스트림을 설정하면 이후에는
git push
만으로도 설정된 원격 브랜치로 푸시할 수 있다. 하지만 어느 브랜치로 푸시되는지 명시적이지 않을 수 있다.git push origin main
git push origin main
은 명시적으로 로컬의 main 브랜치를 원격의 main 브랜치로 푸시한다. 협업 시에는 이처럼 명시적인 방식을 사용하는 것이 실수를 방지할 수 있어 더 안전하다.
fetch
-
fetch
- 클라우드 공간에서 일어난 변동사항을 로컬상에 업데이트 해주는 작업이다.git fetch origin (브랜치 이름)
# 모든 변동사항을 가져오기 git fetch --all
pull
-
pull
- 클라우드 공간에서 일어난 변동사항을 로컬상에 가져오는 작업이다.git pull origin main
checkout
-
checkout
- 브랜치로 이동 혹은 특정 커밋으로 이동하는 작업이다.git checkout (브랜치 이름)
- 특정 커밋으로 이동하고 싶다면 커밋 해시를 사용하면 된다.
git checkout (커밋 해시)
✅ checkout 명령어를 통해 특정 파일만을 현재 브랜치로 가져올 수도 있다.
git checkout (가져올 파일이 있는 브랜치 이름) -- (파일 경로)
사용 예시:
git checkout feature-detail -- src/components/Detail.js src/components/List.js
위의 명령어는
feature-detail
브랜치에서src/components/Detail.js
와src/components/List.js
파일을 가져오는 명령어이다. 이처럼 파일을 여러개 가져올 수도 있다.이때, 주의해야할 점은 다른 팀원이 만든 새로운 브랜치를 처음으로 가져오거나 가져오고자 하는 브랜치가 로컬상에서 존재하지 않는 경우 오류가 발생한다. 이때는 다음과 같이 작성한다.
git fetch git checkout -b feature-detail origin/feature-detail
위의 명령어는
feature-detail
브랜치를 가져오는 명령어이다.이때,
origin/feature-detail
은 원격 저장소에 있는feature-detail
브랜치를 의미한다.
브랜치 생성하기
-
checkout
명령어에-b
플래그를 붙이면 새로운 브랜치를 생성하고 이동할 수 있다.git checkout -b (브랜치 이름)
브랜치를 분업할때 이름은 보통
feature-"기능"
과 같은 형태의 제목으로 작성한다.이때, 로컬상에서 만든 브랜치를 원격 저장소에도 업데이트하기 위해서 다음과 같이 작성한다.
git push origin -u (브랜치 이름)
이때,
-u
플래그는--set-upstream
플래그로, 로컬 브랜치와 원격 브랜치를 연결하는 역할을 한다.⭐️ 이보다 더 간단하게 브랜치를 생성하고 원격에 업로드하는 방법이 있다.
git checkout -b (생성할 브랜치 이름) git push --set-upstream origin (생성할 브랜치 이름)
log
-
log
- 커밋 해시는 커밋 메시지 옆에 있는 해시 값으로, git log 명령어를 사용하면 확인할 수 있다.git log
reflog
-
reflog
- 커밋 히스토리를 확인할 수 있다.git reflog
merge
-
merge
- 브랜치를 병합하는 작업이다.git merge (브랜치 이름)
이때 주의해야할 점은, 병합을 진행하고자 하는 브랜치로
checkout
하고 병합을 진행해야 한다는 것이다.👉 예를 들어,
main
브랜치에서feature
브랜치를 병합하고 싶다면,main
브랜치로checkout
하고 병합을 진행해야 한다.
reset
-
reset
- 커밋 히스토리를 초기화하는 작업이다.git reset (커밋 해시)