깃 & 깃허브 입문2020. 7. 23. 09:03
728x90

1) 복제하기 Clone/ Cloning

 

$ git clone 복사한 주소 복제할 디렉터리

 : 복사한 주소(원격 저장소)를 복제할 디렉터리(지역저장소)로 복사하는 것

 

하나의 원격저장소를 kim과 jeong이 함께 이용한다고 가정해보겠습니다.

우선 원격저장소인 doit-git을 지역저장소인 kim, jeong에 복사해보겠습니다.

깃허브에서 복사할 원격저장소인 doit-git에 들어간 후, clone or download를 선택합니다.

그리고 복사하기 버튼을 눌러서 복사합니다.

(이때, ssh로 하고 싶으신 분은 Use SSH를 선택하시면 됩니다.)

원격저장소 'doit-git'

 

$ git clone 복사한 주소 복제할 디렉터리 명령어를 이용해서 kim과 jeong에 복제합니다.

git clone은 '복제할 디렉터리'가 없다면 자동으로 생성한 후 복제합니다.

 

참고)

$ git clone 복사한 주소 .

: 원격저장소를 현재 디렉터리( . )에 복제

git clone

 

지역저장소 jeong과 kim에 같은 내용(doit-git)이 복제되었는지 확인해보겠습니다.

kim의 git log

$ cd ..

: 상위 디렉터리로 이동

 

현재 kim 디렉터리에 있는데, jeong으로 이동하기 위해서는 kim의 상위 디렉터리로 이동해야합니다.

따라서 상위디렉터리로 이동 후 jeong으로 이동합니다.

jeong의 git log

이 둘을 비교해보면 3개의 커밋이 일치하다는 것을 알 수 있습니다.

 

또한, 원격 저장소를 복제하면 자동으로 지역저장소와 원격저장소가 연결됩니다.

$ git remote -v 명령어로 연결된 원격저장소를 확인 할 수 있습니다.

지역저장소(jeong)와 원격저장소(doit-git)가 연결됨

지역저장소 kim 디렉터리의 hello.txt에 'kim_first'라는 문구를 추가했습니다.

그리고 commit -am을 통해 스테이징과 커밋을 함께 했습니다.

(한 번 커밋된 적이 있어서 스테이징&커밋 한 번에 가능)

 

$ git push를 통해 수정한 내용을 원격저장소인 doit-git에 push했습니다.

kim의 hello.txt 수정 후 원격저장소에 push

깃허브의 원격저장소인 doit-git에 들어가서 commits를 클릭하면

다음과 같이 지역저장소인 kim에서 커밋한 'add kim-first'가 적용된 것을 알 수 있습니다.

원격저장소(doit-git)의 커밋이력

 

2) 원격저장소에서 지역저장소로 내려받기

지역저장소 jeong 입장에서는 원격저장소 doit-git이 초기에 복제했던 상태와 달라졌습니다.

그래서 원격저장소의 새 커밋을 가져와야합니다.

 

$ cd ~/jeong

: $ cd ~$ cd jeong 을 합친 명령어

지역저장소 jeong으로 이동

$ git pull

: 원격저장소 -> 지역저장소

원격저장소(doit-git)에서 지역저장소(jeong)으로 가져옴

$ vim hello.txt 명령어로 jeong 내부에 있는 hello.txt가 어떻게 바뀌었는지 확인해보았습니다.

kim에서 수정한 'kim_first'가 추가되어있는 것을 확인 할 수 있습니다.

pull 후 jeong의 hello.txt

 

※ 이렇게 하나의 원격 저장소둘 이상의 지역저장소를 연결해서 이용한다면

항상 시작할 때 pull을, 수정 후 push를 하는 것을 습관화 하는 것이 좋습니다.

 

3) 지역저장소, 원격저장소 최종 커밋

우선 지역저장소 kim으로 이동합니다.

지역저장소 kim

$ git log --oneline 명령어를 통해 커밋 상태를 확인해보았습니다.

 

이 때, 최종커밋인 add kim-first 앞에 있는 문구는 (HEAD -> master, origin/master, origin/HEAD)입니다.

여기서 HEAD->master지역저장소의 최종 커밋을,

origin/master원격저장소의 최종 커밋을 의미합니다.

 

아까 add kim-first를 지역저장소인 kim에서 만들고, 원격저장소로 pull했으니 둘의 최종 커밋이 add kim-first겠죠?

커밋상태 확인

kim에 새로 'create hello 3'라는 커밋을 추가하자 HEAD->master가 가리키는 것을 알 수 있습니다.

그리고 아직 push하지 않았으므로 원격저장소의 최종 커밋은 여전히 'add kim-first'임을 알 수 있습니다.

지역저장소 kim에 create hello 3커밋 추가

 

