필수항목
Git global setup - 모든 저장소에서 사용할 사용자 설정
만약에 local user가 있다면 global user 설정은 무시됩니다. global은 git을 설치하고 처음 사용할 때 한번만 설정해 주면 됩니다.
git config --global user.name "myname"
git config --global user.email "khy@example.com"
로컬 유저 설정은 git 저장소마다 지정할 수 있으며 해당 git 저장소에서만 사용되는 설정입니다. 반면 global 설정은 현재 git 저장소뿐만 아니라 다른 모든 git 저장소에도 적용되는 설정입니다.
git 저장소 생성&초기화 관련
github, gitlab, bitbutcket 등 원격 저장소를 지원하는 업체의 홈페이지에서 새로운 저장소를 만들었다고 가정하고 로컬에서 해야하는 과정을 진행합니다.
새 저장소 만들기
clone 시 특별히 경로를 지정하지 않으면 현재 경로에 원격 저장소 이름과 같은 폴더가 생성됩니다. 그 후 해당 폴더에 들어가서(주의: clone한 곳에서 git 명령어 날려봤자 저장소가 아니라서 안됩니당) 프로젝트를 시작하고 story 또는 task 단위로 알아보고 해당 task로 되돌리기 쉽게 커밋하면 됩니다.
git clone [git 주소]
cd springboot-template
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
기존에 작업했던 폴더를 git 저장소로 만들어 push하기
git을 사용하지 않고 만들던 세미 프로젝트 또는 개인적인 작업들을 git 원격 저장소에 추가해 관리 하고 싶을 때 사용합니다. SVN이나 다른 버전관리 툴에서 작업했던 것들도 git으로 관리하고 싶을 때 유용하겠죠.
cd existing_folder
git init
git remote add origin [git 주소]
git add .
git commit -m "Initial commit"
git push -u origin master
기존에 clone받은 저장소의 origin 변경하는 방법
해당 명령은 clone 명령을 통해 받았던 repo(저장소)를 다른 원격 저장소로 연결하기 위함입니다.
cd existing_repo
git remote rename origin old-origin
git remote add origin [git 주소]
git push -u origin --all
git push -u origin --tags
로컬에서 원격저장소 브랜치 생성하기
// 현재 폴더가 이미 git 저장소라고 가정하고 진행
// 로컬에 feature 브랜치 생성
git checkout -b feature
// 원격 저장소(remote)에 feature 브랜치 생성
git push origin feature
// 하지만 원격저장소의 feature 브랜치와 로컬의 feature브랜치는 별개의 상태
// (origin/feature != feature)
// 현재 로컬브랜치와 원격 브랜치를 연결. 이제 커밋하고 푸쉬하면 원격저장소로 감
git branch --set-upstream-to origin/feature
// 또는 너무 긴 --set-upstream-to 대신 -u 옵션을 통해 업스트림 브랜치로 설정가능
git branch -u origin/feature
브랜치
로컬 작업브랜치(feature)를 로컬 공동브랜치(dev)로 merge하고 작업브랜치 삭제
// 현재 작업을 완료한 브랜치는 feature 임
// 공동 브랜치로 체크아웃 --> 현재 브랜치는 dev가 됨
git checkout dev
// feature 브랜치의 변경사항을 현재 브랜치로 가져옴
git merge feature
// merge 중 conflict(충돌)나면 resolve 필요. conflict 해결 방법은 따로 포스팅을 해야 할 듯
// merge가 성공적으로 끝나면 작업 브랜치는 삭제함 (Optional)
git branch --delete feature
// 작업항목이 남아있거나 commit 이력이 있으면 삭제가 안됨
// 삭제 실패 시 -D 옵션으로 강제 삭제
git branch -D feature
// 만약 remote branch까지 삭제하고 싶다면?
git push origin :feature
복구 관련
삭제된 파일 리스트 확인
$ git ls-files -d
파일 되돌리기
$ git checkout [files]
파일이 여러개인 경우, 삭제된 모든 파일을 복구하기
$ git ls-files -d | xargs git checkout --