티스토리 뷰
자주 쓰이는 Git 명령어를 사용해보자
1. Windows Command Prompt
시작 - > 실행 - > cmd
dir : 현재 디렉토리내의 파일 출력
cd [이동위치] : 디렉토리 이동
2. Git
설정
git config --global user.name [유저이름] : 글로벌 유저이름 설정
git config --global user.email [유저이름] : 글로벌 유저이메일 설정
git config --global core.eol native / crlf / lf : 개행처리에 대한 설정
OS 별 CRLF 차이로 인한 문제를 막기 위해 OS 별로 다음과 같이 설정한다.
Windows 일때 : git config --global core.autocrlf true
Linux, OSX 일때 : git config --global core.autocrlf input
명령어
git init : 저장소 만들기 - 원하는 디렉토리에서 명령어를 치면 해당 디렉토리를 로컬 저장소로 등록한다.
git diff : 변경사항을 확인해주는 명령어 (로컬 저장소와 스테이지영역의 차이를 확인시켜준다.)
git status : 현재 저장소 상태 확인
git add [-A] : 현재 파일의 변경사항을 스테이지에 올린다.
git commit -m "Message" : 스테이지에 올라온 사항들을 이력에 추가한다.
git log : 저장소 이력 (history) 확인
git reset [--soft || --mixed || --hard ] : 말그대로 특정 커밋까지의 이력을 초기화 한다.
git revert <commit ID> : 이전상태로 되돌리지만, 커밋이력을 남긴다.
(이미 배포가 되었을 때 다른 협업자와 같이 되돌리기 위해 사용한다.)
작업분기
git switch -c <branch name> : 브랜치를 생성하면서 브랜치 이동을 한다.
git switch <branch name> : 브랜치 이동
git branch <branch name> : 브랜치 생성
git merge <branch name> : 현재 branch 에 해당 branch 수정사항을 합친다.
ps ) master 와 taehyun을 병합할 경우 git은 별도의 merge 커밋을 만들어서 두 브랜치를 병합한다.
※ Conflict 충돌 해결 (아주 중요) ※
주로 같은 파일에 접근하여 수정을 했을 경우 나타나게 된다.
<<<<<<< HEAD
뻘건색
=======
붉은색
>>>>>>> update-red
<<<<<<<, =======, >>>>>>> 이 충돌 발생지정을 나타내는데,
둘중 어느내용이 맞는지는 양쪽 개발자의 의견을 통해 수정을 해야한다.
맞는 내용만 남기고 전부 삭제 후
git add -A 명령어와 git commit -m "conflict commit" 을 통해 수정해준다.
---------------------------------------------------------------------------------------------------------
git rebase <branch name> : base를 새로 만든다는 뜻인데, 공통커밋에서 현재 checkout한 브랜치(taehyun)가
가리키는 커밋까지 diff를 차례로 만들어 어딘가에 임시 저장하고,
Rebase할 브랜치(taehyun)가 합칠 브랜치(master)가 가리키는 커밋을 가리키게 하고
아까 저장해 놓았던 변경하항을 차례대로 적용한다.
이후
git checkout master
git merge experiment 를 해주면 master 브랜치를 Fast-forward 시킨다.
※ Conflict 충돌 해결 (아주 중요) ※
위에 git merge와 마찬가지로 해당 파일 수정 후 git add -A를 해준 후 git rebase --continue를 해주면
진행이 가능하다.
원격 저장소
git remote add <store name> <repository url> :원격 저장소와 연결한다.
(ex : GitHub ) => git remote add origin https://github.com
git push <store name> <branch name> : 해당이름의 원격 저장소에 해당하는 브랜치에 푸시(저장)한다.
git push [-u] <store name> <branch name> : -u 옵션을 쓰면 앞으로 저장소이름과 브랜치명을 쓸 필요가 없다.
git clone <repository url> <directory name> : 원격저장소의 데이터를 해당 디렉토리에 복제
git pull <store name> <branch name>: 원격 저장소에 해당브랜치의 변경된 내용을 로컬저장소로 가져온다.
해당 소스가 현재 내 소스보다 최신버전이라고하면 버전을 해당 소스에
맞춰 올린다. (merge 명령)
git fetch <store name> : 원격저장소의 변경된 내용을 가져오나 FETCH_HEAD라는 존재하지 않는 브랜치로 가져오고
pull과 달리 merge명령을 실행하지 않는다.