2017-11-23 2 views
0

이의 내가 마스터 분기에 오전한다고 가정 해 봅시다 다른 분기에 unstaged 변경을 실행 취소, 나는커밋 변경

한 다음 temp.py 1 커밋 한 파일을 가지고 2) 채널) 내가 addtemp.pycommit

4를 변경, 기능 분기))

3() 다른 지점 (feature 체크 아웃 나는 파일을 추가하거나 커밋하지 않습니다 마스터

$ git branch 
* master 
$ cat temp.py 
print "Hello World" 
$ echo "print \"Bye Bye\"" >> temp.py 
$ cat temp.py 
print "Hello World" 
print "Bye Bye" 
$ git checkout -b feature 
M temp.py 
Switched to a new branch 'feature' 
$ git add temp.py 
$ git commit -am "added Bye Bye to temp.py" 
[feature d8e363a] added Bye Bye to temp.py 
1 file changed, 1 insertion(+) 
$ git checkout master 
Switched to branch 'master' 
$ cat temp.py 
print "Hello World" 
$ 
add 전에

commit 기능 분기에, temp.py했다 :

eckout 마스터 다시, 나는 temp.py로 만든 원래의 변화가 취소입니다 여기

은 위의 단계를 수행하는 코드입니다
print "Hello World" 
print "Bye Bye" 
는 는

그러나 기능에 대한 addcommit 후, 변경 사항이 취소되었고, 나는 끝났다 :

print "Hello World" 

내가 feature 분기에 커밋 변경 master 지점에 영향을 미치는 이유에 의아해 오전, 왜 이런 일이 무엇입니까?

이 예제는 git의 일반적인 사용법이 아니라는 것을 알고 있지만 이해할 수없는 git의 일부 측면에 밑줄을 긋고 있습니다.

이 질문은 내가 묻는 것과 관련이 있습니다 : Checkout another branch when there are uncommitted changes on the current branch,하지만 거기서 내 질문에 대한 답을 찾을 수 없었습니다.

답변

3

이 말이 맞습니다. 여기에 혼란 스러울 수 있습니다.

새 분기를 체크 아웃했을 때, 은 작업 색인을으로 보존하고 함께 새 지사로 가져 왔습니다. 이 라인에서 이것을 볼 수 있습니다

M temp.py 

는 지금, temp.py의 사본이 하나 망할 놈의 두 라인의 인식이다.

이 변경을 커밋하면 feature에 두 줄의 파이썬 파일이 포함됩니다. 이제 master으로 다시 변경했으며 master하나만 행만 포함합니다.

마스터에 변경 사항을 적용하지 않았으므로 마스터는 이러한 변경에 대한 실무 지식이 없습니다. 이들은 지사 지점에 대신 있습니다.