2019. 5. 23. 18:40ㆍ기본 학습/Git
깃을 사용해봅시다
1-1. 깃의 저장소 생성하기
git init
1-2. 깃의 저장소를 가져오기(복사하기)
git clone /로컬 저장소 경로
git clone 사용자명@호스트:/원격저장소 경로
깃의 작업은 아래 순서대로 흐른다.
Working Directory -> 실제 파일들
Index -> 준비 영역
HEAD -> 최종 확정본
1-3. 깃의 현재 상태 확인
git status
1-4. 깃에 정보 기록하기
git config --global user.name "자신의 닉네임"
git config --global user.email "자신의 이메일"
2. 깃의 추가와 적용
git add 파일이름
git add *
처음에 깃 저장소를 생성하고 나면 깃에 저장 작업을 진행할 데이터를 정해야 한다. 무작정 해당 폴더에 있는 모든 파일을 저장하게 될 경우, 자신이 원치 않은 데이터까지 깃에 기록될 수 있기 때문에 git add 명령어를 써야만 한다. add로 추가하면 해당 파일은 Index에 저장된다.
add 이후, 깃에 저장할 데이터 내용을 적용시키려면 다음의 명령어를 입력해야 한다.
git commit -m "저장할 데이터데 대한 설명(버전을 함께 기록하기도 한다)"
3. 변경 내용 발행하기
변경된 내용은 로컬 저장소의 HEAD안에 있으므로 변경 내용을 아래 명령어로 원격 서버에 업로드 한다.
git push origin master
만약 브랜치로 다른 작업을 했다면 master가 아닌 다른 브랜치 담당명으로 업로드 한다.
기존에 있던 원격 저장소를 복제한 것이 아니라면, 원격 서버의 주소를 git에게 알려주어야 한다.
git remote add origin 원격 서버주소
4. 브랜치 작업
맛있는 브런치가 아니고, 브랜치(Branch)라고 한다.
가지치기라고 하면 좀 더 이해하기 쉽겠다.
안전하게 격리된 상태에서 무언가를 만들거나 수정하기 위해 또 다른 방향으로 프로젝트를 만드는 것이다.
나중에 모든 작업이 끝났을 때 master 브랜치로 돌아와서 병합시킨다.
먼저, 바스티온이라는 브랜치를 만든다.
git checkout -b bastion
아래 명령으로 언제든 Master 브랜치로 돌아올 수 있다.
git checkout master
가지를 삭제하는 명령어도 있다. 바스티온을 제거해보자.
git branch -d bastion
당신이 새로 만든 가지를 원격 저장소로 전송하기 전까지 다른 사람들이 접근할 수 없다. (계정을 기준으로 철저히 격리되어 있다고 할 수 있다)
git push origin 브랜치 이름
5. 브랜치의 갱신과 병합
로컬 저장소를 원격 저장소에 맞춰 갱신하려면 아래 명령을 실행한다.
git pull
이렇게 하면 원격 저장소의 변경 내용이 로컬 작업 디렉토리에 받아지고(fetch), 병합(merge)이 된다.
다른 브랜치에 있는 변경 내용을 현재 브랜치에 병합시킬려면 아래의 명령어를 입력한다.
git merge 브랜치 이름
6. 브랜치의 충돌
병합을 시도하다 보면 충돌(conflict)이 일어나기도 한다.
git이 알려주는 파일의 충돌 부분을 직접 수정해서 병합이 가능하도록 해야 한다.
git add 충돌 파일이름
변경 내용을 병합하기 전에, 어떻게 바뀌었는지 확인도 가능하다.
git diff 원래 브랜치 비교 대상브랜치
7. 깃의 작업 되돌리기
Reset과 Revert 두가지 방법이 있다.
1) Reset
시계를 다시 되돌리는 일이다. 즉 돌아가려는 커밋으로 리파지토리는 재설정되고, 해당 커밋의 이력은 사라진다. 이 안에서 또 hard, mixed, soft 3가지 옵션이 있다.
git reset --옵션 커밋코드
hard
돌아가려는 이력 이후의 모든 내용을 지워버린다.
ex) git reset --hard a251253c
soft
돌아가려는 이력으로 되돌리지만, 이후의 내용이 지워지지 않고, 해당 내용의 Index도 그대로 보존되어 있다.
ex) git reset --soft a251253c
mixed(옵션을 적지 않으면 기본)
이력은 되돌려 진다. 변경된 내용에 대해서는 남아있지만 Index는 초기화 된다.
2) Revert
이전의 이력은 그대로 있고, 커밋만 되돌린다.
ex) git revert a251253c
reset과 revert의 차이점?
단순하게 보면 reset은 revert를 하는 것보다 이력을 단순하게 만들어준다. 그러나, 이후의 이력을 모두 날려버리는 결과를 가지고 오기 때문에 revert를 사용하여 커밋의 내용만 되돌릴 수 있다.
'기본 학습 > Git' 카테고리의 다른 글
Git 입문 - 깃 설치하기 (0) | 2019.05.22 |
---|