2014-07-15 2 views
3

예 :인덱스에 특정 파일을 커밋하는 방법은 무엇입니까?

나는라는 이름의 파일을 수정하고, index로의 일부를 추가하고, 또한 지수 b를라는 이름의 파일이있을 경우
» git status 
On branch master 
Changes to be committed: 
    (use "git reset HEAD <file>..." to unstage) 

    modified: a 
    modified: b 

Changes not staged for commit: 
    (use "git add <file>..." to update what will be committed) 
    (use "git checkout -- <file>..." to discard changes in working directory) 

    modified: a 

.

인덱스에 파일 a 만 커밋하고 b 나 a 작업 디렉토리에는 커밋하지 않습니다.

내가 사용하는 방법은 git commit -p을 사용하고 무대에 n을 입력하는 것입니다. 또는 git commit -p file을 클릭하고 원하는 부분을 선택하십시오.

그러나 파일 a의 파트가 이미 인덱스에 추가 된 경우 인덱스 부분에만 파일 a를 적용하는 것이 더 좋습니다.


보충 :

나는 아마 그 자식의 잘못 사용하는 것입니다 생각합니다.

다음 커밋에서 커밋 될 변경 사항 만 색인에 추가해야합니다.

명백히 파일 b는 커밋 될 준비가되어 있지 않으므로 작업 디렉토리에 있어야합니다.

+0

정확하게 이해했다면 이미 색인에 커밋 할 변경 사항이 있습니까? 그렇다면 간단한'git commit'으로 충분합니다. 네가 나를 원한다면 나는 더 구체적인 대답을 게시 할 것이다. –

+1

'git commit'은 인덱스에있는 모든 파일을 커밋 할 것이지만 인덱스에 파일 a를 커밋하고 파일 b를 인덱스에 포함하고 작업 디렉토리에 파일 a를 포함하지 않을 것입니다. –

답변

1

색인에 파일 a 만 커밋하고 b는 작업 디렉토리에 포함시키지 않습니다.

그것은 당신이 모든 b을 추적 싶지 않아 소리 :

git rm --cached b 
echo b >> .gitignore 
git add .gitignore 
git commit -m "Add a, ignore b" 

을하지만 다음 b, 당신이 그것에 어떤 수정을 추가 하시겠습니까하고, 당신 can use git update-index을 추적하려는 경우 :

git reset -- b # will unstage (remove from index) 
git update-index --skip-worktree -- b 
... 
# when ready to add b 
git update-index --no-skip-worktree -- b 
git add -- b 
+0

b를 추적하려고하고 파일 b가 다른 사람에 의해 추가되었으므로 커밋 할'index'에 특정 파일을 지정하고 커밋 후에 인덱스에 b를 남기고 싶습니다. –

+0

@ TankyWoo 그러면 내 대답의 두 번째 부분은 당신을위한 것입니다 : b는 계속 추적됩니다 (색인에 없지만 "다른 사람"이 같은 컴퓨터에서 당신과 같은 작업 트리에서 작업하고 있지 않으면 필요 없습니다) – VonC

+0

두 번째 부분에서 먼저 변경 사항을 재설정해야하며,'update-index --skip-worktree'는이 파일을 작업 트리에 '숨겨 뒀습니다.'이후에는'--no-skip-worktree'가 필요합니다. –

3

git commit aa 만 커밋하고 b은 그대로 남겨 둡니다.

다음은 man page에서 예입니다 :

$ edit hello.c hello.h 
$ git add hello.c hello.h 
$ edit Makefile 
$ git commit Makefile 

이것은 그 메이크 파일에 수정을 기록 커밋합니다. hello.c 및 hello.h에 대해 수행 된 변경 사항은 결과 커밋에 포함되지 않습니다. 그러나, 그 변화는 사라지지 않습니다 - 그들은 여전히 ​​무대에 올랐을뿐입니다.

+1

특정 파일'in index' 만 커밋하면,'git commit file'은'index'와'working directory'에서 변경을 커밋합니다. –

관련 문제