2013-01-10 4 views
3

pyflakes와 jshint를 통해 내 커밋을 검사하기 위해 git-hook을 구현했으며 why most pre-commit hooks are broken에 대한 Yipit의 주석을 읽은 후 그의 git stashgit stash pop 제안을 구현하기로 결정했습니다."git stash pop"이 파일을 수정 된 것으로 표시하지 못하도록하는 방법이 있습니까?

불행히도 git stash pop은 파일을 '수정 됨'으로 표시하므로 "디스크에서 수정 : 디스크에서 다시 읽습니까?"페이지로 돌아올 때마다 내 IDE에서 경고 메시지를 표시합니다. 그런 다음 "이 버퍼를 편집 하시겠습니까?"라는 질문을합니다. 마지막으로 "이 버퍼를 수정 된 파일에 저장 하시겠습니까?"

저에게 해 주려는 모든 노력에 감사하지만 기능적으로 존재하지 않는 "변경 사항"에 대해 묻습니다.

touch으로 이상한 추측 게임을하지 않으면 git stash pop이 변경된 파일을 모두 표시하지 못하게 할 수있는 방법이 있습니까?

답변

0

나는 (예 : "GIT: Adding Local Changes to Non-Current Branch"에서 언급했듯이) 타임 스탬프가 변경되지 않는다고 생각합니다.

가장 쉬운 방법은 자동으로 새로 고치도록 IDE를 구성하는 것입니다.

Eclipse의 경우, 예를 들어 "Refresh on Access"이됩니다.


또 다른 방법은 다른 지역의 repo (이제까지 로컬 수정이없는 한, 숨길 너무 필요 없음)을 유지하는 것입니다.
커밋되지 않은 훅은 현재 리포에 남아 있습니다.

귀하의 현재 색인 (추가 한 항목)을 사용하지만 기타 작업 트리 저장소를 사용하게됩니다. 이를 위해
, 당신은 함께 커밋해야합니다 : 후크가 실패하지 않는 경우가있을 수

git commit --work-tree=/path/to/other/local/repo -m "my commit message" 

후 커밋 다른 REPO로 이동 (현재의 repo에 계속) 후크를 당겨 현재 브랜치 (branch)는 그것의 (깨끗한) 작업 트리를 갱신한다.

cd /path/to/other/local/repo 
git --work-tree=/path/to/other/local/repo --git-dir=/path/to/other/local/repo/.git pull 

는 (첫 번째의 repo에 살고있는 훅이 제대로 작동하기 위해, work-tree 두 번째 REPO의 git-dir를 지정해야하는 방법을 참고).
작업중인 현재 분기를 고려하지 않으므로 단순한 제안입니다 (분기 'master'만 가정 함).
하지만 detect the branch 수 있으며 적절한 체크 아웃 및 오른쪽 분기로 전환) 후크에서 적응할 수 있습니다.

작업 트리의 두 번째 repo 업데이트 후 (첫 번째 repo의 post-commit 후크에 의해), 두 번째 repo는 원시 작업 트리로 사용할 준비가됩니다. 현재 repo) 안전하게 작동 할 수 있습니다.

+0

참고 : 675 번째 답변 (http://stackoverflow.com/a/11644343/6309) 후 6 개월, Stack Overflow (52 개월 후)에 ** ** 7000 번째 답변 **이었습니다. [5000 번째 답변] (http://stackoverflow.com/a/7917396/6309), [4000 번째 답변] (http://stackoverflow.com/a/4953561/6309), [3000 번째 답변] (http : /stackoverflow.com/a/3074849/6309), [2000th answer] (http://stackoverflow.com/a/2027976/6309) 및 [1000th answer] (http://stackoverflow.com/a/665252/) 6309). – VonC

0

변경 사항이 존재하지 않습니까? 파일이 수정 된 것으로 표시되면 공백이거나 파일의 사용 권한 (실행 가능 상태) 일지라도 변경되었습니다. git diff을 사용하여 변경 사항을 볼 수 있습니다. git commit -av 명령을 사용하여 변경 사항을 검토 할 수도 있습니다 (-v 플래그는 확약의 diff를 표시합니다).

IDE가 파일의 현재 "버퍼"상태를 유지하려고합니다. IDE에서이 파일을 변경하면 (git stash pop|apply) IDE에서이를 인식하고 파일을 자동으로 새로 고치지 않으면 (일반적으로 IDE 설정/기본 설정에서), 파일을 저장할지 묻는 메시지가 나타날 수 있습니다 git을 사용할 때 일반적으로 필요하지 않은 새로운 파일로 현재 버퍼를 변경하거나 파일의 변경된 상태로 버퍼를 다시로드합니다.