글 작성자: 망고좋아
반응형

🎯 Git

  • Git은 오픈 소스이다.
  • 분산 버전 관리 시스템이다.
  • 여러 사람과 효율적인 협업을 가능하게 한다.

 

 

Git

 

git-scm.com

 

📝 Git Life Cycle

 

📝 Git 사용자 정보 설정

  • 저장소 코드를 반영할 때 등록될 사용자 정보를 설정
  • git config --list : 설정 정보 확인
  • git config --global user.name "xxx" : name 설정
  • git config --global user.email "xxx@xxx.xx" : email 설정

 

📝 Git 저장소 생성

  • git init : 기존의 디렉토리를 git repository로 설정
    • git을 사용할 프로젝트 폴더로 이동후 git init 명령어 실행

 

📝 Git 파일 생성

  • git add : 파일을 준비 영역으로 보내기
  • git add test.js
  • git add . : 디렉토리의 모든 변경 내용을 준비 영역으로 넘기기

 

📝 Git 저장소 반영

  • staging에 있는 파일들을 메시지를 남겨 저장소에 저장하는 작업
  • git commit
  • git commit -m "commit message"
  • git commit —amend : 가장 최근 commit의 메시지에 오타가 있거나 누락된 파일이 있을 경우 수정.
    • git commit --amend -m "수정할 커밋 메시지"

 

순서 요약

  1. git init
  2. git add xx.xxx
  3. git commit -m "message"

 

📝 Git 관리 상태 확인

  • git status : staging file들의 상태 확인
  • git log : commit history 확인, 저장소 반영 내역을 확인하는 명령어
  • git diff : commit 된 파일 중 변경된 사항을 비교할 때
  • status에는 준비 영역, 파일이 수정되었지만 준비 영역에 없다, 준비 영역에 없다. 이렇게 나뉜다. 준비 영역은 add가 된 상태이다.

 

📝 Git Branch

  • 독립적으로 어떤 작업을 진행하기 위한 개념
  • 각각의 branch는 다른 branch의 영향을 받지 않음

 

깃 브랜치 종류

  • 메인 Branch : 배포할 수 있는 수준의 안정적인 브랜치
  • 토픽 Branch : 기능 추가나 버그 수정과 같은 단위 작업을 위한 브랜치
  • git branch : 현재 branch 확인
  • git branch branchName_feature : 브랜치 생성
  • git branch -m 브랜치이름 바꿀브랜치이름 : 브랜치 이름 변경
  • git checkout branchName : branch 전환
    • git checkout s92s12(snapshot_hash) : snapshot을 넘나들 때도 사용 가능. 즉, 과거의 파일 내용을 확인할 수 있다.
    • git checkout -b 브랜치이름 : 브랜치 생성과 동시에 이동

 

📝 Git merge

  • git checkout branchName : 해당 브랜치로 이동
  • git merge like_feature : 해당 브랜치에서 like_feature 브랜치 병합
  • git branch -d branch_name : 브랜치 삭제
    • topic 브랜치는 기능 개발이나 작업이 끝나면 삭제하는 것이 일반적이다.

 

순서 요약

  • git checkout master
  • git merge add_app
  • git branch -d add_app

 

📝 Git 원격 저장소 받아오기

  • git clone : 기존의 git repository를 복사하는 것
  • git clone 원격저장소주소
  • git remote add origin 원격저장소주소/그룹명/프로젝트명 : 원격 저장소 연결
  • git remote : 현재 프로젝트에 등록된 리모트 저장소를 확인
  • git remote show origin : 모트 저장소의 구체적인 정보를 확인
  • git remote rename origin git_test : 원격 저장소 이름 변경, origin에서 git_test로 변경
  • git remote rm git_test : 주소가 변경되었거나, 필요 없어진 저장소 삭제

 

  • git clone명령어를 실행하면 현재 폴더 내에 새로운 폴더를 하나 더 생성한다.
  • 현재 위치해 있는 폴더가 myproject라고 한다면 git clone으로 생성된 폴더는 myproject/"test"로 생성된다. myproject는 저장소가 아닌 상태이다.
  • 만약 myproject폴더를 저장소로 쓰고 싶다면 git clone명령의 마지막에 . 을 찍어주면 된다.

 

📝 Git 원격 저장소 동기화

  • git pull 원격저장소명 원격브랜치명 : 원격 저장소에서 데이터 가져오기(fetch) + 병합(Merge)
    • 즉, 원격 저장소에서 데이터를 가져와 로컬 데이터와 병합
    • git pull origin master : origin(원격 저장소)의 master(원격 브랜치) 코드를 fetch해서 merge
  • fetch : 원격 저장소에서 데이터 가져오기
    • git log origin/mastergit merge origin/master
  • git push 원격저장소명 로컬브랜치명 : 원격 저장소에 코드 업로드
    • 로컬 저장소에서 작업한 내용을 원격 저장소에 반영한다.
    • 다른 사람이 먼저 push한 상태에서는 push 할 수 없다.
    • 다른 사람이 작업한 것을 merge부터 해주기
    • git push origin master :  origin(원격 저장소)에 master(브랜치) 코드 전송

 

요약

  • git remote add origin(또는 다른 원격저장소 이름)으로 로컬 저장소와 연결
  • git fetch 또는 git pull을 이용하여 원격 저장소의 내용을 동기.
    • fetch를 실행한 경우 git merge origin/master로 병합을 완료해준다.
  • git push origin master를 이용하여 변경된 사항을 원격 저장소에 전달
  • pull은 로컬 저장소에 있는 master를 자동으로 원격 저장소에 있는 내용과 합쳐주는 역할을 수행한다.

 

📝 Git rebase

  • rebase는 브랜치가 너무 많아져서 history정리가 필요한 상황에 사용한다.
  • 그래프를 선형으로 만든다.
  • rebase는 공통된 부모까지의 commit을 가져와 원하는 브랜치 옆에 이어 붙인다.

 

요약

  • git rebase master
  • 현재 위치해 있는 브랜치의 commit부터 master의 공통된 부모 전까지의 commit을 master 옆에 이어 붙인다는 의미

 

📝 conflict 해결

  • merge한 두 branch에서 같은 파일을 변경했을 때 충돌이 발생한다.
  • git status로 어느 파일에서 충돌이 발생했는지 확인할 수 있다.
  • 다시 충돌이 일어난 파일에 git add, git commit 과정을 거쳐 다시 merge
  • 충돌을 방지하기 위해서는 master branch의 변화를 지속적으로 가져와서 충돌이 발생하는 부분을 제거해준다.

 

📝 취소

  • git reset finaname.xxx : 커밋 취소
  • git reset — merge : merge 취소
반응형