Git

OFFDUTYBYBLO·2020년 6월 3일
0

Git

목록 보기
1/5

1.git 설치

$brew install git 

2.git 저장소 만들기

1) 폴더 생성
2) 폴더 위치로 이동
3) git init 실행
4) 새로운 git저장소 생성

3.저장소 받아오기

1) 로컬 장소를 clone하기 위한 명령어 실행 : git clone /로컬/저장소/경로
2) 원격 서버의 저장소를 clone : git clone 사용자명@호스트:/원격/저장소/경로

4.작업의 흐름

  • 로컬 저장소는 git이 관리하는 3개의 파트로 구성
    1) 작업 디렉토리(Working directory) : 실제 파일들로 구성
    2) 인덱스 (Index) : 준비영역(staging area)의 역할
    3) 헤드(Head) : 최종 확정본(commit)을 의미

5.추가와 확정(commit)

1) 변경된 파일 인덱스에 추가
- 일부 파일만 추가 : git add <파일 이름>
- 모든 파일 추가 : git add *
=> git의 기본 작업 흐름에서 첫 단계

2) 변경 내용을 확정
git comit -m "이번 확전본에 대한 설명"
=> 변경된 파일이 HEAD에 반영된 상태, 원격 저장소에는 아직 반영 X

6.변경 내용 발행(PUSH)하기

1) git push origin marster
- HEAD안에 머물고 있는 변경 내용을 원격서버로 올리기 위해 master브랜치에 push
- 다른 브랜치를 발행할 수 있다. (꼭 master를 사용하지 않아도 된다.)

2) git remote add origin <원격 서버 주소>
- 기존에 있던 원격 저장소를 복제한 것이 아니라면, 원격 서버의 주소를 git에게 알려줘야 한다.
- 위의 코드실행으로 변경 내용을 원격 서버로 발행할 수 있다.

7.Branch

  • 가지는 안전하게 격리된 상태에서 무언가를 만들 때 사용
  • 저장소를 새로 만들면 기본을 'master 가지'가 생성
  • 다른 가지로 개발을 진행하고, 나중에 개발이 완료되면 master가지로 돌아와 병합하면 된다.

  • git checkout -b feature_x
    => 'feature_x'라는 이름의 가지를 만들고 갈아탄다.

  • git checkout master
    => master 가지로 돌아온다.

  • git branch -d feature_x
    => 'feature_x'라는 가지를 삭제한다.

  • git push origin <가지 이름>
    => 새로 만든 가지를 원격 저장소로 전송
    => 전송 전까지는 다른 사람들이 접근할 수 없다.

8.갱신과 병합 (merge)

  • git pull
    => 원격 저장소의 변경 내용이 로컬 작업 디렉토리에 받아지고(fetch),병합(merge)된다.

  • git merge <가지 이름>
    => git pull과 같은 동작을 실행한다.
    => git은 자동으로 변경 내용을 병합하려고 시도하지만 항상 성공하는 게 아니라 가끔 충돌(conflicts)이 일어나기도 한다.

  • git add <파일 이름>
    => conflicts가 발생하면, git이 알려주는 파일의 충돌 부분을 직접 수정해서 병합이 가능하도록 해야 한다. 충돌을 해결했다면, git add <파일 이름>으로 다시 병합을 시도한다.

  • git diff <원래 가지> <비교 대상 가지>
    => 변경 내용을 병합하기 전에, 어떻게 바뀌었는지 비교할 수 있다.

9. 꼬리표(tag) 달기

  • 소프트웨어의 새 버전을 발표할 때마다 꼬리표를 달아놓으면 좋다.
    git tag 1.0.0 1b2e1d63ff
    => 위의 명령어를 통해 1.0.0을 달 수 있다.
    =>1b2e1d63ff부분은 꼬리표가 가리킬 확정본 식별자이다.
    => git log를 통해 확정본 식별자를 얻을 수 있다.

10.로컬 변경 내용 되돌리기

  • 실수로 무언가 잘못한 경우, git checkout -- <파일 이름>실행문으로 로컬의 변경 내용을 되돌릴 수 있다.
  • git checkout은 로컬의 변경내용을 변경 전 상태(HEAD)로 되돌려준다.
  • 다만 이미 인덱스에 추가된 변경 내용과 새로 생성한 파일은 그대로 남는다.

git fetch origin
git reset --hard origin/master

  • 만약, 로컬에 있는 모든 변경 내용과 확정본을 포기하려면, 아래 명령으로 원격 저장소의 최신 이력을 가져오고, 로컬 master가지가 저 이력을 가리키도록 할 수 있다.

11.유요한 힌트

gitk

  • git의 내장 GUI

git config color.ui true

  • 콘솔에서 git output을 컬러로 출력

git config format.pretty oneline

  • 이력(log)에서 확정본 1개를 딱 한 줄로만 표시하기

git add -i

  • 파일을 추가할 때 대화식으로 추가하기

12.충돌을 줄여나가야...

  • 기본적으로 로컬 환경에서의 master브랜치와 github상에서 master브랜치의 차이를 인식해야 한다. ( 서로 다른 영역에서의 master )
  • 처음부터 개인 branch를 생성하고 그 위에서 작업을 진행하는 습관이 중요!

개인 브랜치 생성 -> 개인 브랜치 이동 -> 개인 브랜치 위에서 작업 진행 -> 작업 완료 후 github에 push -> 충돌이 발생하는 지 확인 -> fetch로 최신 데이터를 pull -> 충돌 수정 후 다시 git add 후 push

profile
블로그 운영 x

0개의 댓글