Command Line Interface를 통해 Git을 사용하는 방법
버전으로 만들어지기 전의 수정한 내용이 들어있는 곳
하나의 버전으로 만들고 싶은 파일들을 올려놓는 곳
작업하고 버전을 생성하는 PC의 지역 저장소
백업이 저장되는 원격 저장소
직접 원격 저장소를 운영하기 쉽지 않기 때문에 Git hosting을 많이 이용한다. → GitHub, GitLab..
새로운 폴더 만들기 : mkdir 폴더명
git init .
으로 현재 디렉토리의 버전 관리를 시작한다.
git init 폴더명
으로 폴더 생성과 초기화를 동시에 할 수 있다.
파일 내용 확인 : cat 파일명
/ type 파일명
이전 디렉토리 : cd ..
폴더 내 모든 파일 보기 : ls -al
/ dir /a
git status
로 Working Tree의 상태를 볼 수 있다.
fsutil file createnew .gitignore 0
으로 .gitignore 파일을 만들어 내부에 파일명을 입력하면 git이 해당 파일을 자동으로 무시한다.git add 파일명
으로 Staging Area에 파일을 올릴 수 있다.
git add .
으로 현재 디렉토리 밑에 있는 모든 파일을 add할 수 있다.
git commit -m “커밋 메시지”
로 커밋할 수 있다.
git commit -am “커밋 메시지”
로 add와 커밋을 한 번에 할 수 있다. → untracked 상태에서는 사용이 불가능하다.
git commit --amend
로 커밋 메시지를 수정할 수 있다.
에디터를 이용하면 여러 줄의 메시지를 입력할 수 있다.
git commit
만 입력하면 에디터가 실행된다.
wq
/ w!
(강제)git config --global core.editor “nano”
/ git config --local core.editor notepad
git log
로 폴더의 버전 관리 이력을 볼 수 있다.
git log --stat
로 각 로그마다 연루된 파일을 볼 수 있다.
git log -p
로 로그에서 버전 별로 변경된 점을 볼 수 있다.
git diff
로 마지막 버전과 Working Tree에 있는 파일 내용의 차이점을 비교할 수 있다.
git checkout 커밋 아이디
로 해당 버전의 시점으로 이동할 수 있다. → 커밋 아이디는 git log
에서 copy할 수 있다.
git checkout main
을 하면 다시 최신 버전으로 돌아갈 수 있다. → main은 최신 버전을 가리킨다.
git reset --hard
로 Working Tree에서 작업한 내용을 삭제할 수 있다.
git reset --hard 커밋 아이디
로 해당 버전의 시점으로 리셋할 수 있다.
git revert 커밋 아이디
로 해당 버전의 시점으로 되돌아갈 수 있다.
1 ⇒ 2 ⇒ 3 ⇒ 4 이런 식으로 버전이 있을 때
곧바로 버전 2로 revert하면 버전 1로 되돌아가지 않는다. → 버전 3으로 revert한 다음, 버전 2로 하나씩 revert해야 충돌이 발생하지 않는다.
revert는 해당 커밋까지의 모든 변화를 되돌리는 것이 아니라 그 커밋에서의 변화만을 되돌리는 것이기 때문이다.
git remote add 원격 저장소 주소
로 지역 저장소에 원격 저장소를 연결할 수 있다.
git remote add **origin** 원격 저장소 주소
이런 식으로 원격 저장소마다 별명을 붙일 수 있다.
git remote
로 어떤 원격 저장소가 있는지 확인할 수 있다.
git remote -v
를 하면 원격 저장소의 주소까지 볼 수 있다.
git push
로 지역 저장소의 내용을 원격 저장소로 백업할 수 있다.
git push -u origin main
로 어떤 원격 저장소를 디폴트로 할 것인지 설정할 수 있다. → 이후 git push
만 하면 자동으로 origin에 main 브랜치가 업로드된다.git clone 원격 저장소 주소 (저장 위치)
로 원격 저장소를 지역 저장소로 복제할 수 있다.
현재 디렉토리 표시 : pwd
/ cd
git pull
로 원격 저장소의 내용을 지역 저장소로 가져올 수 있다.
git push하면 rejected(거절)된다. ⇒ 여기서 pull을 통해 충돌을 발생시킨다.
충돌을 수동으로 해결하고 git commit
을 하면
이렇게 두 개의 브랜치 모두를 조상으로 하는 새로운 커밋이 생성된다.
바로 pull 하지 않고 git fetch
로 원격 브랜치만 가져올 수 있다.
이 상태에서 pull하거나 origin/main으로 merge하면
main이 원격 브랜치를 따라간다.
따라서 git pull
은 git fetch
+ git merge FETCH_HEAD
와 같다.