로컬에 저장소 생성 mkdir git_tutorial
cd git_tutorial
현재 위치에서 git_tutorial 디렉토리로 이동, git init
Git 저장소 초기화
그러면 현재 작업중인 브랜치가 master 브랜치가 됨
vim을 활용함
일반모드-입력모드로 이동
vim hello.py
I키 누르고 코드 작성
Esc 키 누른 뒤 :wq 입력(wq가 맞음 wd 입력되면 error)
cat hello.py
파일 내용 출력
커밋 전 저장소 상태 확인git status
파일 기록 추적이 되지 않아 커밋이 안됨
git add
실행하여 git이 추적을 할 수 있게 한다. 그 뒤 다시 저장소 상태를 확인하면 커밋해야 한다고 메시지가 뜸.
git commit
실행 후 I 키 입력. 가장 윗 줄에 커밋메시지를 작성함.ESC 키 누른 뒤
:wq
입력커밋이 성공적으로 진행됨
git branch hotfix
로 hotfix라는 브랜치를 생성
git branch
현재 존재하는 브랜치를 보여줌
*이 있는 master 브랜치가 현재 작업중인 브랜치
git checkout hotfitx
로 master 브랜치에서 hotfix 브랜치로 이동
git add
를 사용하지 않고 commit -a
를 입력하면 변경된 저장소 파일 모두를 커밋한다.
hotfix에서 작업한 내역을 master 브랜치에 합침
먼저 현재 작업 브랜치를 바꿔줌
그리고
git merge
를 통해 합병. hotfix 브랜치는 변하지 않고 master 브랜치만 변함!
touch .gitignore
아무것도 없는 빈 파일 생성. 파일 이름이 .
으로 시작하면 ls
명령어가 아닌 ls-al
실행
master branch에 "Hello world, Tell your world, I love you"가 저장되었고 hotfix branch에 "Hello world, Tell your world, I love you too"가 저장됨충돌이 난 부분의 시작은 <<<<<<<< HEAD 이며 끝 부분은 >>>>>>> hotfix이다. 중간의 ========= 은 각각 브랜치 영역을 구분한다. 또한 master|MERGING은 현재 병합도중 충돌이 발생해 해결하는 과정 중이라고 명시된 것이다.
충돌을 해결하기 위해 hello.py의 내용을 수정한다(두 브랜치의 수정 내역을 합침)vim hello.py
vim hello.py
를 실행시켜 <<<<<HEAD ====== >>>>> hotfix
부분을 삭제한다.
그리고 나서
git commit -a -m "conflict solved"
를 실행하면 정상적으로 커밋이 된다. -a
는 모든 내용을 저장하는 단축어며 -m
은 vim으로 가지 않고도 인라인 커밋을 가능하게 하는 단축어다.
원격저장소를 통해 협업 할 수 있는 툴
repository = 원격저장소
fork = 다른 사람의 저장소를 복사
pull request = 포크한 저장소를 수정해 다시 원본 저장소에 병합해달라는 요청을 보냄
issues = 저장소 안에서 사용자들 사이의 문제를 논의
wiki = 저장소와 관련된 체계적인 기록을 남김