Git 사용법

청포도봉봉이·2022년 11월 24일
2

git

목록 보기
1/2
post-thumbnail

SVN만 써본 나.. git 사용법을 익혀보자!

git 기본 명령어

/프로젝트폴더로 가서

  • git init : 프로젝트 폴더에서 git을 사용하고 싶을때 최초로 사용
  • git add (파일명) : 원하는 파일을 commit 전에 올려놓음(기록해둠), 로컬 repository를 생성한다!
  • git commit -m '커밋 메세지' : 깃 커밋을 한다, 커밋 메세지와 함께

repository : 말 그대로 저장소
staging area : 커밋 전 깃에 올릴 작업물을 골라놓는 곳

만약 git add를 여러 파일을 하고 싶다면

  • git add app.txt app2.txt 처럼 사용하면 된다.
  • git add . : 현재 디렉토리에서 수정된 모든 파일을 add한다!
  • git status : 현재 staging area에 올라간 파일 또는 수정된 파일을 보여준다.
  • git log --oneline --all : 내가 커밋한 내역 전체를 보고 싶을때
  • git reset 파일명 : git add 특정 파일명 취소
  • git reset : 전체 add 취소
  • git diff : 최근 commit vs 현재파일 차이점
    - 터미널에서 j,k를 누르면 스크롤 가능 q누르면 종료
  • git difftool : diff가 불편해서 좀 더 편하게 볼 수 있다. (h,j,k,l 이 방향키다)
    - 종료방법은 :q or :qa 이다.
  • git difftool commit id : 커밋 id 시점과 내 소스를 비교한다.
    - 커밋 id 2개까지 가능 : 커밋 id 2개끼리 비교함
    - commit id는 git log --oneline --all 에서 볼 수 있다.

git branch

  • git branch branch명 : 작성한 branch명으로 branch를 생성해준다.

  • git switch branch명 : 작성한 branch명으로 이동한다.

  • git branch -v : 현재 브랜치 위치 상태를 표시한다.

  • git status : 현재 상태 확인

    (환경에 따라 main, master 브랜치라고 불린다)

  • coupon branch, main branch에서 각각 커밋 후 로그를 본다.

    • git log --online --all --graph : 그래프 옵션을 넣어서 그래프식으로 봄
    • HEAD 현재 위치를 의미한다 (내 머리라고 생각하면 편하다)
  • git checkout branch 이름 : git switch와 동일한 기능

  • git checkout -b branch 이름 : 브랜치 생성과 체크아웃을 동시에 한다.

  • git stash : 아직 마무리하지 않은 작업을 스택에 잠시 저장할 수 있도록 하는 명령어
    ex) 내가 현재 작업중이고 커밋을 안했는데 다른 브랜치로 이동해야할때 사용

  • git fecth : 원격 저장소의 데이터를 로컬에 가져오기만 하기

    • pull을 실행하면 원격 저장소 내용을 가져와 자동으로 병합작업을 실행하게 된다. 그러나 단순히 원격 저장소의 내용을 확인만 하고 로컬 데이터와 병합은 하고 싶지 않은 경우 fecth를 사용할 수 있다.
    • fetch 를 실행하면, 원격 저장소의 최신 이력을 확인할 수 있습니다. 이 때 가져온 최신 커밋 이력은 이름 없는 브랜치로 로컬에 가져오게 됩니다. 이 브랜치는 'FETCH_HEAD'의 이름으로 체크아웃 할 수도 있습니다
    • 사실 pull 이라는 것은 내부적으로 보면 fetch + merge 이기 때문이다.

git merge

  • 쿠폰 branch의 소스를 main branch에 합치고 싶을때는 기준이 되는 branch로 이동
    (main branch로 이동한다)
  • git merge 합칠 branch명 : main branch에 coupon branch소스 코드를 병합

서로 다른 소스를 수정했을 경우

(문제가 없다!!!!)

서로 같은 소스를 수정했을 때

(충돌이 난다!!!)


다양한 merge 방법들

case 1. 각 브랜치에 신규 commit이 있는 경우

case 2. 기준 브랜치에 신규 commit이 없는 경우

