Skip to content

Using Git

정민기 edited this page Sep 8, 2017 · 4 revisions

주요 Git Command

저희가 오늘(2017년 9월 8일 금요일)에 본 저장소를 복제 해온 순서대로 명령어를 정리해 볼게요. 다음에 나오는 < > (부등호 표시의 괄호들)은 명령쓸 때 쓰지 않고 그 안에 자신만의 내용물을 넣으면 됩니다. 예를 들어

$ git clone <remote_repo>

이렇게 하면 remote_repo를 https://github.com/princox/iOSStudy.git 이거로 바꿔서

$ git clone https://github.com/princox/iOSStudy.git

이라고 쓰면 됩니다.

자 그럼 시작할게요.

1. Local PC에 설치된 global Git Config에 내 email 설정하기

$ git config --global user.email <"your_github_email_address@xxxx.com">

2. Local PC의 Git Config에 등록된 user email 확인하기

$ git config user.email

3. Github에 저장된 저장소를 내 Local PC에 복제해오기

옵션 없이 하면 master branch를 복제해서 온다.

$ git clone <remote_repo>
$ git clone https://github.com/~~~~~~.git

Tip - 다음과 같이 clone 뒤에 -b 옵션을 붙이고 branch이름 remote_repo를 쓰게되면 remote_repo에서 해당 이름의 브랜치를 복제해옵니다.

$ git clone -b <branch_name> <remote_repo>

그리고 만약 복제해오는 repository가 private 저장소이면 username과 password를 입력하라고 할 것입니다. (이때 해당 repo에 등록된 이용자만 복제해올 수 있습니다.)

하지만 public(전세계 모두가 볼 수 있는)으로 만들어진 repo라면 따로 인증과정 없이 바로 복제해옵니다.

4. branch 생성하기

이렇게 Github에 올라와있는 repo를 제 Local PC로 복제해왔습니다. 그리고 cd 명령어로 해당 디렉토리에 들어가서 ls -al 명령어를 쳐보면 .git이라는 디렉토리가 있을거에요. 그곳에 해당 저장소에 대한 정보들이 있습니다.

저희 repository 기준으로 iOSStudy라는 디렉토리 안에 .git이라는 directory가 있다면 그곳에서 다음 명령어를 입력해 봅시다.

$ git branch 

그러면 아마 (clone할때 옵션 없이 master를 복제해 왔다면..) master라는 글자에 아마 초록색이 칠해져서 뜰꺼에요.(안되어 있다면 말씀해주세요.)

master 브랜치는 이 저장소의 공용, 메인 브랜치입니다.

따라서 우리는 따로 자신만의 소스를 올릴 것이기 때문에, 자신의 github username으로 브랜치를 만들게요.

새로운 branch를 생성하는 명령어는 다음과 같습니다.

$ git branch <new_branch_name>
$ git branch devming

그리고 다시 git branch 명령어를 입력해보면 master에 초록칠 되어있고 조금 전 생성한 devming이라는 branch(여러분의 이름으로 해주세요!)가 생성될 것입니다.

그 초록칠해진 건 현재 선택되어 있는 branch라는 뜻이구요. add, commit, push에 브랜치 옵션을 달지 않으면 모두 현재 선택된 브랜치를 기준으로 작업을 하게 되니 브랜치를 바꿔서 선택하도록 하겠습니다.

$ git checkout <branch_name>
$ git checkout devming

이렇게 하면 devming이라는 제 branch를 선택하게 됩니다.

그리고 git branch 명령어를 치면 자신의 브랜치(여기서는 devming)이라는 이름에 초록색이 칠해지고 master는 검정색이 된 것을 볼 수 있을 겁니다.

5. 원격 저장소 확인하기

git과 github는 다릅니다. git은 일단 가장 이해하기 쉽게 말하자면 "Local PC에서 사용하는 소스 버전관리 툴"이라고 생각하시고, github는 Github라는 클라우드 서비스에 git을 이용하여 관리한 소스를 업로드하여 서로 공유하는 협업 툴 서비스(? 말이 좀 이상하지만 대충 아시겠죠?)라고 이해하시면 됩니다. github는 말그대로 Git과 hub(뭐 연결해주는 허브 그런거요)의 말을 합친거라고 생각하면 이해하기 쉽습니다.

이 이야기를 한 이유는 git에서 github에 업로드를 하기 전에 둘의 차이점을 아셔야할 것 같아 적었습니다. 그럼 지금까지 Local PC에서 했던 브랜치 만들고 뭐 그런것 들을 github에 올려주도록 하겠습니다. 그럼 현재 Local PC에 저장되어 있는 원격 저장소의 주소를 알아보겠습니다.

