내가 설정 내 지점 :두 명의 커미터가 공유하는 git 브랜치가 커밋을 두 번하는 이유는 무엇입니까? (자식-SVN과 함께 가능한 상호 작용) 내가 한
다음git svn rebase
git checkout -b branch-a
나는 원격 자식 저장소 및 동료에게 해당 분기를 밀어 나는 git commit
, git pull
및 git push
를 사용하여 작업을했다 .
git checkout master
git svn rebase
git checkout branch-a
git rebase master
을 나는 혼란 스러워요이 시점에서 : 내가 한 있도록
지금, 나는 전복의 모든 새로운 변화를 가져 싶었다. 일어난 일은 git이 하나 이상의 갈등으로 커밋을하고 해결하도록 강요하는 것입니다. 그러나 갈등은 HEAD가 트리 끝 (최신 코드 포함)을 가리킨 다음 모든 변경 사항을 상단의 에 하나씩 적용하여 원래 분기점에 적용하는 것처럼 보이도록했습니다..
내가 모든 코드를 다시 작성한 것처럼 느껴졌으며 대부분의 해결 방법은 HEAD 청크를 유지하고 커밋 청크를 제거하는 것이 었습니다.
내 기대치는 git rebase master
명령이 분기 전에 커밋에서 시작하고 모든 커밋을 master에서 추가 한 다음 분기의 모든 커밋을 추가하는 것입니다. 이렇게하면 브랜치에서 리베이스 이전의 팁과 거의 동일한 팁을 얻을 수 있습니다.
그래서 아무도 내가 이해하지 못하는 것을 설명 할 수 있습니까? 그게 아니라면, 아무도 git이 그것을 결정하는 이유를 찾는 방법을 제안 할 수 있습니다. git log
에서 내가 왜 그 일을하고 있었는지 알고 싶습니다.
편집 : 우리가 거기에만라고 생각하면 더 많은 연구가 여러 가지를 보여주는 우리가 git log --graph
에서 우리의 지사 및 지점의 구조에 커밋 부부의 여러 복사본을 갖고있는 것 같다 것으로 나타났습니다 2012-03-06 하나.
스 니펫 (제거 세부 사항을 확인하고 커밋 메시지는 메시지 - N로 대체되었습니다 메시지 - N가 동일한 메시지를 의미합니다.) :
| * | commit f5c48df66ed9d733364562d8f125866aa6483c1e
| | | Author: commiter-b
| | | Date: Mon Feb 27 16:18:05 2012 -0800
| | |
| | | Message-4
| | |
| * | commit e6115229e629c237b08d0b2e149353f33ff66bd1
| | | Author: commiter-a
| | | Date: Mon Feb 27 15:49:02 2012 -0800
| | |
| | | Message-3
| | |
| * | commit f85981736c59231dc34a7cef4fceab5cffdbdff2
| |/ Author: committer-a
| | Date: Mon Feb 27 14:20:56 2012 -0800
| |
| | Message-2
| |
| * commit b09ba82e6290f5905d4c98fdcfbe2220d221e762
| Author: committer-a
| Date: Mon Feb 27 14:04:13 2012 -0800
|
| Message-1
|
* commit 4d2892c239acfab5c9845518fde98ba551f273e6
| Author: committer-a
| Date: Mon Mar 5 09:13:19 2012 -0800
|
| UN-3710 Fixes after merge from svn
---8<----- snip
* commit 8307d1ae8214ebe3eac5bdc5b835c21f89d727bd
| Author: committer-b
| Date: Mon Feb 27 16:18:05 2012 -0800
|
| Message-4
|
* commit 859acc56de59877cb721914443c63ad97882cb41
| Author: committer-a
| Date: Mon Feb 27 15:49:02 2012 -0800
|
| Message-3
|
* commit 93e15921d735333194970cefc673a8b953e80838
| Author: committer-a
| Date: Mon Feb 27 14:20:56 2012 -0800
|
| Message-2
|
* commit 7a863bb44be5c5019a0e0958460324dc3cfb2e6b
Author: committer-a
Date: Mon Feb 27 14:04:13 2012 -0800
Message-1
우리의 자식 워크 플로우는 보수적이다, 나는 생각합니다. 우리는 git-svn
을 사용하여 master
을 유지 관리하며 원격 자식 저장소에 푸시됩니다. 우리는 master
을 분기하고 둘 이상의 커미터가 git pull origin branch-a
및 git push origin
을 사용하여 작업합니다.
이제 우리는 문제의이 기능을 알아 냈으므로 앞으로 어떤 이벤트가 발생하는지주의 깊게 관찰 할 것입니다.
나는 혼란 스럽습니다. 나는'git rebase'가 무엇을해야하는지 정확히 설명하고 있다고 생각합니다. 갈등이 없을 것으로 예상 했습니까? Subversion에 대한 변경 사항 중 일부가 이미 커밋 되었습니까? – mpontillo
하지만 제 이해는'git rebase'는 브랜치의베이스에서 작동한다는 것입니다. 대신 모든 커밋을 팁에 적용하는 것처럼 보였습니다. 아닙니다. 우리의 변화는 전복에 전념하지 않았습니다. 이러한 충돌은 해당 지점에서 새로 추가 된 파일에 있었기 때문에 svn과 충돌 할 수는 없습니다. (나는 혼란 스럽다 - 나는 자식이 무슨 생각을 하는지를 알아낼 곳을 모른다.) – Sarge