2014-06-24 3 views
0

Fedora 버전 20에서 Git 버전 1.9.3을 사용하면 빈 bar 파일을 커밋 할 수 없다는 문제가 반복적으로 발생합니다. Git은 이전 버전의 비어 있지 않은 foo 파일을 삭제했다고 생각하지 않게 만듭니다. 두 파일 모두 같은 폴더에 저장됩니다. 내 명령을 추가하고 같은 빈 bar 파일보기 커밋하기 :두 번째 빈 파일을 커밋하고 첫 번째 비어 있지 않은 파일을 삭제하지 않으려면 어떻게해야합니까?

ls 
# bar foo 

file bar foo 
# bar: empty 
# foo: ASCII text 

git status --short -- . 
# ?? bar 

git add --intent-to-add --verbose bar 
# add 'bar' 

git diff --cached -- . 
# diff --git c/bar i/bar 
# new file mode 100644 
# index 0000000..e69de29 

git commit --message=bar 
# [master 1234567] bar 
1 file changed, 44 deletions(-) 
delete mode 100644 foo 

git status --short -- . 
# AM bar 
# A foo 

file bar foo 
# bar: empty 
# foo: ASCII text 

당신은 내가 관찰 망할 놈의 행동에 대한 설명을 가지고 적이 있습니까? 어떤 해결책?

+0

빈 파일로 시작하여이 파일에 대한 많은 작은 커밋 결과를 만들어내는 습관이 있습니다. –

+1

후크가 있습니까? 힘줄 별명? 쉘 별칭? –

+0

하나의 "post-commit"후크와 많은 Git 별칭. 그러나 위의 명령으로 번역 된 모든 Git 별칭 문제를 재현 할 수있었습니다. 후크는 "커밋"표준 이외의 참조에서 자식 노트 만 생성합니다. 따라서 메시지 나 심지어 커밋 자체의 재 작성이 필요 없습니다. –

답변

0

색인에 빈 항목을 추가하기 위해 git add --intend-to-add -- bar 혼자 오해했습니다. Git을 사용하면 위와 같은 상태에서 인덱스를 커밋 할 수 있으므로 마치 git add --allow-empty과 같이 빈 커밋이 발생합니다. 하지만 빈 커밋은 내가 이 아니라면을 원한다. 내가 대신 원하는 것은 다음과 같은 일련의 명령에 해당

echo foo > bar 
git add --intent-to-add -- bar 
git add --patch -- bar 
# Edit (e) the hunk to be staged and make it empty. 
git commit --message 'add empty bar file.' 
git log --oneline --name-status -1 
# 1234567 add empty bar file 
# A bar 

I가 누락 된 명령은 git add --patch -- bar입니다. 그것 없이는 A bar은 마지막에 인쇄되지 않았을 것입니다.

+0

빈 파일을 추가하려면 빈 파일을 추가하십시오 :'touch bar; git add bar'. – jthill