<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>git on LaMelD</title><link>https://lameld.github.io/tags/git/</link><description>Recent content in git on LaMelD</description><generator>Hugo</generator><language>ko-KR</language><lastBuildDate>Fri, 29 Nov 2019 17:38:30 +0900</lastBuildDate><atom:link href="https://lameld.github.io/tags/git/index.xml" rel="self" type="application/rss+xml"/><item><title>1장 : 깃 시작하기</title><link>https://lameld.github.io/gitstudy/ch1/</link><pubDate>Fri, 29 Nov 2019 17:38:30 +0900</pubDate><guid>https://lameld.github.io/gitstudy/ch1/</guid><description>&lt;h3 id="1-깃으로-무엇을-할-수-있을까"&gt;1. 깃으로 무엇을 할 수 있을까?&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;버전관리&#10;&lt;ul&gt;&#10;&lt;li&gt;local 저장소에 관련된 내용 :: git&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;백업하기&#10;&lt;ul&gt;&#10;&lt;li&gt;remote 저장소에 관련된 내용 :: github&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;협업하기&#10;&lt;ul&gt;&#10;&lt;li&gt;git, github 다루기&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="2-깃-설치하기"&gt;2. 깃 설치하기&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;기본적인 설치&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://git-scm.com/"&gt;깃 설치 사이트&lt;/a&gt;에서 설치할 수 있다.&lt;/li&gt;&#10;&lt;li&gt;설치과정은 기본적으로 설정되어있는 것을 따라간다.&lt;/li&gt;&#10;&lt;li&gt;설치가 완료되면 윈도우 작업 표시줄의 검색 창에 &lt;code&gt;git&lt;/code&gt;이라고 입력한 후 검색 결과 중에서 &lt;code&gt;Git Bash&lt;/code&gt;를 누른다.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;git&lt;/code&gt;이라고 입력한 수 &lt;code&gt;enter&lt;/code&gt;를 눌러보면 깃 명령에서 사용할 수 있는 여러 옵션이 표시된다면 설치 성공이다.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;깃 환경 설정&#10;&lt;ul&gt;&#10;&lt;li&gt;사용자 설정을 위해 &lt;code&gt;git config&lt;/code&gt; 명령을 사용합니다. 여기서 &amp;ndash;global 옵션은 현재 컴퓨터에 있는 모든 저장소에서 같은 사용자 정보를 사용하도록 설정한다.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git config --global user.name &amp;#34;사용자 이름&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git config --global user.email 사용자@이메.일&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="3-리눅스-명령-연습"&gt;3. 리눅스 명령 연습&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;~ : 홈 디렉토리&lt;/li&gt;&#10;&lt;li&gt;pwd : 현재 작업 디렉토리&lt;/li&gt;&#10;&lt;li&gt;ls : 디렉토리 내용 확인&lt;/li&gt;&#10;&lt;li&gt;cd : 디렉토리 이동&lt;/li&gt;&#10;&lt;li&gt;. : 현재 디렉토리&lt;/li&gt;&#10;&lt;li&gt;.. : 상위 디렉토리&lt;/li&gt;&#10;&lt;li&gt;mkdir : 디렉토리 생성&lt;/li&gt;&#10;&lt;li&gt;rm : 파일 제거&#10;&lt;ul&gt;&#10;&lt;li&gt;rm -rf : 파일, 디렉토리를 가리지 않고 삭제(-r : recursive, -f : force)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;vim : 편집기&#10;&lt;ul&gt;&#10;&lt;li&gt;기본 편집기 변경하기&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;git config -- global core.editor &amp;quot;notepad++&amp;quot;&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;touch : 빈 파일 생성&lt;/li&gt;&#10;&lt;li&gt;cat : 파일 내용 확인&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;cat [파일이름]&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;cat [파일1], [파일2], [파일3], ... , [파일n] &amp;gt; [새파일]&lt;/code&gt; : 파일n 개를 차례로 연결해서 새로운 파일을 만든다.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;cat [파일1] &amp;gt;&amp;gt; [파일2]&lt;/code&gt; : 파일1의 내용을 파일2 끝에 연결한다.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>2장 : 깃으로 버전 관리하기</title><link>https://lameld.github.io/gitstudy/ch2/</link><pubDate>Fri, 29 Nov 2019 17:38:30 +0900</pubDate><guid>https://lameld.github.io/gitstudy/ch2/</guid><description>&lt;h3 id="1-깃-저장소"&gt;1. 깃 저장소&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;깃 초기화 하기&#10;&lt;ul&gt;&#10;&lt;li&gt;디렉토리를 하나 새로 만들고 내부를 살펴본 뒤 &lt;code&gt;git init&lt;/code&gt;을 하면 &lt;code&gt;.git&lt;/code&gt;이라는 디렉토리가 새로 생긴다.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;.git&lt;/code&gt; : 깃을 사용하면 버전이 저장될 &amp;lsquo;저장소&amp;rsquo;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ mkdir hi-git&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ cd hi-git&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ ls -al&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git init&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ ls -al&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="2-버전-만들기"&gt;2. 버전 만들기&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;깃에서 버전이란&#10;&lt;ul&gt;&#10;&lt;li&gt;문서를 수정하고 저장할 때마다 생기는 것&lt;/li&gt;&#10;&lt;li&gt;원래 파일 이름은 그대로 유지하면서 파일에서 무엇을 변경했는지를 변경 시점마다 저장할 수 있다.&lt;/li&gt;&#10;&lt;li&gt;각 버전마다 작업했던 내용을 확인할 수 있고, 그 버전으로 rollback할 수 있다.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;스테이지와 커밋 이해하기&#10;&lt;ul&gt;&#10;&lt;li&gt;작업트리 :: workspace&#10;&lt;ul&gt;&#10;&lt;li&gt;파일 수정, 저장 등의 작업을하는 디렉토리&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;스테이지 :: index&#10;&lt;ul&gt;&#10;&lt;li&gt;버전으로 만들 파일이 대기하는 곳&lt;/li&gt;&#10;&lt;li&gt;명령어&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git add [파일 또는 디렉토리]&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;li&gt;저장소 :: local repository&#10;&lt;ul&gt;&#10;&lt;li&gt;스테이지에 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳&lt;/li&gt;&#10;&lt;li&gt;명렁어&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git commit -m &amp;#34;커밋 메시지 입력&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;li&gt;순서&lt;br&gt;&#10;1.작업트리에서 작업을 한다.&lt;br&gt;&#10;2.작업물을 스테이지에 올린다.&lt;br&gt;&#10;3.스테이지에 있는 모든 것을 로컬 저장소에 저장한다.&lt;/li&gt;&#10;&lt;li&gt;스테이징과 커밋 한꺼번에 처리하기&#10;&lt;ul&gt;&#10;&lt;li&gt;한 번이라도 커밋한 적이 있는 파일을 다시 커밋할 때 사용할 수 있다.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;git commit -am &amp;quot;커밋 메시지&amp;quot;&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;현재 깃 상태 확인 :: git status&lt;/li&gt;&#10;&lt;li&gt;깃의 로그 확인 :: git log&#10;&lt;ul&gt;&#10;&lt;li&gt;여러가지 옵션을 줄 수 있다.&lt;/li&gt;&#10;&lt;li&gt;대표적인 옵션 :: &amp;ndash;oneline, &amp;ndash;branches, &amp;ndash;graph&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;변경 사항 확인하기 :: git diff&#10;&lt;ul&gt;&#10;&lt;li&gt;작업 디렉토리와 저장소의 차이를 볼 수 있다.&lt;br&gt;&#10;&lt;img src="https://lameld.github.io/images/work.PNG" alt="이미지 대체"&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;버전 만드는 단계마다 파일 상태 알아보기&#10;&lt;ul&gt;&#10;&lt;li&gt;tracked 파일과 untracked 파일&#10;&lt;ul&gt;&#10;&lt;li&gt;untracked 파일 :: 한번도 깃에서 버전 관리를 하지 않았기 때문에 수정 내역을 추적하지 않음.&lt;/li&gt;&#10;&lt;li&gt;tracked 파일 :: untracked 파일이 아닌 파일&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;unmodified, modified, staged 상태&#10;&lt;ul&gt;&#10;&lt;li&gt;tracked 파일의 상태 확인&lt;/li&gt;&#10;&lt;li&gt;unmodified : 커밋된 이후 수정되지 않은 상태&lt;/li&gt;&#10;&lt;li&gt;modified : 커밋된 이후 수정된 상태&lt;/li&gt;&#10;&lt;li&gt;staged : modified 상태에서 &lt;code&gt;git add [파일 또는 폴더]&lt;/code&gt;를 실시하여 스테이지에 올려놓은 상태(커밋 직전의 상태)&lt;/li&gt;&#10;&lt;li&gt;커밋을 실시하면 unmodified 상태로 돌아간다.&lt;br&gt;&#10;&lt;img src="https://lameld.github.io/images/untracked.PNG" alt="이미지 대체"&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;.gitignore 파일로 버전 관리에서 제외하기!&#10;&lt;ul&gt;&#10;&lt;li&gt;버전 관리 중인 디렉토리 안에 버전관리를 하지 않을 특정 파일 또는 디렉토리가 있다면 .gitignore 파일을 만들어 목록을 지정할 수 있다.&lt;/li&gt;&#10;&lt;li&gt;예시&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ cat .gitignore&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mynote.txt # 파일을 ignore&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;temp/ # 폴더를 ignore&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;.swp # 확장자를 ignore&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;li&gt;작업 되돌리기(Rollback)&#10;&lt;ul&gt;&#10;&lt;li&gt;작업트리에서 수정한 파일 되돌리기 :: &lt;code&gt;git checkout -- [수정한 파일]&lt;/code&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;checkout으로 되돌린 내용은 다시 복구할 수 없습니다.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;스테이징 되돌리기 :: &lt;code&gt;git reset HEAD [파일이름]&lt;/code&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;수정된 파일을 스테이징 했을 때, 스테이징을 취소한는 방법&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;최신 커밋 되돌리기 :: &lt;code&gt;git reset HEAD^&lt;/code&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;가장 마지막에 한 커밋을 취소하는 방법&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;git reset&lt;/code&gt; 명령의 옵션&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;git reset --soft HEAD^&lt;/code&gt; : 최근 커밋을 하기 전 상태로 작업 트리를 되돌립니다.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;git reset --mixed HEAD^&lt;/code&gt; : 최근 커밋과 스테이징을 하기 전 상태로 작업 트리를 되돌린다. 기본값&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;git reset --hard HEAD^&lt;/code&gt; : 최근 커밋과 스테이징, 파일 수정을 하기 전 상태로 작업 트리를 되돌린다. 되돌린 내용은 복구 불가능&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;HEAD^&lt;/code&gt; 부분에 &lt;code&gt;커밋해시&lt;/code&gt;를 넣어주면 특정 커밋 상태로 되돌아갈 수 있습니다.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;특정 커밋으로 되돌아간다면 그 이후의 버전을 삭제할 수 있다.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;버전 삭제하지 않고 되돌리기 :: &lt;code&gt;git revert [커밋 해쉬를 넣는다]&lt;/code&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;나중에 사용할 것을 대비해서 커밋을 되돌리더라도 취소한 커밋을 남겨두어야 할 때가 있다.&lt;/li&gt;&#10;&lt;li&gt;이때는 &lt;code&gt;git reset&lt;/code&gt;이 아닌 &lt;code&gt;git revert&lt;/code&gt;를 사용한다.&lt;br&gt;&#10;&lt;img src="https://lameld.github.io/images/work.PNG" alt="이미지 대체"&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>3장 : 깃과 브랜치</title><link>https://lameld.github.io/gitstudy/ch3/</link><pubDate>Fri, 29 Nov 2019 17:38:30 +0900</pubDate><guid>https://lameld.github.io/gitstudy/ch3/</guid><description>&lt;h3 id="1-브랜치branch"&gt;1. 브랜치(branch)&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;분기점&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://lameld.github.io/images/branch.PNG" alt="이미지"&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;master에서 commit한다.&lt;/li&gt;&#10;&lt;li&gt;현 상태에서 Feature-1 브랜치를 만들어 새로운 내용을 추가하여 commit한다.&lt;/li&gt;&#10;&lt;li&gt;master에서 새로운 내용을 넣어 commit한다.&lt;/li&gt;&#10;&lt;li&gt;현 상태에서 Feature-2 브랜치를 만들어 새로운 내용을 추가하여 commit 한다.&lt;/li&gt;&#10;&lt;li&gt;Feature-1과 master를 merge(병합)한다.&lt;/li&gt;&#10;&lt;li&gt;Feature-2와 master를 merge(병합)한다.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="2-브랜치-만들기"&gt;2. 브랜치 만들기&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;실습 환경 설정하기&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ mkdir branchtest&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ cd branchtest&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git init&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ vim work.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git add work.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git commit -m &amp;#34;work 1&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#10;&lt;li&gt;새로운 저장소를 만든다.&lt;/li&gt;&#10;&lt;li&gt;새로운 파일을 만들고 commit까지 실시한다.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;새 브랜치 만들기&#10;&lt;ul&gt;&#10;&lt;li&gt;브랜치 확인 :: &lt;code&gt;git branch&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;브랜치 생성 :: &lt;code&gt;git branch [브랜치 이름]&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git branch&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git branch apple&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git branch ms&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git branch google&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;li&gt;브랜치 이동하기 :: &lt;code&gt;git checkout [브랜치 이름]&lt;/code&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;master에서 work.txt를 수정하고 커밋한다.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;git log --oneline&lt;/code&gt;으로 로그를 보면 master와 다른 브랜치의 상태가 다른 것을 확인 할 수 있다.&lt;/li&gt;&#10;&lt;li&gt;apple 브랜치로 이동하여 &lt;code&gt;git log --oneline&lt;/code&gt;으로 로그를 보면 HEAD가 apple를 가리키고 있는 것을 볼 수 있다.&lt;/li&gt;&#10;&lt;li&gt;work.txt를 cat으로 확인해보면 master에서 수정한 내용이 반영되지 않았음을 확인할 수 있다.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="3-브랜치-정보-확인하기"&gt;3. 브랜치 정보 확인하기&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;apple에서 work.txt를 수정하고 커밋한다.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;git log --oneline --branches --graph&lt;/code&gt;를 한다면 분기되었음을 그래프로 확인할 수 있다.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;git log master..apple&lt;/code&gt; : master 브랜치를 기준으로 apple과 비교하여 차이점을 알 수 있다.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;git log apple..master&lt;/code&gt; : apple 브랜치를 기준으로 master와 비교하여 차이점을 알 수 있다.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="4-브랜치-병합하기"&gt;4. 브랜치 병합하기&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;서로 다른 파일 병합&#10;&lt;ul&gt;&#10;&lt;li&gt;새로운 저장소를 만든다.&lt;/li&gt;&#10;&lt;li&gt;work.txt 파일을 만들어 &amp;lsquo;1&amp;rsquo;을 입력하고 저장&lt;/li&gt;&#10;&lt;li&gt;add 해주고 commit을 실행하는데 메시지를 &amp;ldquo;work 1&amp;quot;으로 한다.&lt;/li&gt;&#10;&lt;li&gt;b1 브랜치를 생성해준다.&lt;/li&gt;&#10;&lt;li&gt;master 브랜치에서 master.txt 파일을 만들어 &amp;lsquo;master 2&amp;rsquo;를 입력하고 저장&lt;/li&gt;&#10;&lt;li&gt;&amp;ldquo;master work 2&amp;quot;라는 메시지와 함께 커밋&lt;/li&gt;&#10;&lt;li&gt;b1 브랜치로 이동하여 b1.txt 파일을 만들어 &amp;lsquo;b1 2&amp;rsquo;를 입력하고 저장&lt;/li&gt;&#10;&lt;li&gt;&amp;ldquo;b1 work 2&amp;quot;라는 메시지와 함께 커밋&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;git log --oneline --branches --graph&lt;/code&gt;로 현재 상태를 확인한다.&lt;/li&gt;&#10;&lt;li&gt;master 브랜치로 이동하여 &lt;code&gt;git merge b1&lt;/code&gt;을 입력하여 병합한다. :: master 브랜치를 b1과 병합한 결과를 master 브랜치에 적용한다.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ mkdir man1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ cd man1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git init&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ vim work.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git add work.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git commit -m &amp;#34;work 1&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git branch b1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ vim master.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git add master.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git commit -m &amp;#34;master work 2&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git checkout b1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ vim b1.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git add b1.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git commit -m &amp;#34;b1 work 2&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git log --oneline --branches --graph&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git checkout master&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git merge b1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ ls -al&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;li&gt;같은 파일 다른 위치 수정후 병합&#10;&lt;ul&gt;&#10;&lt;li&gt;새로운 저장소를 만든다.&lt;/li&gt;&#10;&lt;li&gt;work.txt 파일을 만들어 아래와 같이 입력하고 저장&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#title&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;content&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#title&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;content&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;li&gt;add 해주고 commit을 실행하는데 메시지를 &amp;ldquo;work 1&amp;quot;으로 한다.&lt;/li&gt;&#10;&lt;li&gt;b1 브랜치를 생성해준다.&lt;/li&gt;&#10;&lt;li&gt;master 브랜치에서 work.txt 파일을 아래와 같이 수정하여 &amp;ldquo;master work 2&amp;rdquo; 메시지로 커밋한다.&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#title&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;master content 2&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#title&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;content&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;li&gt;b1 브랜치로 이동하여 work.txt 파일을 아래와 같이 수정하여 &amp;ldquo;b1 work 2&amp;rdquo; 메시지로 커밋한다.&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#title&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;content&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#title&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;b1 content 2&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;li&gt;master 브랜치로 이동하여 merge를 실시한 뒤 work.txt를 cat으로 확인하면 자연스럽게 합쳐진 모습을 볼 수 있다.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git init man2&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ cd man2&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ vim work.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git add work.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git commit -m &amp;#34;work 1&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git branch b1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ vim work.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git commit -am &amp;#34;master work 2&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git checkout b1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ vim work.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git commit -am &amp;#34;b1 work 2&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git checkout master&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git merge b1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ cat work.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;li&gt;같은 파일 같은 위치 수정후 병합&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;em&gt;&lt;strong&gt;깃에서는 줄 단위로 변경여부를 확인한다.&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;em&gt;&lt;strong&gt;같은 줄을 수정했을 때 브랜치를 병합하면 브랜치 충돌이 발생&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;&#10;&lt;li&gt;새로운 저장소를 만든다.&lt;/li&gt;&#10;&lt;li&gt;work.txt 파일을 만들어 아래와 같이 입력하고 저장&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#title&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;content&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#title&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;content&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;li&gt;add 해주고 commit을 실행하는데 메시지를 &amp;ldquo;work 1&amp;quot;으로 한다.&lt;/li&gt;&#10;&lt;li&gt;b1 브랜치를 생성해준다.&lt;/li&gt;&#10;&lt;li&gt;master 브랜치에서 work.txt 파일을 아래와 같이 수정하여 &amp;ldquo;master work 2&amp;rdquo; 메시지로 커밋한다.&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#title&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;content&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;master content 2&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#title&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;content&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;li&gt;b1 브랜치로 이동하여 work.txt 파일을 아래와 같이 수정하여 &amp;ldquo;b1 work 2&amp;rdquo; 메시지로 커밋한다.&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#title&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;content&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;b1 content 2&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#title&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;content&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;li&gt;master 브랜치로 이동하여 merge를 실시하면 CONFLICT 메시지가 출려된다.&lt;/li&gt;&#10;&lt;li&gt;편집기로 work.txt를 열어서 필요없는 내용 &lt;code&gt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;HEAD&lt;/code&gt;, &lt;code&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;b1&lt;/code&gt;, &lt;code&gt;=====&lt;/code&gt;을 삭제한 뒤 저장하고 편집기를 종료한다.&lt;/li&gt;&#10;&lt;li&gt;수정한 work.txt를 스테이지에 올리고 커밋하면 충돌을 해결하고 커밋한 것이다.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;git log --oneline --branches --graph&lt;/code&gt;로 지금까지 만든 브랜치와 커밋의 관계를 한눈에 확인할 수 있다.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git init man2&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ cd man2&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ vim work.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git add work.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git commit -m &amp;#34;work 1&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git branch b1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ vim work.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git commit -am &amp;#34;master work 2&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git checkout b1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ vim work.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git commit -am &amp;#34;b1 work 2&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git checkout master&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git merge b1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ vim work.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git commit -am &amp;#34;merge b1 branch&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git log --oneline --branches --graph&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;li&gt;브랜치를 병합할 때 편집기&#10;&lt;ul&gt;&#10;&lt;li&gt;편집기 열리게 하기 : &lt;code&gt;git merge b1 --edit&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;편집기 열리지 않게 하기 : &lt;code&gt;git merge b1 --no-edit&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;병합 및 충돌 해결 프로그램&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;프로그램&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;설명&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;P4Merge&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;무료이고 직관적이며 사용이 편리하고 병합 기능이 뛰어남. 단축키가 지원되지 않는 단점이 있다.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;Meld&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;무료이며 오픈소스. 파일을 비교하는 것뿐만 아니라 직접 편집할 수 있다.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;Kdiff3&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;무료이고 사용이 편리하고 병합 기능이 뛰어나지만 한글이 깨져보일 수 있다.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;Araxis Merge&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;유료지만 용량이 큰 파일에서도 잘 동작함&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;병합이 끝난 브랜치 삭제&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;git branch&lt;/code&gt;로 남은 브랜치 확인&lt;/li&gt;&#10;&lt;li&gt;저장소의 기본 브랜치는 master 브랜치이므로 master 브랜치로 이동하여 브랜치를 삭제하는 것이 안전하다.&lt;/li&gt;&#10;&lt;li&gt;b1 브랜치의 삭제&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;git branch -d b1&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;git branch --delete b1&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;git branch -D b1&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="5-브랜치-관리하기"&gt;5. 브랜치 관리하기&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;커밋 해시를 통해서 브랜치들을 관리하고 커밋 해시(버전)으로 rollback 할 수 있다.&lt;/li&gt;&#10;&lt;li&gt;수정 중인 파일 감추기 및 되돌리기 :: &lt;code&gt;git stash&lt;/code&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;아직 커밋하지 않고 작업 중인 파일들을 잠시 감춰둘 수 있다.&lt;/li&gt;&#10;&lt;li&gt;stash 명령을 사용하기 위해선 파일이 tracked 상태여야 한다.(한 번은 커밋한 상태여야 한다)&lt;/li&gt;&#10;&lt;li&gt;새로운 저장소를 만들고 f1.txt, f2.txt를 생성하고 커밋한다.&lt;/li&gt;&#10;&lt;li&gt;f1.txt와 f2.txt를 수정하고 저장만 한 뒤 &lt;code&gt;git status&lt;/code&gt;로 상태를 확인한다.&lt;/li&gt;&#10;&lt;li&gt;각각의 파일이 modified 상태인 것을 확인 할 수있다.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;git stash&lt;/code&gt;를 실시하고 다시 &lt;code&gt;git status&lt;/code&gt;를 해보면 modified 메시지가 사라진 것을 확인 할 수 있다.&lt;/li&gt;&#10;&lt;li&gt;같은 방법으로 여러 파일을 수정한 후 따로 보관할 수 있다.&lt;/li&gt;&#10;&lt;li&gt;stash가 보관되는 공간은 stack으로 이루어져 LIFO이 적용된다.&#10;&lt;ul&gt;&#10;&lt;li&gt;가장 최근에 보관한 stash는 stash@{0}에 담기게 된다.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;감추어둔 파일을 꺼내와 계속 수정하거나 커밋할 수 있다.&lt;/li&gt;&#10;&lt;li&gt;이때 가장 최근 항목을 되돌리기 위해서 &lt;code&gt;git stash pop&lt;/code&gt;을 사용한다.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git init st&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ cd st&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ vim f1.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ vim f2.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git add .&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git commit -m &amp;#34;add f1, f2&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ vim f1.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ vim f2.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git stash&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git stash pop&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;li&gt;stash 관련 명령어&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;git stash&lt;/code&gt; : stash 스택에 modified 상태의 작업물을 담는다.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;git stash pop&lt;/code&gt; : 가장 최근의 항목을 되돌리고 stash 스택에서 제거한다.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;git stash list&lt;/code&gt; : stash 스택의 목록을 확인한다.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;git stash apply&lt;/code&gt; : 가장 최근의 항목을 되돌리고 stash 스택에 남겨둔다.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;git stash drop&lt;/code&gt; : 가장 최근의 항목을 삭제한다.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>4장 : 깃허브로 백업하기</title><link>https://lameld.github.io/gitstudy/ch4/</link><pubDate>Fri, 29 Nov 2019 17:38:30 +0900</pubDate><guid>https://lameld.github.io/gitstudy/ch4/</guid><description>&lt;h3 id="1-원격-저장소와-깃허브"&gt;1. 원격 저장소와 깃허브&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;원격 저장소&#10;&lt;ul&gt;&#10;&lt;li&gt;지역 저장소가 아닌 컴퓨터나 서버에 만든 저장소를 말한다.&lt;/li&gt;&#10;&lt;li&gt;지역 저장소와 연결되어 있으면서 &amp;lsquo;백업&amp;rsquo;과 &amp;lsquo;협업&amp;rsquo;이라는 중요한 역할을 한다.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;깃허브로 할 수 있는 일&#10;&lt;ul&gt;&#10;&lt;li&gt;원격 저장소에서 깃을 사용할 수 있다.&lt;/li&gt;&#10;&lt;li&gt;지역 저장소를 백업할 수 있다.&lt;/li&gt;&#10;&lt;li&gt;헙업 프로젝트에 사용할 수 있다.&lt;/li&gt;&#10;&lt;li&gt;자신의 개발 이력을 남길 수 있다.&lt;/li&gt;&#10;&lt;li&gt;다른 사람의 소스를 살펴볼 수 있고, 오픈 소스에 참여할 수 있다.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="2-깃허브-시작하기"&gt;2. 깃허브 시작하기&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://www.github.com"&gt;깃허브&lt;/a&gt;에 접속한 뒤 계정을 생성한다.&lt;/li&gt;&#10;&lt;li&gt;무료 계정과 유료 계정의 차이 : 협업할 수 있는 계정의 수가 제한되어 있다.&lt;/li&gt;&#10;&lt;li&gt;깃허브에 원격 저장소 만들기&#10;&lt;ul&gt;&#10;&lt;li&gt;repository를 새로 만들어 원격 저장소를 추가할 수 있다.&lt;/li&gt;&#10;&lt;li&gt;Add a License : 오픈 소스 프로젝트를 위한 저장소를 만들 경우 해당 오픈 소스의 라이센스를 선택한다.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="3-지역-저장소를-원격-저장소와-연결하기"&gt;3. 지역 저장소를 원격 저장소와 연결하기&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;지역 저장소를 만든다.&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;git init [지역 저장소 이름]&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;지역 저장소와 원격 저장소를 연결한다.&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;git remote add [원격 저장소 이름] [원격 저장소 URL]&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;원격 저장소 이름 : 사용자 지정&lt;/li&gt;&#10;&lt;li&gt;github에서 지정되어 있는 URL :: &lt;code&gt;clone or download&lt;/code&gt;를 눌렀을 때 나오는 URL&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;지역 저장소와 원격 저장소의 연결 확인&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;git remote -v&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="4-원격-저장소에-올리기-및-내려받기"&gt;4. 원격 저장소에 올리기 및 내려받기&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;원격 저장소에 파일 올리기 :: &lt;code&gt;git push&lt;/code&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;git push origin master&lt;/code&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;push : 원격 저장소에 올리겠다.&lt;/li&gt;&#10;&lt;li&gt;origin : 원격 저장소의 이름&lt;/li&gt;&#10;&lt;li&gt;master : 원격 저장소에 올릴 브랜치&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;원격 저장소에서 파일 받기 :: &lt;code&gt;git pull&lt;/code&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;git pull origin master&lt;/code&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;pull : 원격 저장소에서 받아오겠다.&lt;/li&gt;&#10;&lt;li&gt;origin : 원격 저장소의 이름&lt;/li&gt;&#10;&lt;li&gt;master : 원격 저장소에 받아올 브랜치이름, 지역 저장소의 브랜치 이름&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="5-깃-허브에-ssh-원격-접속하기"&gt;5. 깃 허브에 SSH 원격 접속하기&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;생략하도록 하겠다&amp;hellip;&lt;/li&gt;&#10;&lt;li&gt;필요시 업데이트 하겠다&amp;hellip;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>5장 : 깃허브로 협업하기</title><link>https://lameld.github.io/gitstudy/ch5/</link><pubDate>Fri, 29 Nov 2019 17:38:30 +0900</pubDate><guid>https://lameld.github.io/gitstudy/ch5/</guid><description>&lt;h3 id="1-여러-컴퓨터에서-원격-저장소-함께-사용하기"&gt;1. 여러 컴퓨터에서 원격 저장소 함께 사용하기&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;원격 저장소 복제하기 :: &lt;code&gt;git clone&lt;/code&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;git clone [복사할 원격 저장소의 URL]&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;위와 같이 사용하여 원격 저장소에서 복제할 수 있다.(복제한다 == 클론 == 클로닝)&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;git clone [복제할 저장소의 URL] [복제할 디렉토리]&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;복제할 디렉토리가 없으면 새로 생성해준다.&lt;/li&gt;&#10;&lt;li&gt;복제할 디렉토리를 넣지 않으면 원격 저장소의 이름과 동일하게 복제된다.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;실습을 위한 두 환경 준비&#10;&lt;ul&gt;&#10;&lt;li&gt;두 환경을 만들어 각각 회사와 집이라고 생각하자.&lt;/li&gt;&#10;&lt;li&gt;git_home&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;git clone [URL] git_home&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;git_office&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;git clone [URL] git_office&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;개인 컴퓨터에서 작업하고 올리기&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ cd git_home&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ vim f1.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git commit -m &amp;#34;add c&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git push origin master&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;li&gt;회사 컴퓨터에서 내려받아 작업하기&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ cd ~/git_office&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git pull origin master&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ vim f1.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git commit -am &amp;#34;add d&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git push origin master&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;작업을 함에 있어서 항상 &lt;code&gt;git pull&lt;/code&gt;을 통해서 원격 저장소에 새로 올라온 커밋을 가져와야한다.&lt;/strong&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="2-원격-브랜치-정보-가져오기"&gt;2. 원격 브랜치 정보 가져오기&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;git pull&lt;/code&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;명령은 원격 저장소의 최신 커밋을 지역 저장소에 합쳐준다. 하지만 최신 커밋을 합치기 전에 원격 저장소에 어떤 변화가 있는지 먼저 살펴보아야 한다.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;원격 브랜치 정보 가져오기 :: &lt;code&gt;git fetch&lt;/code&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;fetch(패치) : 불러오다, 가져오다&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;git fetch&lt;/code&gt; : 어떤 변화가 있는지 원격 저장소의 정보를 가져온다.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ cd ~/git_office&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; # 원격 저장소에서 변경을 실시한다.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git fetch&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git log --oneline &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; # 변화된 부분이 없다...&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git status&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; # git pull 명령을 사용하면 지역 저장소를 업데이트 할 수 있다고 한다.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git checkout FETCH_HEAD&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; # 이제 변화된 부분을 확인할 수 있다.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git checkout master&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git merge FETCH_HEAD&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git log --oneline&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; # 커밋 로그를 확인해보면 적용되어 있다.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="3-협업의-기본-알아보기"&gt;3. 협업의 기본 알아보기&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;공동 작업자 추가하기(팀장)&#10;&lt;ul&gt;&#10;&lt;li&gt;누구나 프로젝트의 소스를 내려받을 수 있지만 커밋을 푸시할 순 없다.&lt;/li&gt;&#10;&lt;li&gt;공동 작업자가 커밋을 푸시할 수 있도록 권하는 주는 것이다.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;작업 환경 구성하기(팀장, 팀원)&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git init project&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ cd project&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; # --global 옵션을 제거하여 현재 저장소에만 적용될 config입니다.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git config user.name &amp;#34;사용자 이름&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git config user.email 사용자@이메.일&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;li&gt;원격 저장소에 첫 커밋 푸시하기(팀장)&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ vim overview.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git add overview.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git commit -m &amp;#34;overview&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#10;&lt;li&gt;새로운 깃허브 저장소를 만든다.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git remote add origin [저장소 URL]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git push origin master&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;li&gt;공동 작업자 컴퓨터에서 원격 저장소 복제하기&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git clone [저장소 URL]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; # 사용자 이름과 이메일을 설정한다.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;li&gt;첫 번재 커밋(팀장이 실시한)이 아니라면 풀 먼저하기&#10;&lt;ul&gt;&#10;&lt;li&gt;팀원이 작업트리에서 작업을 수행함에 있어서 팀장이 그 중에 푸시를 실시할 수 있다.&lt;/li&gt;&#10;&lt;li&gt;팀원이 작업을 완료하고 푸시하려고 할 때 팀장의 새로운 커밋이 푸시되었으므로 rejected라는 오류 메시지가 나온다.&lt;/li&gt;&#10;&lt;li&gt;이를 방지하기위해서 푸하기전에 항상 풀을 먼저 실시해야 한다.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;같은 파일을 수정했을 경우 풀 과정에서 merge 에러가 발생할 수 있다.&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;이럴경우 수동으로 이를 해결해주어야 한다&amp;hellip; 귀찮다&amp;hellip;&lt;/strong&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="4-협업에서-브랜치-사용하기"&gt;4. 협업에서 브랜치 사용하기&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;협업을 하다 보면 팀원들이 각자 기능을 맡아서 작업하는 경우가 많다.&lt;/li&gt;&#10;&lt;li&gt;이럴 때는 각자의 작업이 master 브랜치에 있는 문서들과 섞이지 않도록 새 브랜치를 만들어서 버전을 관리한다.&lt;/li&gt;&#10;&lt;li&gt;각 팀원이 만든 새 브랜치 역시 원격 저장소에 그대로 푸시할 수 있다.&lt;/li&gt;&#10;&lt;li&gt;새로 만든 브랜치 푸시하기&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git pull origin master&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; # checkout 명령에 -b 옵션을 붙여 브랜치를 새로 만들고 이동까지 한번에&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; # f 브랜치가 있다면 브랜치로 이동&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git checkout -b f&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ vim f1.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git add f1.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git add f1.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git commit -m &amp;#34;feature1&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git push origin f&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#10;&lt;li&gt;웹 브라우저로 원격 저장소로 접속하면 브랜치가 생성되어 있다.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;풀 리퀘스트로 푸시한 브랜치 병합하기&#10;&lt;ol&gt;&#10;&lt;li&gt;브랜치 설명 옆에 있는 &lt;code&gt;New pull request&lt;/code&gt;를 누른다.&lt;/li&gt;&#10;&lt;li&gt;풀 리퀘스트 메시지를 작성한 후 &lt;code&gt;Create pull request&lt;/code&gt;를 누르면 협업 중인 저장소에 풀 리퀘스트가 전송된다.&lt;/li&gt;&#10;&lt;li&gt;협업 중인 원격 저장소에 등록된 풀 리퀘스트는 공동 작업자 중 누구나 살펴보고 병합할 수 있다. 저장소 파일 위의 &lt;code&gt;Pull request&lt;/code&gt;를 누르면 등록된 풀 리퀘스트 목록이 나타난다. 등록된 풀 리퀘스트를 누른다.&lt;/li&gt;&#10;&lt;li&gt;풀 리퀘스트 메시지를 살펴본 다음 내용에 문제가 없으면 &lt;code&gt;Merge pull request&lt;/code&gt;를 눌러 병합을 한다. 필요하다면 이 공간을 통해 풀 리퀘스트를 남간 사람과 메시지를 주고받을 수 있다.&lt;/li&gt;&#10;&lt;li&gt;커밋 메시지를 직접 입력하거나 기본 메시지를 사용할 수도 있다. &lt;code&gt;Confirm merge&lt;/code&gt;를 누르면 브랜치 병합이 끝난다.&lt;/li&gt;&#10;&lt;li&gt;브랜치가 병합되면 해당 브랜치에 있던 파일이 master 화면에 나타날 것이다. 브랜치 상태를 알고 싶다면 파일 목록 위에 있는 &lt;code&gt;2 branches&lt;/code&gt;를 눌러 보시오.&lt;/li&gt;&#10;&lt;li&gt;브랜치가 병합된 상태라면 &lt;code&gt;merged&lt;/code&gt;라고 표시되어 있다. 그리고 공동 작업자 중 누가 브랜치를 병합했는지도 알 수 있다.&lt;/li&gt;&#10;&lt;li&gt;깃허브에서 협업할 때는 보통 작업자마다 브랜치를 만들어서 진행하고, 작업 중간 중간 풀 리퀘스트를 보내서 master 브랜치에 병합한다. 그래서 깃허브로 협업할 때는 다른 작업자의 변경 내용을 바로 반영하기 위해서 항상 풀부터 한 다음 자신의 작업을 진행하는 것이 좋다.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item></channel></rss>