2016-12-07 4 views
0

git을 사용하여 응용 프로그램을 개발하고 유지 관리하고 있습니다.소수의 클라이언트를위한 응용 프로그램 관리

내 응용 프로그램 (5) 클라이언트에 사용하고 있기 때문에 나는이 질문을 가지고 그들 각각의 로고와 같은 자신의 구성을 가지고, 몇 가지 특별한 기능은 CONFIGS 등 ...

을 그리고 지금 나는 새로운 구성 요소를 작성하고 필요 이 구성 요소를 각 클라이언트 인스턴스에 추가하면 제대로 수행하는 방법을 알 수 없습니다.

이제 각 클라이언트는 별도의 지점에 있으며 잘못된 선택임을 알고 있습니다.

그리고 애플리케이션을 업데이트해야한다면 코드를 복사하여 각 클라이언트에 붙여넣고 repo로 푸시해야합니다.

나는 그것이 매우 약하다는 것을 알지만 이것을 제대로하는 방법은 무엇입니까?

답변

0

베이스를 봉인하기 전에 응용 프로그램을 5 개의 다른 가지로 분기하지 않아야합니다. (그래서 당신은 체크 아웃 할 수있다) 다시 패치 (git diff > patch)를 생성, 변경 사항을 적용

  1. 과 다섯 가지의 머리에 그 적용 : 그들은 너무 멀리 갈라하지 않은 경우 그러나 당신은 세 가지 가능성을 가지고 (git apply patch), master에서 새 가지가, 그 여분의 분기를 삭제 (1과 동일한 효과)하여 각 분기에 커밋 git cherry-pick를 저지하고, 거기에 변경 사항을 적용

  2. 포크,

  3. 변경 사항을 master 및 그 다음에 git rebase 브랜치가 있습니다. 이것은 편집이 모든 5 가지 공통 사항 인 단일 커밋이된다는 장점이 있습니다. 리베이싱에 대한 실질적인 소개는 See here입니다.

1 및 2는 5 개의 분기 기록의 맨 위에 새로운 커밋 사본을 넣습니다. 포크를 만들기 전에 새로운 커밋을 쥐어 짜려는 시도. 후자의 부작용은 그 날짜의 모든 커밋이 기존 커밋의 부모를 수정할 수 없기 때문에 새로 재구성되어야한다는 것입니다. 3 이후 저장소로 분기 당 첫 번째 밀어 넣기를 강제해야합니다. 세부 사항은 모두 링크 된 문서에서 논의됩니다.

업데이트하려는 항목과 충돌 할 수있는 좀 더 급격한 변경을 수행하면 세 가지 방법이 서로 다른 방식으로 실패하므로 준비하는 것이 좋습니다.

  1. 기본값 설정은 변경 사항을 적용하지 않고 즉시 패치를 거부합니다. 왜 그것이 적용되지 않았는지 더 자세히 조사해야하거나, 비교적 안전한 --reject을 사용하십시오 (설명서를 먼저 읽으십시오). (당신이 사용하는 명령을 어떤 조언을 제공합니다)

  2. 그냥 실패 git merge 같은 <<<<<<<=======>>>>>>>과 실패의 지점을 장식 할 당신은 갈등을 해결하고 다시 커밋하거나 작업을 중단해야 할 것입니다.

  3. 끔찍한 모양의 충돌 메시지가 생성되고 그 과정에서 여러 커밋을 끝낼 수도 있습니다. 다시 git은 진행 방법에 도움이 될 것입니다.

당신은 항상 뭔가 잘못되면 당신을 도와 git reset --hard, git cherry-pick --abortgit rebase --abort 있습니다. 그것들을 사용하는 것이 너무 편하다고 생각하지 않는다면, 변경하기 전에 각 지점의 현재 상태를 복사하여 git reset --hard backup까지 모든 것을 다시 가져올 수 있습니다.

관련 문제