git의 관리받는 저장소만들기
1 | git init |
저장소 받아오기
로결저장소 복제
1 | git clone /로컬/저장소/경로 |
원격 서버의 저장소를 복제
1 | git clone 사용자명@호스트:/원격/저장소/경로 |
git 의 구성
-작업디렉토리
-인덱스(stage)
-HEAD
관련 설명
작업디렉토리는 실제 파일들로 이루어져있으며
안에 변경사항이 일어날경우 git이 인지
내가 변경사항이 있는 것들을 add를 통해 추가
또는 기존에서 추가하는파일들이있어도 역시 add로 추가한다
그리고 stage에 있는 애들은 commit명령어로 HEAD로 최종확정본을 나타낸다
다음은 서버로 올려야한다
현재상태확인
1 | git status |
파일추가 및 확정.
1 | git add<파일 이름> |
변경 내용 발행하기
현재의 변경 내용은 아직 로컬 저장소의 HEAD안에 머물고 있다
원격 서버로 올려보자
1 | git push origin master (다른 가지를 발행하려면 master 대신 가지이름을 적는다) |
서버주소 입력해주자
만약 기존에 있던 원격 저장소를 복제한것이 아니라면
원격 서버의 주소를 git에게 알려줘야 해요
1 | git remote add origin <원격 서버 주소> |
이제 변경 내용을 원격 서버로 발행가능
가지 (branch)
가지는 안전하게 격리된 상태에서 무언가를 만들떄 사용합니다
branch로 가지로 나와서 나중에 완성되면 merge로 master(혹은 현재잡혀있는 위치)와 병합합니다
1 | git checkout -b feature_x (feature_x라는 가지생성) |
갱신과 병합
나의 로컬 저장소를 원격 저장소에 맞춰 갱신하려면 (원격 저장소의 변경 내용이 로컬 작업 디렉토리에 받아지고 병합됨)
1 | git pull |
다른 가지에 있는 변경 내용을 현재 가지에 병합하려면 현재 위치에서
1 | git merge <가지 이름> |
만약 충돌일어나면?
위에 둘다 병합시도를 하는데 충돌이 일어나면 git에서 알려주는 파일을 직접 수정후 파일을 병합하라고 알려주셈
1 | git add<파일 이름> |
변경내용을 병합하기전에, 어떻게 내용차이가 나는지알수있음
1 | git diff <원래 가지> <비교대상가지> |
로컬 변경 내용 되돌리기
위 명령은 로컬의 변경 내용을 변경 전 상태(HEAD)로 되돌려줘요
1 | git checkout -- <파일 이름> |
다만 이미 인덱스에 추가된 변경 내용과 새로 생성한 파일은 그대로 남는다
로컬 포기
만약, 로컬에 있는 모든 변경 내용과 확정본을 포기하려면,
아래 명령으로 원격 저장소의 최신 이력을 가져오고,
로컬 master 가지가 저 이력을 가리키도록 할수 있어요/
1 | git fetch origin |
git add한 걸 취소하고싶을떄
1 | git reset HEAD[file] #파일명이없다면 add한 파일 전체 취소한다 |
그외 기능들
git의 내장 GUI
gitk
콘솔에서 git output을 컬러로 출력하기
git config color.ui true
이력(log)에서 확정본 1개를 딱 한 줄로만 표시하기
git config format.pretty oneline
파일을 추가할 때 대화식으로 추가하기
git add -i
어떤상황에서 나가는 방법
:q!
파일 내용을 보고싶을때
1 | vi <파일이름> |
i를 누르면 edit mode
다 수정후 :wq 로 나간다 (저장후 끄기)