| 다음 판 | 이전 판 |
| research:usegit [2014/01/26 12:24] – 새로 만듦 changwoo | research:usegit [2017/06/07 05:19] (현재) – 다른 개인키로 푸쉬하기 추가. changwoo |
|---|
| ====== Git 더듬더듬 시작해보기 ===== | ====== Git 더듬더듬 시작해보기 ===== |
| [[lifemotif:start|LifeMotif: GMail-based Private Diary System]]을 만들면서 버전 관리로 [[www.git-scm.com/|git]]을 도입해 보게 되었는데, 사용방법과 컨셉 등이 무척 혼란스러워 사용하기 어렵다. 그러므로 이렇게 별도의 페이지를 마련하여 git를 더듬더듬 사용해 보기 시작하자. | [[lifemotif:start|LifeMotif: GMail-based Private Diary System]]을 만들면서 버전 관리로 [[http://www.git-scm.com|git]]을 도입해 보게 되었는데, 사용방법과 컨셉 등이 무척 혼란스러워 사용하기 어렵다. 그러므로 이렇게 별도의 페이지를 마련하여 git를 더듬더듬 사용해 보기 시작하자. |
| |
| 간단한 명령어로 일단 LifeMotif의 commit, push 정도만 되도록 내용을 작성하고, 추후: | 간단한 명령어로 일단 LifeMotif의 commit, push 정도만 되도록 내용을 작성하고, 추후: |
| |
| ===== 사례: 구글 코드에서 LifeMotif-Desktop의 코드 유지하기 ===== | ===== 사례: 구글 코드에서 LifeMotif-Desktop의 코드 유지하기 ===== |
| | cs.ChwNam@gmail.com의 계정으로 http://code.google.com/p/lifemotif-desktop/ 에 저장소를 하나 마련하였다. 프로젝트가 4096MB를 제공하므로, 코드 보관을 위해서는 넉넉한 용량으로 생각한다. |
| | |
| | 원격 저장소가 잘 마련되었으므로, 이 저장소를 잘 활용할 수 있도록 준비를 하자. 우선 아무나 소스를 헤집어 놓을 수 없도록 소스는 누구나 받을 수 있되, 허가받은 사람만이 이 곳에 소스를 올릴 수가 있다. 내가 이 곳을 만들었으니 당연히 나는 모든 권한을 가지고 있다. |
| | |
| | ==== 권한 설정 ==== |
| | 일단 권한은 패스워드를 입력하는 것으로 인증되는데, 이 패스워드는 내 계정의 패스워드가 아니다. https://code.google.com/hosting/settings 에서 별도의 패스워드를 지정한다. |
| | |
| | 홈 디렉토리에 ''.netrc'' 파일을 생성하고 다음 코드를 입력한다. |
| | machine code.google.com login cs.ChwNam@gmail.com password [패스워드] |
| | 이렇게 하면 구글 코드에서 패스워드는 자동으로 입력뇐다. |
| | |
| | ==== 저장소 시작하기 ==== |
| | [[http://rogerdudler.github.io/git-guide/index.ko.html|git - 간편 안내서 - 어렵지 않아요!]] <del>안 어렵긴 개뿔!</del> 페이지를 보고 더듬더듬 시작하였다. |
| | |
| | 새로운 저장소를 마련하려면 |
| | git init |
| | 명령어를 사용하지만, 우리는 원격 서버의 저장소를 사용한다. 그러므로, |
| | git clone user@host:/remote/server/path |
| | 를 이용하게 된다. 그러나 구글의 경우는 서버의 주소가 조금 다르다. |
| | git clone https://cs.ChwNam@code.google.com/p/lifemotif-desktop/ |
| | 위 주소에는 내 이메일이 포함되어 있다. 배부받은 패스워드를 입력하든지 아니면, |
| | git clone https://code.google.com/p/lifemotif-desktop/ |
| | 위 명령어를 사용하되, 홈 디렉토리에 .netrc 파일을 만들어 (~/.netrc) |
| | machine code.google.com login cs.ChwNam@gmail.com password [generated googlecode.com password] |
| | 이 줄을 추가한다. 이렇게 로컬 저장소를 시작한다. |
| | |
| | ==== 파일/디렉토리 추가하기 ==== |
| | 몇몇 소스 파일들을 추가하게 되었다. |
| | git add [files...] |
| | 이 때 빈 디렉토리는 추가되지 않는다. 이것은 git이 [[https://git.wiki.kernel.org/index.php/GitFaq#Can_I_add_empty_directories.3F|FAQ]] 를 참고하면 원래 그러도록 되어 있기 때문이라고. [[http://stackoverflow.com/a/5305908|README]]와 같은 더미 파일을 추가함으로써 디렉토리를 추가하는 방법도 있다. FAQ는 ''.gitignore''라는 파일을 만들어서 추가하는 방법도 있다고 하지만, 정말 텅 빈 디렉토리를 무작정 들이미는 것 보다는 README 파일을 넣어 왜 이런 빈 디렉토리를 추가했는지에 대해 인지시켜 주는 후자의 방법이 좋다고 생각한다. |
| | |
| | 그리고 이 변경점을 커밋하려면 |
| | git commit -m "이번 커밋에 대한 메모" |
| | |
| | ==== 발행 (push) 하기 ==== |
| | 구글 코드에 코드를 보관하려면, |
| | git push origin master |
| | |
| | ===== 원격 저장소에서 새로운 프로젝트 만들기 ===== |
| | MiniServer는 git의 remote repository 역할도 한다. 새로운 프로젝트를 만든다고 한다. 모든 소스의 저장소 루트가 ''/opt/git''이라고 하면 (이 디렉토리 아래 여러 원격 리포지토리가 존재한다.) |
| | <code bash> |
| | cd /opt/git |
| | mkdir myproject.git # git 디렉토리는 관례상 .git로 끝난다. |
| | cd myproject.git |
| | git init --bare |
| | </code> |
| | 이걸로 끝. 원격 유저는 ''/opt/git/myproject.git''쪽에 적절한 권한만 있으면 된다. |
| | |
| | ===== 서브모듈 추가 ===== |
| | <code>git submodule add <url> [name]</code> |
| | e.g. <code>git submodule add git://github.com/chneukirchen/rack.git rack</code> |
| | |
| | |
| | |
| | ===== 다른 개인키로 푸쉬하기 ===== |
| | <code>GIT_SSH_COMMAND='ssh -i ~/.ssh/<개인키> -F /dev/null' git push</code> |
| | |
| |
| |
| * [[http://qt-project.org/doc/qtcreator-2.8/creator-version-control.html|QT Cretor Version Control]] | * [[http://qt-project.org/doc/qtcreator-2.8/creator-version-control.html|QT Cretor Version Control]] |
| * [[http://code.google.com/p/support/wiki/GitFAQ|Git FAQ]] | * [[http://code.google.com/p/support/wiki/GitFAQ|Git FAQ]] |
| | * [[http://git-scm.com/book/ko/v1/Git-%EC%84%9C%EB%B2%84-%EC%84%9C%EB%B2%84%EC%97%90-Git-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0| Git 서버 - 서버에 Git 설치하기]] |
| | * [[http://git-scm.com/book/ko/v1/Git-%EB%8F%84%EA%B5%AC-%EC%84%9C%EB%B8%8C%EB%AA%A8%EB%93%88|Git 도구 - 서브모듈]] |