본문 바로가기
Develop/Back-End

[Git] Git 벼락치기! - 초심자 가이드

by 초코칩프라푸치노 2021. 7. 9.

※명령어의 기초※

 

<숫자> 대용으로 <^> 가능(이전 단계로 한 번 이동하는 기능)

※ 기본 명령어

  • git init : 프로젝트의 디렉토리로 이동해서 새로운 git 저장소 생성한다
  • git add <파일> : 프로젝트의 디렉토리에 파일을 변경 내용을 staging area로 추가한다
  • git add .: 현재 디렉토리의 모든 변경 내용을 staging area로 넘긴다
  • git status : 파일의 상태(수정 여부)를 확인한다
  • git clone <repository url> : 다른 프로젝트에 참여하거나 Git 저장소 복사한다
  • git rm <파일> : 파일을 삭제하고 stage 상태로 변환하고 commit 후에 완전히 삭제한다

※ Commit 관련

  • git commit -m "<내용>" : 현재 상태를 커밋하다
  • git commit --amend : checkout 된 branch의 커밋을 새로 정정한다

※ Checkout 관련

  • git checkout <branch 이름> : 해당 브랜치로 넘어가다
  • git checkout <커밋 or...> : HEAD를 해당 위치로 이동시킨다
  • git checkout -b <branch 이름> : 브랜치를 만들고 만든 브랜치로 넘어간다
  • git checkout HEAD~<숫자> : 위치하고 있는 HEAD가 숫자만큼 이전 커밋으로 이동한다.
  • git checkout <branch 이름>~<숫자> : 위치하고 있는 HEAD가 지정한 브랜치의 숫자만큼 이전 커밋으로 이동한다.

※ Branch 관련

  • git branch -f <branch 이름> <<branch 이름 or 커밋 or HEAD>~<숫자>> : 해당 브랜치를 지정한 지정한 곳의 커밋으로 이동한다
  • git branch <branch 이름> : 브랜치를 만들다

※ Rebase 관련

  • git rebase <branch 이름> : checkout 된 브랜치를 해당 branch에 갱신한다
  • git rebase -i <branch 이름 or 커밋 or HEAD>~<숫자> : checkout 된 브랜치로부터 지정한 곳까지의 commit 중 pick 한 것을 제외하고 순서를 정한 뒤 지정한 곳부터 새로 갱신한다

※ Reset 관련

  • git reset <branch 이름>~<숫자> : 해당 브랜치에서 숫자만큼 이전 커밋으로 이동하면서 앞의 커밋들을 제거한다
  • git reset <branch 이름> : 해당 브랜치의 앞부분 커밋을 제거한다.(최신 chekcout 위치의 branch는 해당 브랜치로 이동한다)

※ 기타

  • git revert <branch 이름> : 해당 브랜치를 최신 커밋으로 갱신한다.(최신 checkout 위치의 branch에서 revert)
  • git cherry-pick <커밋 or branch 이름> : 커밋 또는 이름을 최신 checkout위치의 branch에 갱신한다.
  • git tag <tag 이름> <branch 이름 or 커밋 or HEAD>~<숫자> : tag를 해당 위치에 등록한다
  • git describe : checkout 된 위치의 branch에서 가장 가까운 태그의 이름과 태그까지의 commit 개수 해당 태그의 commit 명을 알려준다 ex) V1_1_gC6
  • git pull : git fetch와 git merge를 한 번에 해주는 명령어로 생각하면 됨
  • git branch -d <branch 이름> : merge 또는 rebase 하고 필요 없어진 branch를 제거한다
  • git push origin <branch 이름> : Develop의 경우 해당 브랜치를 업로드한다(해당 브랜치를 merge 하고 싶다면 web에서 merge Requests를 한다
  • git fetch : pull이랑 비슷한 거 같지만 /<branch 이름>만 움직이고 branch들은 움직이지 않음
  • git fakeTeamwork <branch 이름> <숫자> : 원격 저장소에 해당 브랜치의 커밋을 숫자만큼 가장하여 생성

※TIP※

  1. branch 생성 후 checkout을 통해 branch로 이동하여 건드리는 파일은 다른 branch에 영향을 주지 않음
    checkout을 통해 다른 branch로 이동하면 repository도 branch 따라 바뀌는 것을 알 수 있음
  2. 현재 프로젝트 참여인원은 전부 maintainer을 임으로 merge 또는 rebase의 사용을 project개설자의 허락 없이 가능 단, Develop일 때 git push origin을 이용하여 병합 요청하는 방법도 연습해볼 것

※Git Ignore※

  • 정의: Project에 원하지 않는 Backup File이나 Log File, 혹은 컴파일 된 파일들을 Git에서 제외시킬 수 있는 설정 File
  • 방법: 최상위 directory(폴더)에 .gitignore 파일 생성
*.txt #모든 .txt 형식 파일을 무시
/file.py #현재 디렉토리(/)의 file.py만 무시
test/ #test라는 폴더 안의 모든 파일 무시
src/**/*.txt #상위 디렉토리(**) 즉 src 폴더의 모든 .txt파일 무시

※Git을 이용한 협업※

  • Git Flow: 깃을 이용한 협업 방식

 

 

  • master: 서비스 출시 가능한 Branch
  • develop: 다음 서비스 버전 출시 개발하는 Branch
  • feature: 기능 개발하는 Branch
  • release: QA(Quality Assurance)를 진행하기 위해 develop에서 임시로 파생하는 Branch
  • hotfix: 서비스 출시 버전에서 발생한 버그를 빠르게 수정하는 Branch

 

 

 

 

 

 


※Git Conflict※

  • Conflict: 두 branch의 동일한 파일에 상반된 내용이 있다는 뜻. 이때 Git이 두 가지 내용 중에서 어떤 내용을 merge의 결과로 해야할지 모르기 때문에 사용자가 결정해줘야 한다.
  • 해결
    1. Conflict가 발생한 모든 파일들을 열어서 충돌 발생한 파일을 수정한다.
    2. '<<<<<<< <branch>' 부터 '=======' 사이의 구간이 현재 체크 아웃된 파일의 내용이고 '=======' 부터 '>>>>>>> <branch>'사이는 병합하려는 파일의 부분이다.
    3. 둘 중 하나를 수정하거나 둘을 모두 수정하여 git add. 를 실행하여 수정사항이 발생한 모든 파일을 staging area에 올려준다.
    4. git commit으로 커밋한다.

※SSH 공개키 만들기※ - aws

1. $ cd ~/.ssh

2. $ ls

3. $ ssh-keygen

4. $ cat ~/.ssh/id_rsa.pub

->$ cat ~/.ssh/id_rsa.pub 이 명령어를 통해 나오는 키 ssh-ra부터 끝까지 복사하여 설정 SSH키에서 키 추가하면 lab.hanium 사이트의 주황색 경고 팝업과 git clone에러 해결 가능


 

반응형

댓글