본문 바로가기
GIT

[GIT] Git 명령어

by 무사뎀벨레 2021. 7. 16.


형상관리 작업을 할 때 Source Tree, GitHub Desktop, GitKraken 등의
GIT GUI 툴을 많이 사용하지만 그렇지 않고,
Git Bash, Windows Powershell 등 에서 Git 명령어를 통해
직접 형상관리를 하기 위한 Git 명령어에 대한 글입니다.



 

1. git init


  • 로컬 저장소로 사용할 폴더를 생성하여 해당 폴더로 이동 후 해당 명령어를 사용합니다.
  • Initialized empty Git repository in [경로] 라는 메시지가 노출되고, .git 이라는 숨겨진 폴더가 생성됩니다.
  • 만약 init을 취소하려면 rm -r .git 명령어를 입력합니다.
  • .git 폴더 내부에는 저장소에 필요한 뼈대(Skeleton) 파일이 존재합니다.
//.git 폴더 생성
$ git init
Initialized empty Git repository in [현재 위치하고 있는 경로]/.git/

//init 취소
$ rm -r .git

해당 위치에 .git 폴더 생성

 

.git 폴더 내부 모습

 

 

 

2. git config


  • Git에 관한 설정을 추가하거나 변경, 삭제하는 명령어입니다.
  • Git에는 System설정 파일과 Global설정 파일과 Local설정 파일이 존재합니다.
  1. System 설정 파일 : 모든 System 사용자에게 적용(전체 사용자에게 영향을 미칠 수 있는 공간에 위치),               
    git config --system 으로 시작하는 명령어로 System 설정 파일을 수정
  2. Global 설정 파일 : 한 사용자(user)의 전체 Git 저장소에 적용(한 사용자의 전체 저장소에 영향을 미칠 수 있는 공간에 위치), git config --global 으로 시작하는 명령어로 Global 설정 파일을 변경
  3. Local 설정 파일 : 하나의 저장소에만 적용(한 저장소에 영향을 미칠 수 있는 공간에 위치),
    git config --local 으로 시작하는 명령어로 Local 설정 파일을 변경
  • ex) git config --global user.email "you@example.com" 과 git config --global user.name "Your Name" : 이메일과 이름을 Global 설정 파일에 저장
  • system, global, local 명령어를 입력한 후, git config --list 명령어를 입력하면 입력된 config 정보가 나타납니다.
//config 정보
$ git config --list

//config 설정 파일이 없다면, 아래와 같은 메시지 노출
*** Please tell me who you are.

RUN
 
  git config --global user.email "you@example.com"
  git config --global user.name "Your name"
  
to set your account's default identity.
Omit --global to set the identity only in this repository.

 

 

3. git clone


  • 저장소 복제, 다운로드 명령어 입니다.
  1. git clone [https:... URL] : 기존 소스 코드 다운로드/복제
  2. git clone /로컬/저장소/경로 : 로컬 저장소 복제
  3. git clone 사용자명@호스트:/원격/저장소/경로 : 원격 저장소 복제

 

 

4. git status


  • 로컬의 현재 상태를 보여주는 명령어 입니다.
  • Untracked, Tracked 상태를 통하여 파일 상태를 알려줍니다.

- Untracked 상태​ : 단어의 의미대로 '추적되지 않고 있는'파일 이라는 의미, 즉 파일 생성 후 한번도 add하지 않은 상태

- Tracked 상태 : 파일이 Git에 의해 그 변동사항이 추적되는 상태, 이 상태는 특성에 따라 3가지로 나뉜다.

   1) Staged 상태 : 파일 수정 후 staging area에 올라가 있는 상태

   2) Unmodified 상태 : 현재 파일이 최신 커밋 파일과 비교하여 바뀐게 없는 상태

   3) Modified 상태 : 현재 파일이 최신 커밋 파일과 비교하여 바뀐게 있는 상태

 

 

4-2. Git의 4가지 영역

1. Working Directory(작업 영역)

  • 실제 프로젝트 디렉토리
  • .git 이력과 관련 정보가 저장 된 .git을 제외한 모든 영역
  • 실제 코드의 추가, 수정, 삭제 작업이 이루어지는 영역

 

2. Repository(저장소)

  • 파일, 폴더를 변경 이력별로 저장해 두는 곳
  • .git 디렉토리 내 존재하며 2가지로 나뉨

1) Local Repository : 개인 PC에 파일이 저장되는 개인 저장소

2) Remote Repository : 원격 저장소 전용 서버에서 관리되며, 여러 사람들과 같이 공유도 가능한 저장소

 

3. Index(Staging Area)

  • Working Directory에서 Repository로 정보 저장 전 준비 영역
  • 파일 상태를 기록, 스테이징 한다고 표현
  • .git/index 파일로 관리

1) git add : Working Directory 에서 Index 영역으로 정보가 저장됨

2) git commit​ : Index 영역에서 Repository로 정보가 저장됨

 

4. Stash
- 현재 stage에 있는 파일(add 하기 전 현재 수정된 파일들)을 임시적으로 저장할수있다.

  • 위의 3가지 영역과 다른 별개의 임시 영역
  • 임시적으로 작업사항을 저장해 두고 나중에 꺼내올 수 있음

1) git stash

 - stash에 저장하기 

2) git stash save '설명 추가'

 - 설명 추가하여 stash 저장하기 
3) git stash list

 - stash 목록보기

4-1) git stash apply 혹은 git stash apply stash@{숫자}

 - 가장 최근의 stash 내용 혹은 지정된 stash가 적용되고, 적용 후에도 stash 리스트에 유지
4-2) git stash pop 혹은 git stash pop stash@{숫자}

 - 가장 최근의 stash 내용 혹은 지정된 stash가 적용되고, 적용 후에 stash 리스트에서 삭제

