-1

내가 속한 팀에서는 중앙 저장소에 하나의 지점 - 마스터 지점 만 보유하는 것에 동의합니다. 우리는 기능 분과를 만들지 만 절대 밀어 내지 않습니다. 일부 개발자는 merge을 마스터하기 전에 rebase의 기능 분기를 잊어 버립니다. 따라서 Git에는 충돌이 있으며 해결할 필요가 없습니다. (다른 사람들은 자신의 것을 사용하여 다른 사람의 변경 사항을 덮어 씁니다.) 다른 커밋이 들어 와서 충돌이 병합되는 지점에 앉아 있습니다. 따라서 중앙 저장소에 둘 이상의 분기가 있습니다.한 분기를 유지하면서 많은 커밋을 병합 충돌을 수정하는 방법?

다음은 단순화 된 예입니다. 이것은 TortoiseGit에서 사용 가능한 것과 유사합니다. () 안에있는 이름은 지점 이름입니다. 이것은 단지 예일 뿐이므로, 나는 또한 그 특징 지부의 이름 앞에 'origin'이있다.

그래서 하나의 브랜치 (마스터 브랜치) 만 유지하면서 병합 충돌을 해결하는 방법은 무엇입니까?

* (feature/feature04, master, origin/master, origin/feature/feature04) Commit in feature 04 
| 
* Merge branch 'feature/feature03' 
|\ 
| * (feature/feature03, origin/feature/feature03) Commit in feature 03 
* | (feature/feature02, origin/feature/feature02) Commit in feature 02 
|/ 
* (feature/feature01, origin/feature/feature01) Commit in feature 01 
| 
* Commit #1 

같은 그래프의 또 다른보기 :

A -- B -- C ------ E -- F -- (other commits) MASTER branch 
     \------ D --/       feature03 branch 
+0

귀하의 질문에 unlear, 병합 충돌을 유지한다는 것은 무엇을 의미합니까? - 병합 후 충돌이 해결됩니다. – MrTux

답변

0

원격의 repo에 대한 선형으로 커밋 히스토리를 유지하려면, 당신은 (그래프 아래로) 커밋 역사 D 커밋과 E를 저지 교체해야합니다. 그런 역사가 될 것입니다 커밋

git rebase --onto <commit id for C> <commit id for B> <commit id for D> 
git branch -f feature/feature03 

:

  D' feature/feature03 
     /
A---B---C---E---F---…---X master 
    \ /
     --D--  

A---B---C---E---F---…X master 
    \ /
     --D--    feature/feature03 

첫째, 리베이스에 feature/feature03에 의해 커밋 커밋 C 및 확약 지점의 상단에 D 커밋 리베이스

그런 다음 rebase 다른 명령은의 상단에 0 지점 D' 커밋 다시 점 master 아래의 지점 명령 :

git rebase --onto <commit id for D'> <commit id for E> <commit id for X> 
git branch -f master 
git checkout master 

그럼 역사 (X' 커밋 D' 마스터 분기점을 저지하는 기능/feature03 분기점) 것 커밋 :

:

A---B----C---D'---F'---…---X' master 
      | 
     Feature/feature03 

마지막으로 명령에 의해 원격의 repomaster 브랜치의 커밋 변경 이력을 밀어 강제

git push -f origin master 

참고 : origin/feature/feature01, origin/feature/feature02 등 같은 추적 가지를 보여 주었다 때문에 기능 지점이 이미 원격 REPO의 기능 지점을 삭제하려면, 당신이 사용할 수있는 원격 REPO에 밀어 보인다 git push :feature/feature01, git push :feature/feature02