사용자 도구

사이트 도구


tool:source-control:git

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
tool:source-control:git [2013/12/11 18:07] kieunstool:source-control:git [2024/04/23 22:44] (현재) – 바깥 편집 127.0.0.1
줄 1: 줄 1:
  
 +====== OSX에서 한글 깨지는 경우 ======
 +
 +한글이 깨지거나, 한글 파일이름이 또 생기거나 (한글.txt -> ㅎㅏㄴㄱㅡㄹ.txt 처럼) 하는 경우 옵션 변경
 +
 +  * [[https://sites.google.com/site/dictionaryasaservice/max-os-xui-hangeul-pailmyeong-isyu-haegyeolbeob|정보 URL]]
 +
 +**core.precomposeunicode** 옵션을 **true**로 변경.
 +
 +<code>
 +// for global
 +git config --global core.precomposeunicode true
 +
 +// for local (each git folder)
 +git config --local core.precomposeunicode true
 +</code>
 +
 +또는, 각 git 폴더에 **.git**폴더에 들어가서 **config** 파일을 열어서
 +
 +<code>
 +precomposeunicode = false ;; false -> true로 변경
 +</code>
 +
 +
 +====== 연습사이트 ======
 +
 +  * [[http://learnbranch.urigit.com/|브랜치 연습]]
 +  * [[http://git-scm.com/book/ko|Pro GIT 책, 한글]]
 +
 +====== SubModule ======
 +
 +===== 나이스하게 삭제가 안될때 =====
 +
 +  - GIT 최상단 폴더의 **.gitmodules** 파일에서 삭제할 서브 모듈을 지운다.<code>
 +[submodule "t@3/TestModule"]
 +  path = t@3/TestModule
 + url = https://<<어딘가>>/TestModule.git</code>
 +  - 해당 서브 모듈 폴더를 삭제한다. \\ **t@3/TestModule** 폴더를 삭제한다.
 +  - 커밋<sup>commit</sup>
 +
 +===== 특정 모듈을 한 GIT 리파지토리의 각각 다른 폴더에 서브모듈로 넣으려고 할때 =====
 +
 +TortoiseGIT에서는 안되니, 커맨드로 처리. GIT의 <sup>개념</sup>룰상 한 프로젝트가 한 리파지토리이지만,
 +난 마구잡이로 넣어서 쓰다보니 이런 일도.
 +
 +아래 처럼 각 B, C 폴더에 subA 를 서브모듈로 추가하고 싶다면,
 +<code>
 +A
 ++-- B
 +    +-- (subA)
 ++-- C
 +    +-- (subA)
 +</code>
 +
 +  - B 폴더에는 다른 툴로(예:TortoiseGIT)로 **subA**를 서브모듈로 추가
 +  - C 폴더는 커맨드 라인 창을 열고,<sup>기억이 잘 안나는데..</sup><code>
 +git submodule add --force <GIT 리파지토리> <대상폴더>
 +</code>
 +    * **GIT 리파지토리**는 **Remote** 또는 **로컬 GIT** 리파지토리 상관 없다.
 +    * **대상폴더** : 대상 폴더가 없어야 한다. 있으면 에러 난다.
 +
 +====== SubTree ======
 +
 +  * 기회되면 사용해보는 것으로.
 +  * [[http://git-scm.com/book/ko/Git-%EB%8F%84%EA%B5%AC-Subtree-Merge|6.7 Git 도구 - Subtree Merge]]
 +====== Guide ======
 +
 +===== gc =====
 +
 +리파지토리 다시 재정리
 +
 +<code>
 +git gc
 +</code>
 +
 +===== pull =====
 +
 +  * git 로컬저장소에 원격으로부터 변경된 데이터를 전부 내려받는다. 내려 받은 뒤, 현재 워킹카피(HEAD)와 merge 되는 것이 아니다.
 +  * 변경 사항을 리뷰한 다음 머지할 것인지는 본인 결정.
 +  * 최신본을 받아서, 합할 것인가 등은 본인이 다시 판단. (그래봐야 merge?)
 +  
 +===== commit =====
 +
 +  * 소스를 저장소에 저장
 +  * 현재 브랜치(예를 들어 master)가 commit한 버젼을 가리키게 되고, HEAD 가 된다.
 +
 +<code>
 +git commit
 +</code>
 +
 +===== branch =====
 +
 +  * 현재 HEAD에 위치에서 새로운 브랜치를 만든다.
 +
 +<code>
 +// git branch <이름>
 +git branch bugFix1 // bugFix1으로 브랜치를 한개 만든다.
 +</code>
 +  
 +===== checkout =====
 +
 +  * 현재 워킹폴더의 브랜치에서 다른 브랜치로 이동하는 경우 사용
 +  * 브랜치가
 +    * master, bugFix1 이 있는데,
 +  * 현재 워킹폴더는 bugFix1
 + * 그런데 master가 이미 다른 커밋이 있어버린다면, 어떻게 되는거지?
 +
 +<code>
 +// 현재 로컬저장소의 HEAD가 "master"를 가리키고 있는 경우
 +git checkout bugFix1
 +</code>
 +
 +===== merge =====
 +
 +  * 브랜치가 2개
 +    * bugFix1
 + * master : 로컬저장소의 HEAD는 여기
 +
 +<code>
 +// bugFix1 --> master 브랜치로 merge 
 +git merge bugFix1 master
 +</code>
 +
 +결과는 bugFix1가 master에 머지 되면서 , master는 새로은 커밋을 하게 된다.
 +
 +===== Rebase : 재배치 =====
 +
 +커밋을 모아서 복사한 후에 다른 곳으로 옮기는 것 --> 커밋 흐름을 보기 좋게 한줄로 만들 수 있어서 이력이 더 깨끗하게 보인다.
 +
 +그림이 있는 설명이 이해하기 편하므로, 그림 있는 설명을 캡춰. (from [[http://learnbranch.urigit.com/|브랜치배우기]])
 +
 +| {{:tool:source-control:git_rebase_1.png|}} |
 +| {{:tool:source-control:git_rebase_2.png|}} | 
 +| {{:tool:source-control:git_rebase_3.png|}} |
 +| {{:tool:source-control:git_rebase_4.png|}} |
 +
 +===== Revert : 되돌리기 =====
 +
 +되돌리는 방법
 +  * git reset : 예전 브랜치로 HEAD를 이동하는 것. reset 후에는 새롭게 HEAD로 지정된 부분(과거 코드로 돌아갔기 때문에) 외에는 무시된다. \\ 자신의 로컬저장소에서 작업하는 것을 되돌린다.
 +  * git revert : 리모트 브랜치에 대해서 작업을 되돌릴때 사용한다.
 +
 +reset
 +
 +| {{:tool:source-control:git_reset_1.png}} |
 +| {{:tool:source-control:git_reset_2.png}} |
 +
 +revert
 +
 +| {{:tool:source-control:git_revert_1.png}} |
 +| {{:tool:source-control:git_revert_2.png}} |
 +
 +
 +====== Quick Guide ======
 +
 +[[http://rogerdudler.github.com/git-guide/index.ko.html|Git Quick Guide]]
 +
 +{{url>http://rogerdudler.github.com/git-guide/index.ko.html}}
 +
 +====== 윈도우용 ======
 +  * [[http://code.google.com/p/gitextensions/|Git Extension]] : VS 플러그인 제공, 상용 수준의 기능 ([[http://ummae.tistory.com/226|발견한 곳]])
 +===== 각종 튜토리얼 링크 =====
 +  * 너무 많아서 놀랬다.
 +  * [[http://www.google.com/search?q=git+gui+%EC%82%AC%EC%9A%A9%EB%B2%95&hl=ko&ei=SWdlTOujG5TSuwPGgtCHDQ&start=0&sa=N|구글검색결과]]
 +  * [[http://www.ibm.com/developerworks/kr/library/l-git-subversion-1/|Subversion 사용자를 위한 Git, Part 1: 시작]]
 +  * [[http://www.ibm.com/developerworks/kr/library/wa-git/|Git로 인한 분산 웹 개발 환경의 변화]]
 +  * [[http://dev.azki.org/|Git 사용기 (windows 환경에서 GIT-GUI 와 github.com 을 중점으로)]]
 +  * [[http://namhyung.springnote.com/pages/3132772|Git 사용자 설명서]]
 +  * [[http://redky.blogspot.com/2010/05/cygwin-git.html|서버세팅하기]]
 +
 +====== GIT-GUI ======
 + 
 +  * 일문 메시지 삭제 , 영문으로 보이게 하는 방법을 몰라서 일문 메시지 삭제.
 +  * <프로그램설치위치>\Git\share\git-gui\lib\msgs
 +  * jp로 시작하는 파일 이름 변경.