본문 바로가기

Git

[Git] 기본 명령어 정리

 · Git 기본 명령어 정리 


Git의 기본 명령어를 정리 해보겠습니다.


  1   Git이란?


깃은 리눅스 개발자인 리눅스코발즈가 개발한 코드 형상관리 프로그램입니다.

아래 사이트에서 다운받을 수 있습니다.



  2   명령어


  $ git init

현재 디렉토리를 Git Repository로 설정하는 명령어입니다.

디렉토리 내부에 .git 디렉토리가 생성되며 자동으로 master 브랜치가 생성됩니다.


  $ git status

현재 Repository의 상태를 보여주는 명령어입니다.

$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       index.txt   <-- [1]

nothing added to commit but untracked files present (use "git add" to track)

[1] index.txt가 빨간색으로 표시되어 있는데, 이 파일은 Working Diretory에 위치하고

Staging Area에는 추가되지 않은 상태를 가르킵니다. 'Add' 명령어를 이용하여 Staging Area로 올려주어야 합니다.


  $ git add

Working Diretory의 파일을 Staging Area로 옮기는 명령어입니다.


명령어

$ git add index.html
> index.html 파일을 Staging Area로 Add 시킵니다.
$ git add .
> 현재 디렉토리에 있는 add되지 않은 모든 파일을 Add 시킵니다.
git add -i
> Interactive 한 방법을 이용합니다. (선택해서 Add 시키는 등 여러가지 방법을 취할 수 있습니다.)
$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#       new file:   index.txt

#

- $ git status 명령어로 확인해보면 new file: ~~ 로 Repository에 Commit될 준비가 되어있는 파일을 확인할 수 있습니다

$ git rm --cached index.txt 를 입력하면 Staging Area에서 다시 Working Directory로 내릴 수 있습니다.


  $ git commit

Staging Area에 있는 파일을 Repository로 저장시키는 명령어입니다.


명령어

$ git commit
> vim 에디터가 출력되고 메시지를 입력 한 뒤 commit을 하게 해줍니다.
$ git commit -m "메시지"
> vim 에디터를 띄우지 않고 간략한 메시지를 작성 할 수 있는 커밋방법입니다.
git commit -a -m "메시지"
> Repository에 있는 파일을 수정 했을 때 이 명령어를 사용하여 commit 합니다.
$  git commit
[master (root-commit) 289c551] Add index.txt
 1 file changed, 0 insertions(+), 0 deletions(-)

 create mode 100644 index.txt

- 1개의 파일이 변경되었고 라인 변경은 없다. 삭제된 부분은 없다.

$ git commit -m "First Commit!!"
[master 5311d36] First Commit!!
 1 file changed, 0 insertions(+), 0 deletions(-)

 create mode 100644 about.html

- 메시지를 이용한 커밋


  $ git log

저장소에 잇는 Commit 이력을 조회할 수 있는 명령어입니다.


명령어

$ git log
> 커밋의 모든 상세 이력이 출력되는 로그입니다.
$ git log --oneline
> 커밋의 이력중 커밋ID, Title, Massage만 출력되는 로그입니다.
git log --oneline --decorate --graph --all
> 모든 커밋&브랜치의 로그를 출력합니다.
git log --index.txt
> 특정 파일의 변경 커밋을 조회합니다.


  $ git diff

다른 커밋과 Working Directory의 코드 차이점을 비교해주는 명령어입니다.


명령어

$ git diff
> 현재 브랜치의 마지막 커밋과의 차이점을 비교합니다.
$ git diff [Commit ID]
> 특정 커밋과의 차이점을 비교합니다. *Commit id) 235266 과 같이 commit당 발급되는 16진수로 이루어진 수 
git diff [Commit ID] -- [File root]
> 특정 커밋과 특정 파일의 차이점을 비교합니다.


  $ git branch

브랜치를 생성, 수정, 삭제 등을 하는 명령어입니다.


명령어

$ git branch
> 현재 만들어진 브랜치들을 조회합니다.
$ git branch [Name]
> [Name] 브랜치를 생성합니다.
$ git branch -d [Name]
> [Name] 브랜치를 삭제합니다.
$ git branch -m [Before Name] [After Name]
> 브랜치의 이름을 변경합니다.

  $ git checkout

Working Directory의 소스를 특정 커밋으로 변경하는 명령어입니다.


명령어

$ git checkout [branch Name]
> 특정 브랜치로 Working Directory를 변경합니다.
$ git checkout [Commit ID]
> 특정 커밋으로 Working Directory를 변경합니다.
$ git checkout -- [File root]
> 특정 파일을 해당 브랜치 또는 커밋의 상태로 변경합니다.
$ git checkout [Commit ID] -- [File root]
> 특정 파일을 특정 커밋의 상태로 되돌립니다.
주의) Checkout을 할 때 파일을 Commit 하지 않은 상태로 두고 진행하면 Checkout을 해도 파일은 같이 따라가게 됩니다.

  $ git marge

다른 두 개의 소스를 병합시키는 명령어입니다.


명령어

$ git marge [branch Name]
[branch Name]의 소스를 현재 브랜치와 병합시킵니다.
같은 파일이 마스터와 브랜치에서 둘다 수정되었을 경우 CONFLICT 에러가 발생합니다. (자동으로 병합 할 수 없다는 경고)
Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.
$ git status
# On branch master
# You have unmerged paths.
#   (fix conflicts and run "git commit")
#
# Unmerged paths:
#   (use "git add <file>..." to mark resolution)
#
#       both modified:      index.html
#

no changes added to commit (use "git add" and/or "git commit -a")

충돌이 발생하였을 때 문제의 파일을 확인 해보면 아래와 같이 수정이 되있습니다.

<<<<<<<<HEAD
(현재 브랜치에 포함된 내용)
== == == ==
(다른 브랜치에 포함된 내용)

>>>>>>>[branch Name]

적절히 수정하여 저장해주면 됩니다.




태그