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)을 따릅니다.