2015-01-09 2 views
2

bare repo 명령으로 git plumbing 명령을 사용하여 커밋 기록을 작성하려고합니다. 블롭을 포함하고있는 하나의 익명 트리 객체로 커밋을 생성 할 수는 있지만,이 익명 트리 객체에 다른 트리 객체를 포함시키는 방법을 알 수는 없습니다.작업 트리없이 git read-tree 사용

내가 git read-tree --prefix=tree_name tree_sha 를 사용하여 시도하고 나에게 말한다 : fatal: This operation must be run in a work tree

내가 (이 this page에 표시됩니다 같은) 이런 git mktree를 사용하여 시도 : cat ../info.txt | git mktree

info.txt 1 개 라인을 포함하는 파일 인 :

040000 tree aa8c07e1371022a183b011d5d41517ef54780a17 test_tree 

그것은 나에게 말한다 :

fatal: input format error: 040000 tree aa8c07e1371022a183b011d5d41517ef54780a17 tree_name 

누구나 나무를 만들고 이름을 지정할 수 있습니까?

답변

1

hash와 test_tree 중 하나 대신 네 개의 공백이 필요합니다. 그래도 작동하지 않으면 탭을 사용해보십시오.

040000 tree aa8c07e1371022a183b011d5d41517ef54780a17 test_tree 
+0

여기에 잘못 붙여 넣었는지 확실하지 않지만 sha와 트리 이름 (test_tree) 사이에 4 칸이 있습니다. 나는 두 번 확인하고 다시 시도했지만 여전히 같은 오류가 발생했습니다. – prw56

+0

Git이 내부적으로 어떻게 작동하는지 알지만, 대부분의 git 명령이하는 일을 모릅니다. 수동으로해볼 수도 있지만 그렇게하기는 쉽지 않습니다. – ThePyroEagle

+0

처음에는 해쉬와 트리 이름 사이의 탭을 사용한다고 가정하기 전에 이것을 테스트했을 때 사과했습니다. 그래서 그게 문제가 아니라고 생각했습니다. aa8c07e1371022a183b011d5d41517ef54780a17와 test_tree 사이의 4 개의 공백을 바꿔서 탭을 고정 시켰습니다. – prw56

0

해시가있는 트리가 aa8c07e1371022a183b011d5d41517ef54780a17 인 것으로 가정합니다. 그렇지 않은 경우 git mktree이 실패합니다. 또한 info.txt에 후행 문자가 있습니까? 워드 프로세서를 읽으면 이것이 필요하다는 것을 알 수 있습니다. 나는 성공적으로이 같은 git mktree을 사용했다

:

$ cat tree.txt 
040000 tree 4d5fcadc293a348e88f777dc0920f11e7d71441c foo 

$ git mktree < tree.txt 
0a7f38a609340d0b8eede2f6debf8bad4191738f 

처음 두 공간 공간, 그리고 세 번째 탭이며, 뒤에 줄 바꿈과

. 확실하지 않은 경우 git ls-tree을 실행하고 결과를 확인하십시오 (예 : xxd).

+0

나는 마침내 그것이 일하게했다! 문제는 내가 해시와 이름 사이에 탭 대신 4 칸을 사용했다는 것입니다. (그는 이미 이것을 제안했기 때문에 ThePyroEagle에게 사과해야합니다.) 또한 파일에 후행 줄 바꿈이있는 경우 "git cat-file -p "를 사용하여 트리를 볼 때 발생하는 이상한 아티팩트가 있습니다. "test_tree \ r"(따옴표 및/r 포함)으로 표시되지만 줄 바꿈 줄이없는 경우 정상적으로 보입니다. test_tree (인용 부호가 없거나/r이 없습니다.) – prw56

+0

유닉스 버전 ('\ n')이 아니라 윈도우 개행 문자 ('\ r \ n')가있는 것 같습니다. 당신이 그것을 고칠 수있어서 다행, 대답을 수락뿐만 아니라 upvotes 줄 수 있을까요? –

+0

나는 적어도 15 명의 대표자를 얻 자마자 나는 그의 대답뿐만 아니라 당신의 대답을 upvote 할 생각이다. 또한 windows의 개행 문자에 대한 여러분의 의견이 옳았고 또 다른 문제를 해결할 수 있도록 도와 주셔서 감사드립니다. – prw56