당신은 (그리고 자식) 당신이 정확하게 그것을하고있다. 당신은 자식을 잘못 사용하고있는 것이 아닙니다. 이처럼 다른 장소에서 밀거나 당길 수있는 기능이 있습니다.
당신이을 불평하는 이유는 변경 세트 모델에 필요하기 때문입니다. 컴퓨터 A에서 해시 "abcdef"를 사용하여 커밋을했다고 가정합니다.저장소간에 변경 집합을 공유하려면 원하는대로 "abcdef"가 이어야하며 정확하게이 어디서나 동일해야합니다. 컴퓨터 B에서 로컬 변경 사항으로 해당 커밋을 가져 오면 해당 커밋을 특정 위치의 기록에 넣을 수 있지만 은 로컬 변경 사항이 적용되는이 될 수 없습니다. 그렇게하면 커밋 "3dea12"가 생성되며 이는 완전히 다릅니다.
힘내 기는 서브 버전처럼 변경 사항을 즉시 적용하려고 할 수 있습니다. 6 번 커밋했다면, 이제는 다른 머신에 적용된 각각의 (분할 할 수없는) 커밋에 대해 한 번씩 6 번 병합해야합니다. Subversion은 all-in-all diff의 변경 사항을 요약하여이 문제를 해결합니다.이 변경 사항은 로컬 변경 사항의 맨 위에 넣으려고합니다. 가끔은 작동하지만 일부 병합이 다소 어려워지며 은이 아니기 때문에 git에서 제공하는 깔끔하고 변화가없는 변경 기록을 유지할 수 있습니다.
이 문제를 해결하기 위해, 여기에 기계 B에 당신의 풀 전략이다 :
$ git stash # Set your uncommitted changes aside for a moment
$ git pull # Pull in the new changes
# <resolve conflicts, if they happen>
$ git stash pop # Bring back your uncommitted changes, fixing ambiguous
# merge pieces as necessary.
기본적으로,이는 것입니다 전략 "git stash
은 무서운 것입니다, 걱정하지 마십시오." :)
나는 을 병합해야한다는 것을 알아 두는 것이 중요하다고 생각한다.. 좋은 개발 사례, 변경 사항을 적게 유지하면 병합 빈도가 줄어들지 만 가끔 병합해야합니다.
덧붙여서 은을 원합니다. 작업 복사본이 깨끗한 경우 (숨김 필요 없음) 한 기록을 다른 기록과 혼합합니다. 힘내라 병합해야 할 곳을 찾아 무엇을 해야할지 물어볼 것입니다. 그것은 꽤 분명한 과정입니다. 해당 지점을 로컬 변경 과 병합해야한다면도 매우 혼란 스러울 것입니다. 그것은 본질적으로 과거의 것들을 "미래"의 것들과 합병 할 것인데,이 경우에는 당신의 커밋되지 않은 일 (아마도 바뀔 것이다!).
$ git commit -m "..." # Commit your local changes, making them part of history.
$ git pull # Clean working copy! (maybe merging required)
당신이 끌어와 "는 불평"당신이 망할 놈의에서 얻을 메시지가 무엇인가 : 그 빛에
, 여기에 다른 옵션들? –
변경 사항을 모두 버리고 싶다면 git reset -hard를 사용할 때 아무런 문제가 보이지 않습니다. 확실하지 않다면, 망할 놈의 은신처가 필요로하는 것입니다. 당신은 은닉 한 것을 사용할 필요가 없으며 쉽게 정리할 수 있습니다 : git stash clear. – drizzd