4-3) git stash drop 혹은 git stash drop stash@{숫자}

 - 가장 최근의 stash 내용 혹은 지정된 stash를 삭제

5) git stash clear

 - stash의 모든 기록이 삭제

 

 

5. git add


  • 파일을 준비영역(Staging Area)으로 추가하는 명령어 입니다.
  1. git add a.html
    - a.html파일만 추가
  2. git add * 혹은 git add . 
    - 워킹 디렉토리 내 모든 파일 추가
    - 아래 링크에서 git add * 와 git add . 의 차이를 확인할수있습니다 :)
    https://hajoung56.tistory.com/56

 

3. [Git] git add * 시 경고문 발생(The following paths are ignored by one of your)

작업한 파일들을 커밋하기 위해서, git add * 명령어를 통하여 스태이징 하곤합니다.  종종  git add * 명령어를 사용할때 아래와 같은 오류 메시지가 노출됩니다. 이 말은 .gitignore에 현재 staged로 변

hajoung56.tistory.com

 

6. git commit


  • 준비영역(Staging Area)의 파일을 로컬 저장소에 저장하는 명령어 입니다.

1) git commit
 - 에디터가 출력되고, 에디터에서 커밋 메시지 입력 후 저장하면 커밋

2) git commit -m "커밋 메시지"
 - 간단한 커밋 메시지를 입력 후 커밋

3) git commit -a
 - 자동으로 add를 진행한 후 커밋

  • 별도의 add명령어를 사용하지 않고 수정된 파일에 대해 add, commit을 한번에 수행
  • 한번도 add 되지 않은 파일은 add를 따로 작업 해줘야 함

4) git commit -am "커밋 메시지"
 - a, m의 옵션을 합친 형태

5) git commit -v
 - 커밋 메시지에 diff의 내용 포함

 

 

 

7. git pull


  • 갱신 및 병합 명령어 입니다.
  • 원격 저장소의 변경 내용이 현재 디렉토리에 가져와지고(fetch) 병합(merge) 됩니다.
  • git pull 뒤에 --rebase 를 붙여 옵션을 줄수있습니다.
     - git pull --rebase 의 형태로 명령어를 입력할수있습니다.
    https://hajoung56.tistory.com/5 에서 더 자세한 내용을 확인할 수 있습니다 :)
 

4. git merge와 git rebase의 차이

git에서는 브랜치를 병합할 때 사용하는 두 가지 방법이 있습니다. 1. git merge 2. git rebase 1. git merge //1. master 브랜치로 이동 $git checkout master //2. 병합할 브랜치를 master브랜치에 merge $git..

hajoung56.tistory.com

 

8. git push


  • 원격 저장소에 저장하기 위한 명령어 입니다.
  • push 하기 전 내 코드는 commit 되어있어야 합니다.
  1. git push origin master
     - master브랜치에 push
  2. git push <원격저장소 이름> <branch 이름> 의 형식으로 사용합니다.
  3. git push -u <원격저장소 이름>
     - push한 원격저장소에 앞으로 자동 연결되는 명령어
  4. git push -u origin master
     - 이 명령어를 실행하면, 다음부터는 'git push' 명령어 만으로 현재 commit에 올라가 있는 내 코드들을 자동으로 해당 브랜치(여기서는 master)로 보내준다는 의미

 

9. git diff


  • 워킹 디렉토리와 다른 커밋을 비교하는 명령어 입니다.
  1. git diff​
     - 현재 브랜치의 마지막 커밋과의 차이점 비교
  2. git diff [Commit ID]​
    - 특정 커밋과의 차이점 비교
  3. git diff [Commit ID] -- [파일 경로]
     - 특정 커밋과 특정 파일의 차이점 비교

 

10. git branch


  • 브랜치를 생성, 이동, 수정, 삭제하는 명령어 입니다.
  1. git branch
     - 브랜치 목록 보기
  2. git branch [브랜치명]
     - [브랜치명]으로 브랜치 생성
  3. git checkout [브랜치명]
     - [브랜치명]으로 브랜치 이동
  4. git checkout [Commit ID]​
     - 특정 커밋으로 워킹 디렉토리 변경
  5. git checkout -b [브랜치명]​
     - [브랜치명]으로 브랜치 생성 후 이동
  6. git branch -m [브랜치 명] [바꿀 이름]
     - 브랜치 명 수정
  7. git branch -d [브랜치 명]
     - 브런치 삭제
  8. git push --set-upstream <원격저장소 이름> <branch 이름>
    - 처음 원격 저장소에 올리기 위한 명령어 입니다.

    8-1. 브랜치 생성 후엔 원격 레포지토리(github)에는 새로 생성된 브랜치의 정보가 없기 때문에

로컬 레포지토리를 리모트 레포지토리로 처음 push할 경우 --set-upstream 옵션을 주어야

    8-2. 그래야 tracking 정보 설정이 되어 git push만 사용하여도 push가 됨

 

 

11. git log


  • 로컬 저장소의 커밋 이력을 조회하는 명령어 입니다.
  1. git log -p -2
    -p는 각 커밋의 diff 결과를 보여줌, -2는 최근 두 개의 결과만 보여주는 옵션
  2. git log --stat
    히스토리의 통계를 보여주는 옵션, 각 커밋의 통계 정보를 조회할 수 있음
  3. git log --shortstat
    --stat 명령의 결과 중에서 수정한 파일, 추가된 라인, 삭제된 라인만 보여줌
  4. git log --pretty=oneline
    각 커밋을 한 라인으로 보여줌, 많은 커밋을 조회할 때 유용​ (oneline, short, full, fuller, format)
  5. git log --graph
    로그를 브랜치 별 그래프 이미지와 함께 보여줌

 

반응형

댓글