$ git status 명령어로 깃의 상태를 확인해보니,

지역브랜치가 원격브랜치보다 1 commit 앞서있으므로, "git push"를 이용해서 푸쉬 하라는 메시지가 나타납니다.

git status

$ git push 명령어로 원격저장소에 올려주면

다음과 같이 HEAD->master(지역)와 origin/master(원격) 둘 다 create hello 3커밋을 가리키는 것을 알 수 있습니다.

push 후 커밋로그

 

4) 원격 브랜치의 정보만 가져오기

$ pull 명령어는 원격저장소의 커밋을 바로 지역저장소에 합쳐줍니다.

하지만 합치기 전에 원격저장소에 어떤 변화가 있었는지 확인하는게 더 좋겠죠?

이 때 사용하는 명령어가 fetch(가져오다) 입니다.

 

$ git fetch

: 원격 저장소의 정보를 가져옴

 

위의 예시들을 잘 따라왔다면 현재 kim과 원격에는 'create hello 3'커밋이 있지만,

jeong에는 없는 상태 일 것 입니다.

 

jeong디렉터리로 이동 후 $ git fetch 명령어로 원격저장소 doit-git에서 가져옵니다.

그리고 ls -al로 상세 내역을 봅니다.

원격저장소에 hello3.txt파일을 올렸지만, 나타나지 않습니다

더보기

[ jeong에서 확인한 git log ]

 

$ git log 로 확인을 해보면 지역저장소의 최신 커밋인 HEAD -> master만 있는 것을 알 수 있습니다.

즉, 아직 jeong에 합치지 않아 원래 jeong에 있던 것만 나타납니다.

$ git staus를 통해 확인해보면 origin/master(원격)에 비해 1 commit 뒤처져 있으니

"git pull"을 통해 원격저장소에서 가져오라는 메시지가 나타납니다.

 

$ git checkout FETCH_HEAD

: FETCH_HEAD 브랜치로 이동

 

fetch로 가져온 최신 커밋 정보는 FETCH_HEAD에 있습니다.

따라서 FETCH_HEAD로 이동 후 git log로 확인해보겠습니다.

FETCH_HEAD로 이동

origin/master, origin/HEAD가 표시된 'create hello 3' 커밋이 원격브랜치의 최신 커밋임을 알 수 있습니다.

이렇게 fetch를 통해서 원격브랜치의 상태를 확인 할 수 있습니다.

 

확인 후 원격브랜치의 최신 커밋을 현재 브랜치에 합치고 싶으면

$ git merge FETCH_HEAD 명령어로 FETCH_HEAD의 커밋을 병합 할 수 있습니다.

 

우선 master브랜치로 이동 후 FETCH_HEAD 브랜치를 병합합니다.

 

다시 jeong의 git log를 확인해보면 다음과 같이 create hello 3에 HEAD->master, origin/master가 가리키는 것을 알 수 있습니다.

jeong의 git log

 

$ git pull

    =  $ git fetch + $ git merge FETCH_HEAD

 

즉, git pull 명령어를 이용하면

원격브랜치를 가져오기(git fetch)와 병합하기(FETCH_HEAD)를 한 번에 할 수 있습니다.

 

---------------------------------------------------------------------------------------------------

본 글은 Do it! 깃&깃허브 입문 책을 참고하여 작성하였습니다.

https://book.naver.com/bookdb/book_detail.nhn?bid=15910099

반응형
Posted by mminky
깃 & 깃허브 입문2020. 5. 19. 22:07
728x90

깃에 repository를 생성한 후

안드로이드 스튜디오와 연동해보겠습니다!

 

1. 안드로이드 스튜디오 세팅

 

File -> Settings

 

Version Control -> Git -> Test버튼

만약 깃이 잘 설치되어있다면 Git Version is ~라는 창이 뜰 것이다.

 

Add account를 클릭한 후

Login에 깃허브 계정을, Password에 비밀번호를 입력한 후 Log In을 클릭한다

(기존계정은 초록 박스 안의 +와 -를 이용해서 추가/ 제거가 가능하다.)

 

2. 안드로이드 - 깃허브 연결

 

vcs -> Enable Version Control Integration

Git을 선택한다.

 

Import Into Version Control -> Share Project on GitHub 클릭

 

여기서 생성할 저장소 이름을 적는다.

필요하면 Description에 설명을 적는다.

(3명 이하에서는 private를 무료로 제공한다.)

 

'Share'버튼을 클릭하면 다음과 같은 창이 뜬다.

어떤 파일들을 커밋할지에 대한 창이다.

나는 다 선택했다!

 

하단에 Commit Message에는 원하는 메시지를 적으면 된다.

 

깃허브에 들어가서 확인해보면 커밋이 잘 되어있는 것을 확인 할 수 있다.

반응형
Posted by mminky