[완료] git 여러 저장소(브랜치)를 한 폴더 안에서 관리하는 방법은?

suapapa의 이미지

어거지로 따라하는 수준으로 git을 사용해 오다가 github에 점차 익숙해 지면서,
놀라운 기능들에 감탄하며 배우고 있는 중 입니다.

github에서 남의 프로젝트를 포크해 -패치를 보내기 전에- 가지고 놀 수 있다는 게 정말 좋네요.
원 저장소와 제가 포크한 저장소를 다른 폴더에서 관리하다가...


이런 바보! 한 폴더에서 되잖아!!

라고 깨닫고, 다음 내용으로 시험하던 중 리모트 브랜치에 대한 이해가 제대로 되지 않아 질문 드립니다.

우선 openframework 라는 프로젝트를 예로 들어 질문 드리겠습니다.

우선 official repo를 clone 받았습니다.

$ git clone <a href="http://github.com/openframeworks/openFrameworks.git
$" rel="nofollow">http://github.com/openframeworks/openFrameworks.git
$</a> git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

질문 1. remote/로 시작하는 것들이 리모트 저장소에 있는 브랜치라는 건 알겠는데,
remotes/origin/HEAD -> origin/master 는 무슨 뜻인지 정확히 모르겠습니다. remote 저장소들이 빨간색으로 표시되는 반면 origin/master는 로컬 브랜치 처럼 하얀색이라 혼란 스럽네요.

다음으로, github에서 fork받은 저장소를 추가했습니다.

$ git remote add suapapa git_at_github.com:suapapa/openFrameworks.git
$ git pull suapapa
$ git branch --track suapapa suapapa/master
$ git branch -a
  master
* suapapa
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/suapapa/master

이제 remote/suapapa 브랜치가 같은 디렉터리에 추가되었습니다.

질문 2. 첫 질문에 이어 가는 질문입니다. 왜 remote/suapapa/HEAD -> suapapa/master 는 없을까요?

질문 3. --track의 개념을 잘 모르겠습니다. suapapa 브랜치에서 push/pull 하면 remote/suapapa/master에서 push/pull 하게 하기 위함인가요? push/pull 시 remote 브랜치를 지정할 수도 있던 것 같은데 그러면 --track으로 지정한 remote 브랜치를 무시하게 되는 것인지?

질문 4. --track 이 의미있는 인자였다면 local 브랜치 suapapa, master 가 어떤 remote 브랜치를 track 하고 있는지 쉽게 확인할 수 있어야 할 것 같은데. 그런 명령어가 있나요? gitk에서 보이긴 하지만 다소 무겁습니다.

이상입니다.
길고 조잡한 질문을 끝까지 읽어 주셔서 감사합니다.

pastime의 이미지

1. HEAD는 remote 저장소의 기본 브랜치를 지정하는 역할을 합니다.
origin의 경우 HEAD가 master 브랜치를 가리키고 있으므로 origin/master를 그냥 origin으로만 적어도 됩니다.

2. git remote add 시에 -m 옵션을 주거나 git remote set-head 명령을 실행하면 됩니다.

3. 이해하신 내용이 맞는 것 같습니다.

4. 정확한 방법은 모르겠지만 git config -l | grep branch 명령으로 대강 확인해 볼 수 있습니다.

suapapa의 이미지

git을 로컬로만 사용하다 보니 remote 명령어의 존재를 모르고 있었습니다! 으잌!

2번:
$ git remote set-head suapapa -a
했더니;
$ git branch -a
remotes/suapapa/HEAD -> suapapa/master
위와 같이 잘 추가 되었습니다. -a 뒤에 인자가 없으면 suapapa remote의 HEAD를 master에 붙여 주네요.

4번:
$ git config -l | grep branch.*remote
branch.master.remote=origin
branch.suapapa.remote=suapapa
이 정보가 딱 제가 원하던 정보였습니다. 브랜치가 많아지면 어떤 리모트를 따르고 있는지 헷갈릴 것 같았는데, alias로 설정해 두고 유용하게 쓸 수 있겠네요. :)

관련 문서를 찾아 링크 추가합니다.
http://help.github.com/forking/
관례적으로 원본 원격 저장소는 upstream이라고 명명하네요. ^^

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.