2013-06-04 2 views
3

내가해야 할 일 : 나는 마스터에있는 커밋이 10 개있다. 저 커밋을 새 분기로 옮겨야합니다. 나는 주기적으로 견뎌 왔지만 아직 나의 일을 추진하지는 못했다. 10 가지 커밋을 내가 할 수있는 새로운 지점으로 만들려면 어떻게해야합니까?10 커밋을 마스터에서 새 git으로 옮길 수 있습니까?

in this question here 단계를 시도했지만 작동하지 않습니다. 특히 내가 rebase를 할 때, 결국 나는 master에 대한 커밋이고, 나의 새로운 branch에는 커밋이 없다. 커밋은 새로운 지사로 이전되지 않으며 질문에 제공된 단계를 고려할 때 어떻게 가능할지를 알지 못합니다. 나의 이해에서

답변

2

, 이것은 당신이 무엇을 :

* commit 10 (master) 
| 
* commit 9 
| 
... 
|    * (origin/master) 
* commit 1  | 
|.------------^ 
* 

내가 새 분기에 1-10 범 '원하는 것입니다 요구하고 무엇을 생각합니다.

이렇게하려면 브랜치에 브랜치 이름을 붙인 다음 원점/마스터의 원래 위치로 재설정하십시오.

그래서 :

* commit 11 (feature) merge commit 
|^------------. 
* commit 10 | 
|    ... 
... 
|    * (master, origin/master) 
* commit 1  | 
|.------------^ 
* 

당신이 할 싶은 것이 이것이다 :

git checkout master # your current latest set of changes (commit 10) 
git branch feature # the name of your branch 
git reset --hard origin/master # sets master to point to origin/master 
git pull --rebase # updates master with origin/master 
git checkout feature && git merge master # updates feature branch with what is on origin/master 

이 끝낼 것인가?

+0

이것은 궁극적 인 해결책을 찾았습니다 : 1) 체크 아웃 마스터 2) 가장 최근 커밋 ID를 얻기위한 git 로그 3) rebase 4) 하드 헤드 재설정 5) 체크 아웃 가장 최근의 커밋 (분리 된 head state) 6) 새로운 브랜치를 만들고 커밋은 자동적으로 그 새로운 브랜치에 위치한다. – mmr

0

하나의 옵션은 새로운 지점에 작업을 추진하고있다 :

git push HEAD:branchname 

이 당신에게 현재의 작업을 포함하는 서버에 새로운 지점 branchname을 만듭니다. - 귀하의 작업이 여전히 귀하의 지역에서 마스터이기 때문에,이 경우 혼란 스러울 수 있습니다.

git reset --hard @{u} 

이 멀리 커밋되지 않은 모든 기회를 던질 것이라는 점을 유의하십시오

방금 ​​원격 버전으로 로컬 마스터를 재설정 할 수 있습니다이 권리를 얻으려면.

branchname에서 작업하려면 git checkout branchname을 사용하면됩니다.

0

그냥 지점 이름을 변경하고 밀어 : 여기 -u

git branch -m branchname 
git push -u branchname 

는 추적 브랜치를 업데이트하는 것이 중요하다.