본문 바로가기
Git

[Git] git 협업하기

by dev또리 2023. 5. 5.
728x90

 

 

Git의 3가지 상태

git에서 관리되는 파일들은 modified, staged, commited라는 3가지 상태를 가진다.

  1. modified: 파일이 수정된 상태
  2. staged: 수정된 파일이 staging area로 올라간 상태
  3. commited: 커밋된 상태. staged 상태인 파일만 커밋할 수 있다.

 

자주 사용하는 명령어들

 

1. 저장소

# 저장소 생성
$ git init

# 원격 저장소로부터 복제
$ git clone (url)

# 원격 저장소 추가
git remote add origin (url)

 

 

2. 파일 상태 변경

 

# 변경 상태 체크
git status

# 특정 파일 stage
git add (file-name)

# 변경된 모든 파일 stage
git add *

# 모든 stage 취소
$ git reset HEAD *

# 커밋
git commit -m "message"

# 원격 저장소로 커밋 업로드
git push origin (branch-name)

# 원격 저장소의 내용 가져와 병합하기
git pull origin (branch-name)

 

 

3. 커밋 (상세)

 

# 커밋 취소
$ git reset HEAD^ // 마지막 커밋 삭제
$ git reset --soft HEAD^ // 마지막 커밋을 staged 상태로 변경
$ git reset --hard HEAD // 마지막 커밋 상태로 되돌림

# 마지막 커밋 내용 변경 + 메세지 수정
$ git commit --amend

# 커밋 로그
$ git log // 모든 커밋로그 확인
$ git log -3 // 최근 3개 커밋로그 확인
$ git log --oneline // 각 커밋을 한 줄로 표시
$ git reflog // reset 혹은 rebase로 없어진 과거의 커밋 이력 확인

# 커밋 로그 (상세한 변경점 포함)
$ git show

# 커밋 합치기
$ git rebase -i HEAD~4 // 최신 4개의 커밋을 하나로 합치기

 

 

 

4. stash

 

# stage 상태인 파일들을 임시 저장
$ git stash

# stash 목록
$ git stash list

# stash 가져오기
$ git stash pop // 가장 최근의 stash를 가져오고 제거한다.
$ git stash apply // 가장 최근의 stash를 가져오고 제거하진 않는다.

# stash 삭제
$ git stash drop // 가장 최근의 stash를 삭제한다.

 

 

 

5. 브랜치

 

# 브랜치 이동
$ git checkout (branch-name)

# 브랜치 목록
$ git branch // 로컬
$ git branch -r // 리모트
$ git branch -a // 로컬 + 리모트

# 브랜치 생성
$ git checkout -b (branch-name)

# 리모트 브랜치 가져오기
$ git remote update // remote branch ref를 업데이트한다. (fetch)
$ git checkout -t origin/(branch-name)

# 브랜치 삭제
$ git branch -D (branch-name)

# 브랜치 이름 변경
$ git branch -m (branch-name)

 

 

알아두면 유용한

 

  1. git commit —amend를 사용해 커밋 메세지뿐만 아니라 내용을 수정, 추가할 수도 있다.
# 마지막 커밋 내용에 a.txt를 추가하고 메세지는 변경하지 않음.
$ git add ./a.txt
$ git commit --amend --no-edit // —-no-edit 를 적어주면 커밋 메세지 수정을 안하게 된다.

 

 

2. 리모트에 반영된 커밋들의 히스토리를 변경하지 말 것.
커밋 히스토리를 변경하면 작업중이던 다른 사람들도 영향을 받는다.

 

3. 커밋은 자주, push는 필요할 때만 하기.
일단 push를 해버리면 변경점을 되돌리기 쉽지 않다.
또, git 저장소에 CI/CD가 설정되어 있는 경우 불필요한 자원 낭비가 발생할 수 있다.

728x90

'Git' 카테고리의 다른 글

[Git] 커밋 메세지 작성 규칙  (0) 2023.09.11
[Git] git push 시 CRLF에러 해결하기  (0) 2023.08.07
[Git] 깃허브 웹 호스팅 github.io  (0) 2023.07.04
[Git] 명령어  (0) 2023.06.25

댓글