IT/Git
[Git] git 명령어 정리
Jo.o
2020. 1. 22. 09:13
반응형
2020/01/21 - [Git] - [Git] git 4개의 공간
저장소 초기화
mkdir <폴더명>
cd <폴더명>
git init
저장소 복제
git clone <저장소 url>
새로운 파일 추가/추적 (Staging Area 추가)
- 파일 또는 폴더를 Tracked 상태로 만든다.
- 파일은 여러개 추가 가능하다.
- 폴더를 추가할경우 아래에 있는 모든 파일을 재귀적으로 추가한다.
git add <파일> <폴더>
추가 파일 취소 (Staging Area -> Unstage)
- 파일명을 작성하지 않을 경우 add한 파일을 전체 취소한다.
git reset HEAD <파일>
파일 상태 확인
git status
- 간단하게 확인
- -s 또는 --short 옵션을 준다.
git status -s
Staging Area의 파일 commit
- git add 명령으로 추가한 파일을 commit 한다.
- 쌍따옴표 안에 커밋 내용을 작성한다.
- 엔터로 줄 바꾸는 것도 가능하다.
git commit -m "<메시지>"
commit 메시지 수정
git commit --amend
commit 취소하기
- commit 취소 후 파일을 unstaged 상태로 변경
$ git reset HEAD^ //최신 커밋
$ git reset HEAD~2 //끝에서 2개의 commit 취소
- commit 취소 후 파일은 staged 상태를 유지
$ git reset --soft HEAD^
commit 합치기
- commit 목록 확인
$ git log --pretty=oneline
- 합치기 원하는 commit 개수를 rebase
$ git rebase -i HEAD~3 //최근 3개의 커밋을 rebase
- rebase 명령어 후 아래와 같이 출력되면 합치기 원하는 commit의 pick을 squash 또는 s로 변경해준다.
pick bf31dab task 1
pick 0fe2df8 task 2
pick 8cee3d0 task 3
# Rebase 453a845..ac6e3f0 onto 453a845 (3 command(s))
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# d, drop = remove commit
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out
pick bf31dab task 1
squash 0fe2df8 task 2
squash 8cee3d0 task 3
파일 올리기
git push origin <branch name>
파일 무시하기 (.gitignore 설정)
- Git을 통해 관리하지 않을 파일을 설정한다.
- 대부분 임시파일로 사용하는 파일, 자동으로 생성하는 문서들을 추가한다.
- Git 저장소에 commit하고 싶지 않은 파일을 실수로 commit하는 것을 방지할 수 있다.
- .gitignore파일을 생성 후 입력 규칙에 따라 작성한다.
- 아무것도 없는 라인이나, '#'으로 시작하는 라인은 무시한다.
- 표준 Glob 패턴을 사용한다. 프로젝트 전체에 적용된다.
- '/'로 시작하면 하위 디렉토리에 재귀적으로 적용되지 않는다.
- 디렉토리는 '/'를 끝에 사용하는 것으로 표현한다.
- '!'로 시작하는 패턴의 파일은 무시하지 않는다.
Working directory와 Staging Area 비교
- 파일을 수정했지만 staged 상태가 아닌 파일을 비교할 수 있다.
- Unstaged 상태인 것만 보여주므로 수정한 파일을 모두 Staging Area에 넣었다면 git diff는 아무것도 출력되지 않는다.
git diff
- Staging Area에 넣은 파일의 변경 부분을 보고 싶으면 --staged 또는 --cached 옵션을 사용한다.
git diff --staged
Git에 올린 파일 삭제
- 파일을 git remote(원격)에 push를 했을 경우 로컬 저장소에서 파일을 삭제해도 remote 저장소에서는 삭제되지 않는다.
- 원격 저장소와 로컬 저장소에 있는 파일을 삭제할 경우
$ git rm <파일>
- 원격 저장소에서만 파일을 삭제할 경우
$ git rm --cached <파일>
- 폴더를 삭제할 경우
$ git rm --cached -r <폴더>
반응형