git 2.0 변경사항 중에 해석이 안되는 부분이 있어서요.

nomail의 이미지

안녕하세요.
얼마전에 git 2.0으로 버전업이 되면서 많은 부분이 바뀌었는데요.

http://blogs.atlassian.com/2014/06/happened-git-2-0-full-goodies/

위의 사이트에서 요약된 내용을 읽어보는데 해석이 안되는 부분이 있어서 질문 드립니다.

git reset -N will keep known paths as intend-to-add if the target tree-ish does not already know them.

reset의 변경사항인데요. (soft, mixed, hard, merge에 대한 개념은 정확히 숙지하고 있습니다)
위 내용이 해석이랑 이해가 안되서 그러는데.. 설명을 좀 부탁드립니다.
intent-to-add 단어가 git에서 사용하는 용어인지요?

raymundo의 이미지

http://www.git-scm.com/docs/git-reset/2.0.1

git 2.0.1 의 reset 커맨드 문서를 보면

--mixed

Resets the index but not the working tree (i.e., the changed files are preserved but not marked for commit) and reports what has not been updated. This is the default action.

If -N is specified, removed paths are marked as intent-to-add (see git-add(1)).

저기서 시키는 대로 add 의 문서를 찾아가보면

http://www.git-scm.com/docs/git-add

-N --intent-to-add

Record only the fact that the path will be added later. An entry for the path is placed in the index with no content. This is useful for, among other things, showing the unstaged content of such files with git diff and committing them with git commit -a.

add에는 기존 버전에도 (제가 쓰고 있는 1.8.5.2를 보면) 있는 옵션이네요. 그냥 말 그대로 "intent to add", "add할 의도가 있음"이라는 의미로 쓰였나 봅니다.

그치만 솔직히 양쪽 문서를 읽어봐도
1) add할 때 저 옵션을 주면 도대체 뭐가 좋은 건지 (저 옵션을 주면 어떻게 된다는 건지는 그나마 알겠는데)
2) reset할 때 저 옵션을 주면 어떻게 된다는 건지
둘 다 잘 모르겠네요 저는. ^^;

좋은 하루 되세요!

nomail의 이미지

raymundo님 답글 주셔서 고맙습니다.
알려주신 내용으로 직접 테스트 해보니 대강 사용법을 알 것 같습니다.

git add . -N

git 2.0부터는 .(dot)만 입력해도 -a -u처럼 동작합니다.
새로운 파일이 추가 되었들 때 -N 옵션으로 add하니 index에 내용을 제외한 파일명/경로가 올라갑니다.
그래서 status를 보면 new file과 modified에 각각 보이게 되는데 commit을 하더라도 실제 tree객체에는 추가되지 않습니다.
말 그대로 intent-to-add 이네요.

git reset -N

mixed reset(index, head포인터만 리셋)을 했을 때 "add -N"의 결과는 index에 그대로 남아있습니다.
man페이지의 설명 그대로 입니다.

사용법은 알겠는데 이걸 어떻게 활용하는건지 잘 모르겠네요.
임시로 add는 해 놓지만 커밋은 나중에 결정하겠다.. 이런 뜻인지.

다른 얘기지만 git 공부할 때 raymundo님 위키에서 많은 도움을 받았습니다.
특히 git reset에 대한 자세한 설명은 정말 최고라고 생각합니다^^

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.