Git과 Github

tnsdlznf23·2023년 2월 25일
0

Git

작업시작하기

  • GIT BASH에서 프로젝트 파일로 들어간 다음에 git init 저장소이름을 입력하면 작업 시작(혹은 초기화)
  • 개인정보 입력하기(한번만 해주면 됨)
    • git config --global user.name 이름
    • git config --global user.email 이메일
  • ls -al 명령어 입력후 마지막에 .git이 붙는 디렉토리가 버전관리해주는 곳
  • vim 파일이름으로 파일 열기

    vim 사용법

    • i > 밑에 inset 확인되면 텍스트를 입력하는 모드
    • esc 명령어를 입력하는 모드
    • :wq 파일이름 명령어 입력 모드에서 저장하고 닫기
    • :q! 수정사항 저장하지 않고 파일 종료하기
    • V 줄 단위 선택
    • v 글자 단위 선택
    • y 복사
    • yy 줄단위 복사
    • p 붙여넣기
    • d 잘라내기
    • dd 줄단위 잘라내기

버전만들기(commit)

  • git status 파일의 상태확인(버전 관리가 되고 있는지, 수정되었는지 등)

  • git log 현재 버전 확인

  • git commit --amend 최신 커밋 바꾸기(push이전에만 가능)

  • git show 커밋id(앞4자리) 특정 커밋의 변경사항 확인하기

    파일 버전관리 시작하기

    1. git add 파일이름 커밋하고 싶은 파일만 등록
      (git add .변경된 모든 파일 추가)
    2. git commit add에 추가된 파일의 버전 정보 등록 (vim에 버전 정보 입력해주고 :wq)

    파일 버전관리 재커밋하기

    • git commit -a add한 뒤 바로 commit
    • git commit -am "버전정보" add한 뒤 바로 commit 정보 입력

    add한 파일은 stage area(커밋대기상태)로 간다.
    commit된 파일은 repository(원격저장소)로 간다.

변경사항 확인하기(log & diff)

  • git log: 커밋 기록 확인하기
  • log -p +: 수정된 부분 -:그 전 내용
  • git diff 커밋번호..커밋번호 두 버전 비교 (difference)
  • git diff working copy와 index의 내용 비교 (init: 초기화)

과거로 돌아가기(reset & revert) & 취소하기

  • git reset 최신화하고 싶은 파일번호 --hard --soft (--mixed : defalt)
    (원격저장소에 저장한 이후에는 절대 reset하면 안됨) ,staging area에 올렸던 파일 다시 내리기
  • git reset HEAD~1 위 명령어는 현재 로컬 브랜치로부터 하나 뒤에 있는 커밋으로 돌아가라는 의미이다. HEAD~ 뒤에 붙여준 1 이 ‘하나 뒤에 있는’ 이라는 의미를 전달하는 것이다.
  • git revert 특정 커밋에서 이루어진 작업을 되돌리는(취소하는) 커밋을 새로 생성
  • git reset --hard --soft (--mixed : defalt) ORIG HEAD reset 취소하기
  • git reflog 커밋 기록 확인후 git reset 좌측 번호 입력 > 해당 커밋으로 복귀

