728x90
Git의 3가지 상태
git에서 관리되는 파일들은 modified, staged, commited라는 3가지 상태를 가진다.
- modified: 파일이 수정된 상태
- staged: 수정된 파일이 staging area로 올라간 상태
- 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)
알아두면 유용한
- 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 |
댓글