본문 바로가기
개발환경

Git 사용법

by dragonDeok 2022. 5. 5.
728x90

Git 사용법

  • add
    - 변경된 파일의 내용을 index(Stage)로 보냄

  • commit
    - index의 내용을 HEAD(local repository)로 보냄

  • push
    - local repository -> remote repository 로 보냄

  • pull
    - remote repository -> local repository 로 보냄

push, pull 이해를 위한 사용 예시

ex)

집 <-> 회사 동시 작업하는 경우

 

1. 집에서 작업한 후 git push로 원격 저장소로 보냄

 

2. 회사에서 작업할 때 작업하기 전 git pull로 원격저장소 내용을 가져와서 동기화한 후 
    작업을 시작한다. 작업을 완료한 후 git push로 원격저장소로 새로운 버전을 보냄

3. 집에 와서 작업하기 전 git pull로 원격저장소 내용을 가져와서 동기화한 후 작업 시작
    회사에서와 마찬가지로 작업을 완료한 후 git push로 원격저장소에 새로운 버전을 보냄

 

git branch 사용 방법

명령어

  • git branch
    - 현재 branch를 확인

  • git branch [ 브랜치명 ]
    - 새로운 branch [브랜치명]을 생성

  • git checkout [ 브랜치명 ]
    - 현재 속한 branch를 브랜치명 branch로 바꿈

  • git log --branches --graph --decorate --oneline
    - 현재 브랜치들의 흐름을 그래프로 간단히 보여줌

  • git branch -d [ 삭제할 브랜치명 ]
    - 브랜치 삭제

branch 사용 예시

예를 들어 현재 브랜치가 main, exp 두 개가 있다. 
두 개의 브랜치에서 한 일을 병합하고 싶을 때 어떻게 해야 할까?
만약 main에서 병합하고 싶다면 main 브랜치에서
$git merge exp 명령어를 입력한다.
    ->    exp 브랜치의 내용과 main 브랜치에서의 내용이 main 브랜치에서 병합된다.
    ->    < 주의!! > exp 브랜치에는 병합된 내용이 아닌 exp에서 수정한 내용만 들어있다.

 

위의 내용을 직접 수행해보자. ( 서로 다른 브랜치에서 같은 파일을 수정한 후 수정 내용을 병합하는 과정 )

( 기본 브랜치 : main )

$git branch exp       ->        exp branch 생성

$git checkout exp   ->        exp branch로 가서 거기서 소스코드 변경

$git add test.c

$git commit -m "exp에서 변경"

 

$git checkout main       ->        main branch로 가서 거기서 소스코드 변경

$git add test.c

$git commit -m "main에서 변경"

$git merge exp               ->        exp와 main이 main branch에서 병합됨 ( 겹치는 부분을 고친 게 아니라면 자동으로 병합해줌 )

$git push                         ->        병합한 최종본을 원격저장소로 push    

 

 

 

처음 local에서 Git 사용할 때 Git 세팅방법

1. git config -global user.name "git 아이디"

2. git config -global user.email "git 이메일"

3. git config -list  ->   아이디, 이메일이 잘 들어갔는지 정보 확인

 

 

내 로컬에 있는 프로젝트를 Git에 올리는 방법

( 1, 4번은 처음에만, 나중에 사용할 때는 2, 3, 5번 반복 )

  1.  Github에 저장소 작성 또는 복제 ( git init OR git clone )
    git init          :          현재 작업중인 디렉토리를 Git 저장소로 변환한다.

  2.  파일의 생성 / 변경 / 삭제를 index(stage)에 추가
    git add [ 파일명 ] 

  3.  변경 결과를 로컬 저장소에 커밋
    git commit -m "Comment" ( git status 명령어로 잘 올라갔는지 확인 가능 )

  4.  원격 저장소에 push로 반영하기 전 local repository에 remote repository를 연결
    git remote add origin [  https://github.com/username/repositoryName ]
    ( 연결 후 잘 연결됐는지 git remote -v 로 확인 가능 )


  5. 로컬 저장소를 push해서 원격 저장소에 반영 ( git push )
    git push        origin          [브랜치명]
                      [원격저장소]

 

 

자주 사용하는 Git 명령어

  • git status
    - 저장소의 상태를 확인하는 명령어 ( 현재 branch의 이름, 추가/변경된 파일 및 디렉토리 목록 표시 )

  • git add
    - 파일 or 디렉토리를 index(stage)에 추가하는데 사용하는 명령어

  • git checkout
    - 로컬 저장소의 현재 속한 branch를 바꿔줌

  • git clone
    - 기존 원격 저장소를 로컬에 다운로드하기 위해 사용
       ex) github에 공개된 저장소를 자신의 컴퓨터에 다운로드할 때 사용

  • git remote
    - 원격 저장소를 조작하는데 사용
      git remote -v                                                 :        원격 저장소에 대한 자세한 목록 표시
      git remote add origin [원격저장소 URL]       :        원격 저장소를 추가
      git remote remove [ name ]                         :        원격 저장소 제거

  • git reset
    - 로컬 저장소의 커밋을 취소하기 위해 사용 ( 잘못 커밋했거나 수정내용 누락이 있을 때 자주 사용 )

  • git pull
    - 원격 브랜치의 저장소를 가져옴
       ex) 로컬 저장소 master 브랜치에 원격 저장소 origin의 master 브랜치 가져오는 경우
              -> git checkout master git pull origin master

 

Git 사용시 자주 발생하는 에러 상황

1.  원격저장소에 local에 없는 새로운 파일이 생겼을 때 local에서 그걸 알지 못하고 그냥 push 하는 경우

해결 방법
- pull로 원격 저장소의 데이터들을 가져와 내 local 저장소와 원격 저장소를 동기화 시킨 후
   push로 수정사항을 원격 저장소에 보내면 해결된다.