git rebase

  • Git에서 한 브랜치에서 다른 브랜치로 합치는 방법은 Merge와 Rebase이다.

  • Merge와 Rebase의 실행결과는 같지만 커밋 히스토리가 달라진다.

  • Merge는 쉽고 안전하지만 커밋 히스토리가 지저분할 수 있다.

  • Rebase의 base를 새롭게 설정한다는 의미로 이해하면 좋다.

  • git rebase [newbase]

    • 공통 커밋(C2)에서 시작해서 현재 체크아웃한 experiment 브랜치가 가리키는 커밋까지 diff를 차례대로 만들어 Patch에 저장
    • experiment브랜치가 master브랜치를 가리키게 함
    • C3에 Patch를 순서대로 적용

Github를 사용해보자!

git push

  • github를 가입한다.
  • repository를 만든다!
  • git branch -M main : 깃허브는 기본 브랜치 이름을 master가 아닌 main으로 강요함 그래서 브랜치 이름을 변경하는 명령어
  • git push -u 원격 repository 주소 branch명 : 원격 repository에 소스를 올림
  • 위와같이 push를 할때 원격 repository 주소가 기니까 변수를 만들어 사용한다.
    • git remote add 변수명 원격 repository 주소
    • ex) git push -u origin main
  • !!!! 하지만 git push -u 의 -u는 저장하라는 의미이다. 따라서
    • git push만 입력해도 된다

git clone, pull (타인 소스 받아올때!)

  • git clone 원격 repository 주소

타인이 내가 만든 원격 repository에 push를 하려면 작업자로 등록을 해야한다!

  • git pull 원격 repository 주소

이러면 원격저장소에 있던 모든 브랜치 내용을 가져와서 로컬저장소에 합치라는 뜻이다.
이걸 해주면 로컬이 최신상태가 되기 때문에 이제 git push가 가능하다.
결론은 변동사항이 생겼다면 git pull 하고 나서 git push 하면 된다.

(참고)

  • git pull 원격저장소주소 브랜치명 입력하면 특정 브랜치만 가져올 수 있다.
  • origin이라는 변수명을 등록해놨으면 당연히 사용가능하다.
  • 예전에 -u 했었으면 git pull, git push까지만 입력해도 잘된다.

git 강제 pull

  • git fetch --all : 깃 로그를 가져옴
  • git reset --hard master : 해당 브랜치에서 reset으로 최신을 가리킴
  • git pull : pull을 받는다

git 폴더별 계정을 다르게 세팅하는 방법

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com

  • 기본 루트 계정에 대한 세팅을 한다.

이렇게 되어 있는 상태라고 가정을 한다.

$ git config --local user.name "bongbong"
$ git config --local user.email bongbong@velog.io

  1. 다른 계정을 사용하고 싶은 프로젝트 폴더로 이동한다.
  2. 위의 명령어를 입력 한다. ( --local은 생략 가능)

git stash & git stash pop

git stash 명령어는 현재 작업 중인 변경 사항을 일시적으로 저장하고, 작업 디렉토리를 깨끗한 상태로 만들어줍니다. 이는 다른 브랜치로 전환해야 하거나, 급한 버그 수정을 해야 할 때 유용합니다.

git stash 명령어를 실행하면, 현재 작업 중인 변경 사항이 stash 스택에 저장됩니다. 이 stash 스택에는 여러 개의 stash를 저장할 수 있으며, 가장 최근의 stash가 가장 위에 위치하게 됩니다.

git stash pop 명령어는 stash 스택에서 가장 최근에 저장된 stash를 꺼내와서, 작업 디렉토리에 적용합니다. 이 명령어를 실행하면 stash 스택에서 해당 stash가 제거됩니다. 만약 스택에 여러 개의 stash가 있는 경우, git stash pop 명령어를 실행하면 가장 최근에 저장된 stash가 적용됩니다.

profile
자존감 낮아질 시간에 열심히 학습하고 커밋하자

2개의 댓글

comment-user-thumbnail
2022년 12월 14일

헷갈렸는데 이해가 쏙쏙이에요 좋은 글 감사합니다!

1개의 답글