하루하루

[Git] git 명령어 정리 본문

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 <폴더>

 

반응형

'IT > Git' 카테고리의 다른 글

[Git] git 4개의 공간  (0) 2020.01.21
[Git] git 저장소 만들기  (0) 2020.01.06
[Gerrit] push 오류 발생 시  (0) 2020.01.06
[Git] git 서버 사용을 위한 ssh 공개키 만들기  (0) 2020.01.06
[Git] git 최초 설정하기  (0) 2020.01.06