TIL) Git command

Solmii·2020년 6월 3일
0

Git

목록 보기
2/3
post-thumbnail

git command

push 전엔 pull이 있다!!!

내 로컬 파일에 있는 파일보다 깃허브에 있는 파일이 더 최신 파일일 수 있기 때문에! (특히 협업의 경우)

  • git status
    : 현재 나의 local folder와 git과의 싱크 상태를 체크해준다.

  • git fetch
    : git서버에서 최신 코드를 받아온다.

    pull과의 차이점?
    pull은 merge가 일어나고, fetch는 merge없이 최신 코드만 가져온다.

  • git rm
    : 제거 관련 명령어

    • --cached파일 이름 : add된 파일 제거
      (staging area에서만 제거하고, working directory는 유지)

pull & Clone command

  • git pull
    : 지정해놓은 Repository에서 파일을 pull

    • origin master : 원격 저장소의 master 파일을 pull
    • 가지 이름 : 원하는 가지에서 pull (원격 저장소 이름도 가능)
    • --rebase : 기본 방식인 merge가 아니라 rebase 방식으로 pull
  • git clone

    • -b : 특정 브랜치를 clone

commit command

  • git add파일 이름
    : local folder와 git Repository 사이에 변경된 파일을 tracking 해준다.
    - --update : 현재 Git이 추적하고 있는 파일만 add
    - . : 스테이터스에서 체크한 다수의 파일들을 모두 선택하여 add
    - *.txt : 모든 text 파일을 add

  • git commit

    : 인식 할 수 있는 commit을 달아준다.

    • -m "이번 확정본에 대한 설명" : 간단한 커밋 메세지
    • -amend "이번 확정본에 대한 설명" : 마지막 커밋 메세지 수정

commit 까지 완료하면 변경된 파일이 HEAD에 반영되지만, push하기 전까지는 원격저장소에는 반영되지 않는다.

push command

  • git push

    : 실제로 git에 push를 요청한다.
    ( HEAD에 저장되어 있는 변경 내용을 원격 서버로 전송 )

    • origin : 원격 저장소에 push
    • master : master 가지에 push
    • 가지 이름 : 원하는 가지에 push (원격 저장소 이름도 가능)
    • --delete : 원격 저장소의 브랜치 삭제

branch command

저장소를 새로 만들면 기본으로 master 가지가 만들어진다.
새로운 버전, 새로 시도하고싶은 기능 등이 있다면 다른 가지를 이용해서 개발을 진행하고, 나중에 개발이 완료되면 master 가지로 돌아와 병합하면 된다.

  • git checkout
    : 로컬의 변경 내용을 변경 전 상태HEAD 로 되돌려준다.
    (단, 이미 인덱스에 추가된 변경 내용과 새로 생성한 파일은 그대로 남는다.)

    • master : master 가지로 다시 돌아온다.

    • -b가지 이름 : 원하는 가지 이름으로 가지를 만들고 갈아탄다.

      ⇒ 만약에 master에서 실수로 작업했다면? 이 명령어를 사용하면, 입력한 브렌치로 내가 수정한 파일들을 모두 가지고 옮겨 간다!!
      git checkout -b가지 이름 한 다음에 이동한 브렌치에서 add + commit 하면 master에 작업 내역이 이동된다.

    • --파일 이름 : working directory에서 작업한 내용을 버린다.

  • git branch -d가지 이름
    원하는 가지 이름의 가지를 삭제한다.

변경 전 상태로 되돌아가되, git checkout 과 달리 로컬에 있는 모든 변경 내용과 확정본을 포기하려면, git reset을 사용하자!

  • git fetch origin
    : 원격 저장소의 최신 이력을 가져온다.

  • git reset --hard원격 저장소 이름 / 가지 이름
    : 로컬의 변경 내용을 변경 전 상태HEAD 로 되돌려준다.

    (이미 인덱스에 추가된 변경 내용과 새로 생성한 파일도 모두 사라진다.)

git resetgit checkout의 차이점


merge command

  • git merge가지 이름

    pull 이든 merge 든, 해당 명령어를 사용하면 git은 자동으로 변경 내용을 병합해준다.

충돌(conflicts)

merge 과정에서 종종 발생하는 충돌은, 현재 브랜치와 병합 하고자 하는 브랜치에서 같은 파일의 같은 위치를 수정했을 경우 발생하며, 충돌된 부분을 사용자가 직접 수정해서 해결해야 한다.

  • 충돌을 해결한 후에 git add파일 이름

    : 변경 내용 병합

  • git diff원래 가지비교 대상 가지

    : 변경 내용을 병합하기 전에, 해당 명령어도 어떻게 바뀌었는지 비교

tag command

  • git log

    log 명령어로 확정본 식별자를 얻는다.

  • git tag 1.0.0확정본 식별자

    : tag가 가리킬 확정본 식별자 ( ex : git tag 1.0.0 1b2e1d63ff )

원격 저장소에서 파일을 가져오는 3가지 방식

  • zip 파일
    • .git 폴더가 없는 채로 소스만 받을 수 있으므로, local에서 Git을 새롭게 꾸려나가야 한다.
  • git clone
    • .git 폴더까지 포함해서 소스를 받을 수 있다.
      (해당 저장소를 그대로 가져올 수 있음)
  • git pull
    • remote repository에 저장된 파일을 가져와 local repository의 내용을 갱신한다.

git pull = git fetch + git merge
그래서, 병합 명령을 실행할 때 rebase 사용을 권장한다.
(merge 명령어보다 히스토리( log )가 깔끔해진다)

  • 해당 remote repository에 권한이 있어야 pull 명령어를 실행할 수 있다.

push 하고 나서

command + 주소 클릭하면 깃허브 PR 화면으로 바로 이동된다.

PR 신청하고 merge 승인 되면 그제서야 master에 내가 작업한 내역이 병합되는것!

profile
하루는 치열하게 인생은 여유롭게

0개의 댓글