2012-01-06 3 views
4

나는 마스터 브랜치를 가지고 있으며 모든 것이 잘되어있다. 그런 다음 experimental이라는 분기를 만들고 새 파일을 만듭니다. 실험실 브랜치에서 git add 명령을 사용하여이 파일을 추가합니다. 그런 다음 마스터 브랜치를 체크 아웃합니다. 내 마스터 브랜치에있는 동안 git status을 실행하고이 파일이 내 마스터 브랜치에 추가되었음을 발견했습니다. 내 master 브랜치에있는 동안 git commit -m "message"을 실행하면 커밋이 발생합니다. 그런 다음 실험 브랜치로 전환하여 git status을 실행하고 파일이 실험용 브랜치에서 커밋되었음을 확인합니다.git branching and commit - 당신은 (나에게)이 수수께끼 같은 행동 뒤에 이론을 설명 할 수 있습니까?

다음과 같이 예상됩니다. 새 파일을 추가 한 후 마스터 분기로 전환하면 파일이 나타나지 않을 것으로 예상됩니다. 결국 master 브랜치에서 파일을 생성하지 않았고 master 브랜치에서 파일을 추가하지 않았다. 그래서 master 브랜치로 전환하여 git status을 실행하면 왜 이미 추가 된 파일을 찾고 커밋 할 준비가 되었습니까? 그리고 나서 마스터 브랜치에서 커밋 할 때, 내가 돌아 왔을 때 실험 브랜치에서 커밋을 발견하게되는 이유는 무엇입니까? 한 번에 두 가지 가지를 저 지르지 않았습니까?

+0

experimental 브랜치로 다시 전환했을 때'git status'가 아무 것도 표시하지 않는다고해서 그 브랜치에서 파일이 커밋되었음을 의미하지는 않습니다. 그것은 당신이 무대에 서있는 것을 가지고 있지 않다는 것을 의미합니다. – jamessan

+0

글쎄, 그것은 untracked 파일과 무대화된 파일을 보여주지 않으므로 파일이 커밋 된 것 같습니다. – Deonomo

+0

'git log'을 사용하여 현재 브랜치에 적용된 커밋을 찾으십시오. 파일이 "master"브랜치에 커밋되었지만 "experimental"브랜치에는 커밋되지 않았을 것입니다. –

답변

8

git add을 실행하면 파일이 이 아닌이 커밋되고 Git의 "색인"에만 추가됩니다. 실험실에서 git add을 수행 한 후 git commit을 실행하고 싶었을 것입니다.

Git에서 분기를 전환하면 작업 디렉토리 과 색인의 변경 사항은 분기 스위치 중 변경되는 다른 파일과 충돌하지 않는 한 변경되지 않습니다.

는 특정 문제 해결하기 :

을 ... 그리고이 파일이 또한 내 마스터 지점에 추가 된 것을 발견 할 수 있습니다. 당신이 git commit을 실행하지 않은 경우

은 다음 파일은 아직 전혀 어떤 지점에 추가되지 않았습니다.

+0

master 분기로 전환하기 전에 git commit을 실행하지 않았으므로 의도하지 않았습니다. 그러나 master 브랜치로 전환하여 git status을 실행했을 때, master 브랜치가 아닌 experimental 브랜치에서 수행 했더라도 파일이 이미 준비되어있는 것처럼 보였습니다. 혼란은 "추가"명령을 사용하여 파일을 준비하기 때문에 "추가"라는 용어를 사용했기 때문에 발생했다고 생각합니다. – Deonomo

+0

Git에는 하나의 "색인"만 있습니다. 변경된 파일을'git add '하면 인덱스에 들어갑니다. 각 지점마다 별도의 색인이 없기 때문에 "지점 X에 상연"되어 있지 않습니다. –

+0

감사합니다. 도움이됩니다. – Deonomo