본문 바로가기

git

git 기본 명령어

728x90
반응형

목차

     

    git init


    현재 디렉토리를 git 레포지토리로 설정하는 명령

    % git init
    힌트: Using 'master' as the name for the initial branch. This default branch name
    힌트: is subject to change. To configure the initial branch name to use in all
    힌트: of your new repositories, which will suppress this warning, call:
    힌트:
    힌트: 	git config --global init.defaultBranch <name>
    힌트:
    힌트: Names commonly chosen instead of 'master' are 'main', 'trunk' and
    힌트: 'development'. The just-created branch can be renamed via this command:
    힌트:
    힌트: 	git branch -m <name>
    /Users/heypli/git_test/.git/ 안의 빈 깃 저장소를 다시 초기화했습니다

    .git 레포지터리가 생기고 마스터 브랜치가 할당된다.

    git init 이후 폴더가 자동으로 생성된다.

    [core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true

    config 파일 안에 들어있는 내용이다.

    사용자가 변경하거나 수정할 부분은 딱히 없다.

    hey-pli-MacBook-Pro .git % git config user.name heypli
    hey-pli-MacBook-Pro .git % cat config
    [core]
    	repositoryformatversion = 0
    	filemode = true
    	bare = false
    	logallrefupdates = true
    	ignorecase = true
    	precomposeunicode = true
    [user]
    	name = heypli

    user를 추가하면 config파일에도 추가된 걸 확인할 수 있다.

     

     

    .gitignore


    git을 이용해서 파일관리하지 않을 파일을 지정한다.

    로그성 파일이나 특정 os, 플랫폼에 의존적인 파일은 제외하는 것이 좋다.

     

    ex) DS_Store, log, Thumb.db, settings(eclipse) 등드 

     

    별도로 관리가 필요한 파일 

    => 프로젝트 관련 모든 파일 

     

    .gitignore 파일 생성

    % vim .gitignore
    
    ######################
    .DS_Store
    *.log
    *.iml
    temp/

     

    gitignore 테스트

    % touch .DS_Store
    % echo "test" > test.html
    % git status
    추적하지 않는 파일:
      (커밋할 사항에 포함하려면 "git add <파일>..."을 사용하십시오)
    	.gitignore
    	test.html
    
    커밋할 사항을 추가하지 않았지만 추적하지 않는 파일이 있습니다 (추적하려면 "git
    add"를 사용하십시오)

    gitignore파일에 있는 .DS_Store파일은 보이지 않는다.

     

     

    git status


    레포지터리 상태를 보여주는 명령 

    % echo "<html> </html>" > inex.html
    % git status
    현재 브랜치 master
    
    아직 커밋이 없습니다
    
    추적하지 않는 파일:
      (커밋할 사항에 포함하려면 "git add <파일>..."을 사용하십시오)
    	index.html
    
    커밋할 사항을 추가하지 않았지만 추적하지 않는 파일이 있습니다 (추적하려면 "git
    add"를 사용하십시오)

     

    index.html을 add를 통해서 추가할 경우

    % git add index.html
    % git status
    현재 브랜치 master
    
    아직 커밋이 없습니다
    
    커밋할 변경 사항:
      (스테이지 해제하려면 "git rm --cached <파일>..."을 사용하십시오)
    	새 파일:       index.html

     

    새로운 파일을 추가했을 때 

    % echo "<html><h1>hi </h1></html>" > hi.html
    % git status
    현재 브랜치 master
    
    아직 커밋이 없습니다
    
    커밋할 변경 사항:
      (스테이지 해제하려면 "git rm --cached <파일>..."을 사용하십시오)
    	새 파일:       index.html
    
    추적하지 않는 파일:
      (커밋할 사항에 포함하려면 "git add <파일>..."을 사용하십시오)
    	hi.html

    add를 하지 않으면 커밋/추적할 수 없다.

     

    git add


    working directory파일을 staging area로 옮기는 명령 

    % git add <파일명>
    % git add index.html
    % git add # 현재 디렉터리에 있는 추적하지 않는 파일

     

    임의의 파일 두 개를 생성한다. 

    % touch index.html
    % touch hi.html
    % git status
    현재 브랜치 master
    
    아직 커밋이 없습니다
    
    추적하지 않는 파일:
      (커밋할 사항에 포함하려면 "git add <파일>..."을 사용하십시오)
    	hi.html
    	index.html
    
    커밋할 사항을 추가하지 않았지만 추적하지 않는 파일이 있습니다 (추적하려면 "git
    add"를 사용하십시오)

     

    index.html 파일만 add해서 staging area로 옮긴다.

    % git add index.html
    % git status
    현재 브랜치 master
    
    아직 커밋이 없습니다
    
    커밋할 변경 사항:
      (스테이지 해제하려면 "git rm --cached <파일>..."을 사용하십시오)
    	새 파일:       index.html
    
    추적하지 않는 파일:
      (커밋할 사항에 포함하려면 "git add <파일>..."을 사용하십시오)
    	hi.html

     

    staging area에서 해제 

    % git rm --cached <파일>
    % git rm --cached index.html
    rm 'index.html'
    % git status
    현재 브랜치 master
    
    아직 커밋이 없습니다
    
    추적하지 않는 파일:
      (커밋할 사항에 포함하려면 "git add <파일>..."을 사용하십시오)
    	hi.html
    	index.html
    
    커밋할 사항을 추가하지 않았지만 추적하지 않는 파일이 있습니다 (추적하려면 "git
    add"를 사용하십시오)

     

    모든 파일을 스테이징 영역으로 옮긴다.

    % git add .
    # 해제 하는 방법
    % % git rm -r --cached .
    rm 'hi.html'
    rm 'index.html'

     

    interactive를 이용해서 파일 커밋

    % git add -i

     

     

    git commit


    staging area에 있는 파일을 레포지터리에 저장.

    % git commit
    % git commit -m [커밋메시지]
    % git commit -a -m [커밋 메시지]

    파일을 add 한 뒤 git commit을 입력하면  vim editor창이 출력된다.

    맨 위에 커밋 메시지를 작성한다. 

     

    입력 메시지가 간단한 경우

     % git commit -m "Add hi.html"
    [master ad7ccac] Add hi.html
     1 file changed, 0 insertions(+), 0 deletions(-)
     create mode 100644 hi.html

    -m 옵션을 이용해서 간편하게 등록할 수 있다.

     

     

    이미 커밋된 파일을 수정하는 경우

    % echo "<html></html>" > index.html
    % git status
    현재 브랜치 master
    커밋하도록 정하지 않은 변경 사항:
      (무엇을 커밋할지 바꾸려면 "git add <파일>..."을 사용하십시오)
      (use "git restore <file>..." to discard changes in working directory)
    	수정함:        index.html
    
    %  git commit -a -m "index.html 수정"
    [master f3cc72d] index.html 수정
     1 file changed, 1 insertion(+)

                                      

    git log


    저장소에 있는 커밋 이력을 조회하는 명령

    #현재 브랜치에 커밋이력을 상세히 조회
    % git log
    # 커밋 이력 중 커밋id, title message만 조회
    % git log --oneline
    # 모든 브랜치 이력조회
    % git log --oneline --decorate --graph --all
    #특정 파일 변경 커밋조회
    % git log -- index.html

     

     

    명령어 사용 방법

    % git log
    commit d606628454a7f254501e874be3d335798724c52a (HEAD -> master)
    Author: heypli <heypli@naver.com>
    Date:   Tue Jul 19 14:51:09 2022 +0900
    
        modified index.html
    
    commit aae6b664c2d7fac4704c409f107fff71eac1afe5
    Author: heypli <heypli@naver.com>
    Date:   Tue Jul 19 14:50:09 2022 +0900
    
        add file
    
    commit e4df50f51a8d802acbe90f17290aeeb1467df625
    Author: heypli <heypli@naver.com>
    Date:   Tue Jul 19 14:49:37 2022 +0900
    
        add index.html

    상세 정보가 조회된다.

    % git log --oneline
    d606628 (HEAD -> master) modified index.html
    aae6b66 add file
    e4df50f add index.html

    타이틀메시지 확인 가능 

    % git log -- index.html
    commit d606628454a7f254501e874be3d335798724c52a (HEAD -> master)
    Author: heypli <heypli@naver.com>
    Date:   Tue Jul 19 14:51:09 2022 +0900
    
        modified index.html
    
    commit e4df50f51a8d802acbe90f17290aeeb1467df625
    Author: heypli <heypli@naver.com>
    Date:   Tue Jul 19 14:49:37 2022 +0900
    
        add index.html

    index.html파일의 변경이력 조회 가능 

     

    git diff


    commit된 파일의 내용과 working directory 파일 내용을 비교하는 명령어 

    % git diff
    
    # 특정 커밋과 비교
    % git diff [commit id]
    
    # 특정 커밋의 특정 파일과 비교
    % git diff [commit id] -- [파일명]

     

     

    git diff > 변경된 파일이 있을 경우 변경된 내용 표시

     

    git diff [commit id] > 특정 커밋과 비교 

     

    git diff [commit id] -- [파일명] > 특정 커밋의 특정 파일과 비교 ( -- 뒤에 한 칸 띄워야함)

     

     

    git branch


    깃 브랜치는 개발을 독립적으로 진행하기 위한 작업 개념 

    여러 작업을 동시에 진행할 수 있다.

    출처 : 누구나 쉽게 이해할 수 있는 git 입문

     

    # 브랜치 생성
    % git branch [branch name]
    
    #브랜치 삭제 
    % git branch -d [branch name]
    
    # 브랜치 이름 변경
    % git branch -m [branch name]

     

    branch생성시 아래와 같은 에러가 날 경우 

     

    fatal: 올바른 오브젝트 이름이 아닙니다: 'master'.
    fatal: Not a valid object name: 'master'.

    마스터 브랜치에서 최초의 커밋이후 브랜치를 생성할 수 있다. .gitnore 혹은 readme 파일이라도 커밋한 후 브랜치를 생성하자.

     

    git branch 생성

    % git branch dev

    branch가 생성된 것을  확인할 수 있다.

     

    git branch 삭제 

    % git branch -d dev

     

    git branch 이름 변경

    % git branch -m dev develop

     

     

     

     

    git checkout


    working directory의 소스를 특정 커밋이나 브랜치로 변경하는 명령어 

     

    % git checkout [branch]
    
    % git checkout [commit id]
    
    # 특정 파일을 해당 브랜치, 커밋 상태로 변경 
    % git checkout -- [파일 경로 ]

     

    master branch에 아무것도 없는 index.html을 만든 후 브랜치를 변경한다.

    % touch index.html
    % git checkout dev
    'dev' 브랜치로 전환합니다

     

    index.html 파일에 태그를 추가한 후 커밋한다.( 커밋하지 않으면 수정된 파일은 브랜치를 바꿔도 유지된다.)

    % git checkout dev
    'dev' 브랜치로 전환합니다
    % echo "<html></html>" > index.html
    % git commit -m "add tag"
    [dev ff82619] add tag
     1 file changed, 1 insertion(+)

     

    master 브랜치로 넘어와 index.html을 확인하면 파일에 아무것도 없다.

    % git checkout master
    'master' 브랜치로 전환합니다
    % cat index.html

    해당 브랜치에서 작업하면 해당 브랜치에만 존재한다.

     

     

     

    git merge


    두 개의 브랜치의 소스를 병합하는명령

     

    % git checkout master
    % git merge dev

    master브랜치에 dev소스가 병합된다.

     

    같은 파일에 같은 부분을 변경하는 경우 git에서 자동머지를 할 수 없다.

     

    해당 파일을 확인해서 어떤 부분을 커밋할건지 설정한다.

    <html><h1>hello</h1></html>

     

     

    출처: https://bnzn2426.tistory.com/44 [보통의 개발자:티스토리]

     

    참고 

    https://backlog.com/git-tutorial/kr/stepup/stepup1_1.html

     

    728x90
    반응형