22일차 Git & Sourcetree & Git bash

LeeJaewon·2022년 11월 21일
0

소스트리를 사용할 경우에는 명령어가 필요하지 않지만 터미널이나 git bash에서 바로 git을 이용하기 위해서는 알아야 할 명령어가 많다. 차츰 익숙해지면 자연스럽게 사용할 수 있을것 같은데
지금은 잘 모르기 때문에 git 명령어에 대해 정리를 해봤다. 강의를 보면서 급하게 정리한거라서
제대로 정리가 안됐을것 같기도 한데 그건 차츰 git을 사용하면서 보완할 예정이다.

git bash

  • git init - 깃 저장소를 만듬
  • touch [파일명] 빈 파일을 만듬
  • git add 파일명 파일을 stage에 add 함
  • git status 현재 깃 상태 확인
  • git commit -m "commit메시지" 깃 커밋하기 (커밋메시지에 제목만 간단히 작성)
  • git commit -> enter 상세하게 커밋 작성할 때 vi편집기로 이동
    a or i or o 눌러서 편집기 하단 insert 상태가 된 걸 확인후 커밋작성, 작성후 esc 누름
    그 후 ':' + w 입력 ->커밋 작성 -> ':' + q입력 vi편집기 닫힘 ->한번에 입력하려면 : 엔터 후 wq 엔터 (저장하고 닫겠다.)

개발 과정중 여러개의 파일이 변경 되었을 경우

  • git add . 변경된 모든 파일 스테이지에 올리기(현재 작업 디렉토리에 있는)
    한번이라도 커밋을 했거나 git이 변경사항을 추적하고 있는 파일에 대해서는
    스테이지에 추가와 커밋을 한번에 할 수 있다.

  • git commit -am "커밋메시지"

  • git log 창에서 나가기 Q

  • git log --oneline : git log 한줄로 표시하기

  • git log -p(or --patch) 어떤 변경사항을 담고 있는지 표시

  • git log --graph(소스트리의 그래프처럼 터미널에서 표시)
    각각의 명령어 한줄로 표시할 수도 있음
    ex: git log --oneline --graph 한줄로 표시하면서 그래프 표시

git에 명령어로 tag 붙이기

  • git tag 버전
    ex: git tag v0.0.1
  • 특정 커밋에 태그달기
    git log 버전 해당커밋 해쉬(긴 해쉬로 할 수도 있고 짧은 해쉬로 할 수도 있음. git --oneline에서 나오는 해쉬)

태그 목록 조회

  • git tag (git tag --list, git tag -l)

태그 삭제

  • git tag --delete(-d) 태그이름(버전)

커밋끼리 무엇이 다른지 알아보는 방법

  • git diff : 지금까지 작업 디렉토리의 변경사항과 가장 최신 커밋의 차이를 보여줌
  • git diff --staged(or --cached) 스테이지와 가장 최신 커밋의 차이를 보여줌
    git diff A커밋해쉬 B커밋해쉬 (앞 뒤 순서 바뀌면 결과도 달라짐) : B커밋해쉬는 A커밋해쉬랑 뭐가 다른가?

Revert하기

  • git revert 취소할커밋해쉬

Reset하기

  • git reset 되돌아갈커밋해쉬 옵션 없을경우 mixed 리셋(옵션:soft, mixed, hard)
  • git reset 옵션 되돌아갈커밋해쉬

임시저장(stash)

  • git stash list 임시 작업저장 내역 조회
  • git stash 할 때 가장 최근에 저장한게 인덱스0번이 됨
  • git stash -m "코멘트"
  • git stash apply stash[i] stash뒤에 적용하고싶은 커밋의 인덱스 번호입력

임시저장된 항목 삭제

  • git drop stash[i] 해당 stash인덱스 번호

git branch 관리하기

  • git checkout 브랜치이름 특정 브랜치로 체크아웃하기 (작업환경 바꾸기)
  • git log --branches 브랜치의 log까지 다 보여줌 (--branches 없으면 현재 로그만 보여줌)

branch 병합하기

  • git merge 병합하고자 하는 브랜치가 아닌 다른 브랜치로 체크아웃 한 후 merge하고자 하는 branch이름 입력
  • 브랜치 병합 후 필요없어진 브랜치는 삭제하는게 좋음
  • git branch -d 삭제하고자하는 브랜치 이름
  • git branch -b 브랜치이름 : 브랜치를 만들면서 만듦고 동시에 체크아웃 하겠다

명령어를 이용해서 rebase 하기

  • git rebase rebase할브랜치이름

원격저장소와 상호작용하기

원격저장소에 명령어로 레포지토리 만들기

  • git init
  • git add README.md
  • git commit -m "first commit"
  • git branch -M main (브랜치명을 master에서 main으로 변경)

원격저장소 추가 명령어

  • git remote add [원격저장소별명][원격저장소주소]
    ex) git remote add origin git@github.com:ljwon1203/second_repo.git

  • git push 푸시할곳[어디에] 변경사항있는브랜치

  • git push (-u) origin main (-u 한번 입력하면 이후부터는 origin main 생략가능)

  • git fetch (-u) origin main (-u 한번 입력하면 그 후 origin main 생략가능)
    : 변경사항을 병합하지 않고 일단 가지고만 온다.

  • git checkout FETCH_HEAD : fetch를 해온 내용들을 가리키고 있는 일종의 head

  • git merge origin/main : origin/main원격저장소에서 만들어 낸 변경사항을 main브랜치로 병합

  • git pull (-u) origin main : 원격 origin에 있는 내용을 main으로 가져오기.
    pull은 fetch와 merge를 동시에 해주는 것.

풀리퀘스트(Pull Request)

  1. 기여하려는 저장소를 본인 계정으로 포크하기
  2. 포크한 저장소를 클론하기
    ex) git clone git@github.com:ljwon1203/collaboration.git
  3. 브랜치 생성 후 생성한 브랜치에서 작업하기
    ex) main branch에서 git checkout -b myname (새로운 브랜치 만듦과 동시에 myname으로 체크아웃)
    3-1 작성한 내용 커밋하기 (add . commit)
  4. 작업한 브랜치 푸시하기
    ex) git push origin myname(origin에 myname이란 브랜치를 푸시)
  5. 풀 리퀘스트 보내기
    ex) github 사이트에서 Compare & pull request 하기
profile
한 걸음 한 걸음 꾸준히

0개의 댓글