branch

  • git branch 현재 branch 보기 (defalt: master)
  • git branch 이름 branch 만들기
  • git checkout 이름 만든 branch로 설정하기 (branch 빠져나오려면 git checkout master)
  • git checkout -b 이름 branch를 만들고 checkout
  • git checkout 커밋번호 커밋번호로 branch 만들기
  • git log --branches branch별 commit 확인
  • git log --branches --graph branch별 commit 그래프로 확인
  • git log --branches --graph --oneline branch별 commit 그래프 한줄로 확인
  • stree 소스트리 다운로드 후 gui로 branch 확인 가능
  • git log branch a..branch b a에는 없고 b에는 있는 버전 표시
  • git log -p branch a..branch b a에는 없고 b에는 있는 버전+소스 표시
  • git diff branch a..branch b a에는 없고 b에는 있는 소스 표시
  • git branch -d 이름 branch 삭제
  • git merge branch a 현재 branch에서 branch a를 병합
  • git merge --abort merge 시도 이전으로 되돌리기
  • git stash 수정된 파일 임시저장하기(add된 파일에 한함)
  • git stash apply 임시저장된 파일 꺼내기
  • git stash drop 임시저장된 파일 지우기
  • git stash list 임시저장된 파일 리스트 보기
  • git stash pop 임시저장된 파일 꺼내기+지우기
  • branch 병합시 충돌났을때(다른 branch에서 같은 코드를 수정했을때)
  • 해당 파일에서 ====윗부분과 아랫부분이 상충되므로 해당 부분 통일해주면 된다.
  • git config --global merge.tool kdiff3 (오픈소스 kdiff3 다운 필요) git mergetool 충돌난 파일에 대해 병합

tag

  • git tag 버전 현재 commit에 태그 추가
  • git tag -a 버전 -m "정보" 자세한 정보를 추가하는 태그
  • git tag 현재 태그 확인
  • git tag -v 버전 태그 버전 자세히 확인
  • git tag -d 버전 태그 삭제

rebase

  • merge와 rebase의 차이점: merge는 병렬(히스토리 보기 어려우나 쉽고 안전하다, rebase는 직렬(히스토리 보기 쉬우나 어렵고 위험하다)
  • 메인으로 가져가고 싶은 branch로 checkout 후 git rebase 병합하고자 하는 branch 입력
  • rebase 한 후 branch 하나로 합치고 싶으면 다른 branch로 checkout 한 후에 merge 메인 branch 입력하기

Github

백업 & 복사하기 & 동기화하기

  • git remote add origin 주소 > git branch -M main > git push -u origin main > 깃허브 로그인(새팝업) : 깃허브 동기화, 현재 작업 파일 깃허브로 push
  • git remote -v 현재 저장소 확인(원격저장소와 로컬저장소 연결되었는지 확인)
  • git push 변경사항 깃허브에 반영
  • git push --set-upstream opigin branch이름 새로운 branch push하기
  • git push --tags 태그 깃허브에 반영
  • 깃허브 소스 clone하기: 깃허브 code>https>link 카피 후 git clone 카피한주소 디렉토리이름 입력
  • git pull 깃허브 소스 가져오기 (master = origin master로 branch 병합됨)
  • git fetch 깃허브 소스 가져오기 (master는 변경없이 ortgin master를 새로 가져옴)
    장점: 원격저장소 내용과 현재 작업 내용 차이점 확인 가능(git diff HEAD(최신커밋) origin)
  • git remote remove origin 원격 저장소와 연결 끊기

Ssh - 로그인없이 원격저장소 사용하기

  1. ssh-keygen 엔터엔터엔터
  2. cd ~/.ssh > cat id_rsa.pub 에 출력되는 코드 카피
  3. 깃허브 프로필 settings > 좌측 ssh and gpg keys > new ssh key > title에 저장소 이름, key에 코드 붙여넣기 > add ssh key

Git 프로젝트

Git flow

  • develop branch에서 개발을 진행한다.
  • 특정한 기능을 개발할때 feature branch를 만들어 진행한다.
  • 기능에 대한 작업이 끝나면 develop branch로 가져온다.
  • 배포를 해야할 때 release branches에서 진행한다.
  • 배포 작업이 끝날때마다 develop branch로 병합을 진행한다.
  • 최종배포를 진행할때 master branch로 변경사항을 병합한다. (tag로 버전추가)
  • 최종배포 후 버그가 생기면 hotfixes branch에서 수정후 새로운 버전으로 master branch에 배포하고 (tag로 버전수정) develop branch에도 반영한다.
profile
프론트엔드 개발 기록장

0개의 댓글