2012-04-02 5 views
0

저는 현재 여러 가지 변경/버그 작업을하고 있으며 개별 로컬 브랜치를 사용하여 개별적으로 작업하고 싶습니다. 그러나 예를 들어 branch_a과 같은 작업을하고 새로운 프로젝트를 시작해야 할 때 을 만들면 branch_a에서 변경 한 사항이 있습니다. 여기다른 로컬 브랜치의 커밋되지 않은 변경 사항을 가져 오지 않고 어떻게 로컬 브랜치를 생성합니까?


워크 플로입니다 :

  1. 작성 및 체크 아웃 branch_a 지역 dev 지점에서
  2. 만들어 로컬 변경 branch_a에 (하지만 준비 git add를 통해 또는 로컬 커밋)
  3. 시작하는 데 필요한 새로운 핫 버그 때문에 dev 브랜치로 전환하고 생성 및 체크 아웃 branch_b
  4. 수행 git status 그리고 내가 branch_a에 변경 사항이없는 내가 branch_a 내가 새로운 지점을 만들려면 어떻게해야합니까

에 변경 사항을 참조? 내가 다른 브랜치를 체크 아웃 할 때

또한, 나는

$ git checkout branch_b 
M app/controllers/stuff.rb 
M app/views/stuff/index.html.erb 
Switched to branch 'branch_b' 

M는 무엇을 상징 하는가

를 얻을?

감사

답변

2

M은 수정 된 것을 의미합니다. 먼저 현재 분기에 변경 사항을 커밋하거나 숨겨야합니다.

당신이 그들을 숨기고 싶은

:

git add . 
git commit -am 'changes in branch_a' 
# creating and checkout new branch 
git checkout -b branch_b 
# fix your bug 
git add . 
git commit -am 'just fixed a bug' 
1

M가 수정됩니다. 이 파일을 수정했는데 unstaged입니다. 수정 내용을 추가 한 다음 branch_a에서 진행중인 작업으로 커밋하거나 새 분기로 바꾸기 전에 git stash을 사용하여 바꾸기 전에 변경 사항을 숨길 수 있습니다.

0

수정되지 않은 변경 사항을 어딘가에 저장해야합니다. 즉, 당신이 그들을 제거하기를 원하지 않는 한,하지만 아마 그것을하고 싶지 않을 것입니다.

가장 좋은 해결책은 거의 확실하게 git stash입니다. 이렇게하면 편집되지 않은 변경 사항을 "숨겨서"새 작업 사본으로 작업 할 수있게되며, 나중에 숨김을 다시 적용 할 수 있습니다.

0

M는 파일이 수정 된 것을 나타냅니다

git add . 
# temporary stash your changes 
git stash 
# create a new branch 
git checkout -b branch_b 
# do your changes 
git commit -am 'fixed but in branch_b' 
# go back to branch a 
git checkout branch_a 
# get back your stash 
git stash pop 

변경 사항을 커밋 선택

. 당신이 원하는 것을하기 위해서, 내가 일반적으로 사용하는 두 가지 접근 방식이 있습니다.

한 가지 방법은 은신을 사용하는 것입니다. 현재 분기를 떠나기 전에 git stash으로 전화하면 변경 사항은 숨김이라고하는 '보조 색인'에 저장됩니다. 원래 지점으로 돌아 가면 git stash pop으로 전화하여 숨겨진 변경 사항을 취소합니다.

나는 또한 꽤 자주 나는 변화의 나의 새로운 상당히 긴 수명, 단지 "WIP"를 만드는 것입니다 될 것으로 예상하는 경우 사용하는 또 다른 방법 나중에 복귀하는 커밋 :

(oldbranch)$ git add -A . && git commit -m"wip" 
(oldbranch)$ git checkout master && git checkout -b newbranch 
# work on the new branch.... 
(newbranch)$ git checkout oldbranch 
(newbranch)$ git reset HEAD^ 

git reset HEAD^ 브랜치의 현재 헤드 이전에 작업 디렉터리를 커밋 (commit)으로 되돌리고, "wip"커밋의 일부인 모든 변경 사항을 작업 디렉터리로 옮겨 효과적으로 현재의 위치로 되돌립니다.

관련 문제