$ git remote

위의 명령을 입력하면 아마 origin이라는 텍스트가 뜰거에요.

origin은 무엇이냐? 여기서 origin은 https://github.com/princox/iOSStudy.git입니다.

한마디로 저거 저장소 주소가 넘나 길어서 origin으로 별명 붙인것입니다. (보통 default값으로 origin이라는 이름이 붙습니다.)

근데 여기서 이상한 점은 저 origin을 설정한 적이 없는데 언제 등록되었냐 이건데요.

우리는 현재 repository를 git clone을 통해 복제해 왔기 때문에 그 복제한 repo의 주소가 저장되어 있는 것입니다.

만약 이렇게 remote repository가 등록되어 있지 않고 따로 add해야하는 경우는 나중에 다시 적어드릴게요. 참고로 말씀드리면

$ git remote add <remote_repo>

입니다. (지금은 할 필요 없어요.)

6. Github 원격 저장소에 내 변경사항들을 모두 올려버리기(PUSH)

push는 소스를 수정하거나, 새로운 브랜치를 만드는 등 변동사항이 있고, 그것을 모두가 공유하는 Github에 올리고 싶을 때 사용하는 명령입니다.

$ git push <remote_name> <branch_name>
$ git push origin devming

위 명령을 해석하자면, "origin이라는 원격저장소(https://github.com/princox/iOSStudy.git) 여기에, devming 브랜치를 devming 브랜치에 push하겠다." 입니다.

우리의 경우에 현재 진행된 상황에서 이 명령을 때리면, 새로 만든 branch(devming)가 추가될 것입니다.


여기까지가 오늘 Git 진행 했던 부분입니다. 아래는 추가로 다음주에 아마 작업하시고 소스 github에 올릴때 필요한 사항들일 듯해서 적어봅니다.


7. add - commit - push

우선 위의 과정으로 Local PC에 소스 이력을 저장하고, github에 업로드한다고 보면 되겠습니다.

$ git add <files or directories>
$ git add .

add를 설명하기 전에 commit이라는 것은 어떤 작업의 단위라고 보면 됩니다. 어떤 기능을 수정하거나, 버그가 있는 소스를 고치거나, 소스 리팩토링을 하는 등의 행위를 하고, commit message로 그 이력을 남깁니다. 그러면 나중에 우리가 이력을 보기 편하겠죠? commit의 정해진 단위는 없습니다. 적당히 잘 나누면 됩니다.(제일 어렵죠). iOS Start(https://developer.apple.com/library/content/referencelibrary/GettingStarted/DevelopiOSAppsSwift/) 여기에서는 그냥 한 페이지마다 commit해줘도 괜찮을 듯 합니다.(정답은 아닙니다. 더 세부적으로 나눠도 괜찮아요.)

add는 음.. 변경된 파일들 중 commit을 하기 위한 파일들을 골라내는 작업입니다. git add .을 하게 되면 현재 디렉토리에 있는 모든 파일과 디렉토리에 변경사항이 있는 녀석들을 선택해 놓습니다.

그 다음 작업으로 add된 파일들을 commit하겠습니다.

$ git commit -m <"커밋메시지">
$ git commit -m "Update 통신 관련 소스 수정."

이처럼 커밋을 하게 되면 history에 "Update 통신 관련 소스 수정." 이라는 문구가 남게 되고, 하나의 소스 작업 단위로 history가 남게 됩니다.

그리고 이런 commit들은 Local PC의 .git 디렉토리에 보관됩니다. 그리고 이 commit들을 공유하기 위해 github로 push해 줍니다. push는 위에서 설명드렸으므로 예시만 다시 적어드릴게요

$ git push origin devming

이렇게 되면 commit으로 올린 것들이 github 원격 저장소에 저장되게 됩니다.


우선 기본적인 내용들로 적어 봤습니다. 제대로 Git을 활용하기 위해서는 훨씬 더 많은 것을 알아야 하지만 일단 이정도만 아셔도 아주 기본적인 작업들은 하실 수 있을거에요

이 밖에도 Git을 배우고 싶다면 많은 사이트들이 있을텐데요. 일단 제가 보기에 괜찮아보이는 사이트는

구글링으로 더 자세한 내용들 확인해보시고 또 필요한 내용 업데이트 할게요.

공부할게 많네요 ㅎㅎ 화이팅입니다.

Clone this wiki locally