Quick learn How to use the Git
15분
3번
Visual Studio, Jetbrains IntelliJ, Android Studio 등 대부분의 IDE에서 git 연동 제공.
git config
명령어를 이용하여 계정에 대한 정보를 설정합니다.$ git config --global user.name "Kenneth"
$ git config --global user.email "[email protected]"
git init
작업을 진행합니다$ git init
git init
을 하셨으면 git 리모트를 설정하실 수 있습니다.$ git remote add origin https://github.com/KennethanCeyer/tutorial.git
git clone
명령어를 사용하여 복사를 시작합니다.$ git clone https://github.com/KennethanCeyer/tutorial.git
git clone
을 통해 원격파일을 복사해오면, origin
에는 기본적으로 클론해온 리모트 URL이 저장되있습니다.SSH Key
등록을 권장합니다.ssh-keygen
명령어로 SSH Key를 생성하시면 됩니다.~/[사용자 폴더]/.ssh/
에 파일이 존재하는 것을 확인하실 수 있습니다.id_rsa.pub
는 GitHub에 등록해주셔야 합니다.Profile
중 Settings
메뉴를 눌러주세요 (아래 그림을 참고해주세요.)Settings
화면 중 우측 사이드메뉴에서 SSH and GPG keys
를 클릭해주세요.SSH Keys
화면에서 New SSH key
버튼을 찾아 클릭 해주세요.id_rsa.pub
의 내용을 입력해주시면 됩니다.Q. SSH 설정을 해도 아이디와 비밀번호를 물어봐요!
접속 정보에서 Use SSH를 클릭해 SSH 접속 정보를 이용하시기 바랍니다.
이때, git remote set-url
명령어를 이용하여 기존의 원격지 주소를 수정해야 합니다.
# 혹시 HTTPS 주소를 Remote URL로 사용하는지 체크해주세요.
# Remote URL은 ssh 포맷을 사용해주셔야 ssh 인증을 통해 아이디/비밀번호 입력을 넘어가실 수 있습니다.
# origin의 Remote URL 변경방법.
$ git remote set-url origin [email protected]:KennethanCeyer/tutorial-git.git
# origin의 Remote URL이 제대로 변경됬는지 체크해주세요.
$ git remote show origin
git add
명령어를 이용합니다.$ git add .
-f
옵션을 이용합니다.$ git add . -f
git remote show origin
을 통해 origin에 리모트 주소가 잘 등록되었는지 확인해보세요.staged
상태의 파일이 히스토리로 기록되고 적재됩니다.git status
명령을 이용해서 확인합니다.$ git status
git add
이후 git status
를 하면 아래와 같은 화면이 나옵니다.커밋
작업이 필요합니다.git commit
명령을 통해 Staged 상태의 파일을 커밋할 수 있습니다.-m
옵션을 이용하여 커밋 메시지를 작성하는 것을 권장합니다.--amend
옵션을 이용합니다.$ git add *
$ git commit -m "UI 레이아웃 이슈 수정."
# 수정사항 발생
$ git add *
$ git commit -m "UI 레이아웃 이슈 수정 및 관리자 벨리데이션 추가." --amend
git pull
과 git fetch
가 있습니다.# master 브랜치를 pull하여 업데이트
$ git pull origin master
# master 브랜치를 fetch하여 업데이트
$ git fetch origin master
pull
과 fetch
의 차이점은 merge
작업을 하느냐 안하느냐로 나뉘어지며.pull
은 fetch
+ merge
작업이라고 생각하시면 됩니다.git reset
명령을 사용합니다.$ git reset HEAD^ --soft
git reset
다음 인수로는 되돌리는 버전의 위치를 가리킵니다.HEAD를 확인하시고 싶으면 git reflog
명령을 이용합니다.
git reset
의 옵션 중 리셋 특성을 정하는 --soft, --hard, --mixed
옵션이 있습니다.위 옵션은 아래에서 자세히 설명합니다.
--soft
는 약한특성의 리셋입니다, 되돌릴 때 기존의 인덱스와 워킹트리를 보존합니다.--hard
는 강한특성의 리셋입니다, 되돌릴 때 기존의 인덱스와 워킹트리를 버립니다.--mixed
는 중간특성의 리셋입니다, 되돌릴 때 기존의 인덱스는 버리고 워킹트리를 보존합니다.
# 바로 이전 단계로 인덱스와 워킹트리를 버리고 리셋.
$ git reset HEAD^ --hard
# 바로 두번째 전 단계로 인덱스와 워킹트리를 버리고 리셋.
$ git reset HEAD~2 --hard
# 특정 리비전의 기록으로 인덱스는 버리고 워킹트리를 보존하여 리셋.
$ git reset 991ee8c --mixed
이미지 출처 StackOverflow
branch의 특징은 아래와 같습니다.
서로다른 브랜치들은 같은 조상을 가지고 있다.
git branch [브랜치명]
으로 생성합니다.$ git branch new
하지만 이 이후로 new에서 코드를 수정하면, master와 new는 서로 다른 코드가 되기 때문에 갈라집니다.
git checkout [브랜치명]
을 이용합니다.$ git checkout new
git checkout
에 -b
옵션을 이용합니다.# 브랜치 new를 생성과 동시에 체크아웃.
$ git checkout -b new
git push [브랜치명]
을 이용합니다.$ git push new
git branch
명령에서 -d
옵션을 사용합니다.git merge
와 git rebase
가 존재합니다.이미지 출처 http://git.mikeward.org/
master
에서 sub
branch가 생성되었으며, master 브랜치에서 sub 브랜치를 머지하고자 합니다.* master -> some_file.txt의 내용
* 1번째 단계 HEAD
I'm a file.
* sub -> some_file.txt의 내용
* 2번째 단계 HEAD (최신)
I'm a file.
Inserted new line from the sub branch.
$ git checkout -f master
$ git merge sub
# 현재 브랜치 master, 대상 브랜치 sub.
# master에서 sub를 머지합니다.
# HEAD -> master
# sub -> sub
* merge 이후 master -> some_file.txt
I'm a file.
Inserted new line from the sub branch.
* master -> some_file.txt의 내용
Apple
master
브랜치의 some_file.txt의 내용이다.sub
브랜치이며, 복제 이후 한번 내용을 수정하였습니다.* sub -> some_file.txt의 내용
* 2번째 단계 HEAD
Banana
* master -> some_file.txt의 내용
* 2번째 단계 HEAD(sub랑 단계가 겹침)
Strawberry
* 머지 이후 master -> some_file.txt (충돌)
<<<<<<< HEAD
Strawberry
=======
Banana
>>>>>>> sub
HEAD
는 현재 브랜치(master)를 의미합니다.master
브랜치의 Strawberry를 선택하여 충돌을 해결하겠습니다.* 머지 이후 master -> some_file.txt (수정)
Strawberry
git add
와 git commit
으로 충돌(conflict)을 해결하세요.$ git add *
$ git commit -m "Solved the conflict issue."
이 가이드는 Creative Commons Attribution 4.0 (CCL 4.0)을 따릅니다.