tutorial-git

어떻게 깃을 사용하는지 빠르게 알아봅시다

Quick learn How to use the Git

가이드 페이지에서 보기

:innocent: 바쁘잖아요 다들

:flushed: 누가 읽어야 할까요

:clap: 시작하며

깃을 왜 사용하죠?

도대체 깃헙(GitHub)이 뭐야!?

깃이 어떤 역할을 하는건가요?

깃은 어디에서 지원하나요?

:wrench: 설정

$ git config --global user.name "Kenneth"
$ git config --global user.email "[email protected]"
$ git init
$ git remote add origin https://github.com/KennethanCeyer/tutorial.git
$ git clone https://github.com/KennethanCeyer/tutorial.git

:lock: SSH

Refer SSH

Refer folder ssh

Refer Setting

Refer SSH Keys

Refer New SSH key

Refer SSH contents

Q. SSH 설정을 해도 아이디와 비밀번호를 물어봐요!

접속 정보에서 Use SSH를 클릭해 SSH 접속 정보를 이용하시기 바랍니다.

SSH connection string

이때, git remote set-url 명령어를 이용하여 기존의 원격지 주소를 수정해야 합니다.

SSH 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

:page_with_curl: 소스 기록

$ git add .
$ git add . -f

Remote show origin

:pencil2: 소스 커밋

$ git status

Git add files

Git commit

$ git add *
$ git commit -m "UI 레이아웃 이슈 수정."

# 수정사항 발생
$ git add *
$ git commit -m "UI 레이아웃 이슈 수정 및 관리자 벨리데이션 추가." --amend

:tada: 소스 업데이트

# master 브랜치를 pull하여 업데이트
$ git pull origin master
  
# master 브랜치를 fetch하여 업데이트
$ git fetch origin master

:clock11: 소스 복원

$ git reset HEAD^ --soft
# 바로 이전 단계로 인덱스와 워킹트리를 버리고 리셋.
$ git reset HEAD^ --hard 
    
# 바로 두번째 전 단계로 인덱스와 워킹트리를 버리고 리셋.
$ git reset HEAD~2 --hard 
    
# 특정 리비전의 기록으로 인덱스는 버리고 워킹트리를 보존하여 리셋.
$ git reset 991ee8c --mixed

:seedling: 브랜치

Git branch 이미지 출처 StackOverflow

$ git branch new
$ git checkout new
# 브랜치 new를 생성과 동시에 체크아웃.
$ git checkout -b new
$ git push new

Git new branch

Git delete branch

:fearful: 소스 병합

Difference between merge and rebase

이미지 출처 http://git.mikeward.org/

* 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.

:sob: 충돌과 해결

* master -> some_file.txt의 내용
Apple
* sub -> some_file.txt의 내용
* 2번째 단계 HEAD
Banana
* master -> some_file.txt의 내용
* 2번째 단계 HEAD(sub랑 단계가 겹침)
Strawberry
* 머지 이후 master -> some_file.txt (충돌)
<<<<<<< HEAD
Strawberry
=======
Banana
>>>>>>> sub
* 머지 이후 master -> some_file.txt (수정)
Strawberry
$ git add *
$ git commit -m "Solved the conflict issue."

:mag: 라이센스

cc license

이 가이드는 Creative Commons Attribution 4.0 (CCL 4.0)을 따릅니다.