2011-07-01 10 views
5

나는 이미 내가 힘내 버텨야한다고 생각했지만, 지금은 놀랐다. 브랜치가 다른 브랜치에서 변경 사항을 분리한다고 생각 했으므로 새로운 브랜치에서 큰 실험 리팩토링을 시작했습니다. 이 리팩토링은 많은 파일을 이동시키는 것을 의미합니다. 내가 마스터로 전환했을 때 나는 아직도 변화를 볼 수 있었다!힘내 : 지점 변경 사항을 분리해야합니까, 그렇지 않아야합니까?

$ git branch crazy-refactoring 
$ git checkout crazy-refactoring 
$ rm README 
$ git checkout master 
$ git status 
# On branch master 
# Changes not staged for commit: 
# (use "git add/rm <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
#  deleted: README 
# 
no changes added to commit (use "git add" and/or "git commit -a") 
$ ls README 
ls: cannot access README: No such file or directory 

이유 :

가 나는 문제를 복제 내 샌드 박스 저장소에 갔다? 지점을 만드는 저의 전체 요점은, 제가 시도 할 수있는 것이었고 성공하지 못하면 그걸 버릴 수있었습니다. 추측?

+3

삭제를 커밋하지 않았습니다. 커밋 된 변경 사항 만 "격리"됩니다. –

+1

미친 리팩토링 지점에서 README를 보낸 후 마스터 분기에 다시 나타났습니다. 어쩌면 내가 뭔가를 놓친 것 같지만 이상하고 바람직하지 않은 행동으로 보입니다. – stivlo

+0

그것도 처음에 나를 던져 봤지만, 지금은 한 지점에 많은 변화를 만들어 나중에 별도의 지점에 던지기로 결정할 때마다 항상 행동에 의존합니다. – butter71

답변

6

삭제를 커밋하지 않았습니다. 커밋 된 변경 사항 만 "격리"됩니다. 귀하의 코멘트에 대해서는

:

가 어쩌면 내가 모르는 뭔가가있어,하지만 이상한 바람직하지 않은 행동을 날 것으로 보인다.

생각해 :

당신은 crazy-refactoringREADME을 삭제하지만, 변화를 범하지 않았다. 자식은 당신이 파일을 변경했음을 알고 커밋하지 않았다는 것을 안다. 을 변경하려면 변경 사항을 저장하고, 다른 지점을 체크 아웃하면 변경 사항을 덮어 쓰지 않습니다.
그렇지 않으면 Git이 변경 한 지점으로 다시 전환 할 때 변경 내용을 알 수있는 방법이 없습니다. 손실 될 수 있으며 다른 지점의 변경 사항을 보는 것보다 훨씬 더 나쁩니다.

현재 작업 디렉토리는 항상 현재 분기 + 커밋되지 않은 변경 사항입니다 (재설정하지 않은 경우). 물론

, 힘내는 다른 분기를 체크 아웃 할 때 커밋되지 않은 변경 사항이 있음을, 경고 수 있지만 때로는이 변경 다른 지점에 스위치를 유지하는 것이 바람직하다.

+1

추가 설명을 주셔서 감사합니다. 또한 butter71도 유용 할 수 있다고 말했습니다. – stivlo

관련 문제