2009-10-31 4 views
5

나는 힘과 분산 된 버전 관리에 익숙하지만 내 자신의 로컬 소스 init으로 관리하고있다. ssh를 통해 개인 원격 저장소 (원점)를 직접 설정해야한다. 웹 호스트를 사용하고 기본 주소는 pullpush입니다. (나는 심지어 클론을 시험해 본다.)Git의 다음 단계 : 응집력있는 작업 흐름 설정

나는 통제하에 단일 방향의 자식 작업 흐름이 있다고 생각한다. 그러나 이제 저는 개발, 베타 및 제작 사이에서 어떻게 움직이는 것들을 처리하는지 생각하기 시작했습니다. 내가 찾은 대부분의 자습서는 병합 및 복제 및 끌어 오기 및 푸시하는 다른 사용자에 대해 이야기하지만, 제 경우에는 다른 소스에서 처리하는 것은 저입니다.

숙련 된 git 사용자가 내 작업 흐름에 대한 통찰력을 제공하고 병합, 분기 등을 처리하는 방법에 대한 제안을 할 수 있기를 바랍니다.

  1. 원격 주요 자식 가기 : : SSH : //[email protected]/git/myproject.git
  2. 홈 웹 서버, 주요 개발 여기

    내가 가진 것 다른 기계/위치입니다 상자 (I 앉아 곳, 개인, 그리고 대부분의 작업을)
  3. 원격 웹 서버, 베타 테스트 (공개되는) : http://beta.example.com
  4. 원격 웹 서버, 생산 현장 (내 생산 전에 dev에 작업을 테스트) : http://example.com를 (실제 사람들은 잘하면 사이트 사용)
  5. (때때로) 랩톱에서 이동 (자체 로컬 웹 서버 실행).

어떻게 처리할까요? 미리 감사드립니다.

답변

5

지나치게 복잡한 작업 흐름을 만드는 데는 아무런 문제가 없습니다. "중앙"설정은 훌륭한 IMHO를 수행합니다.

그래서 모든 개발, 원격 이름 "원점"을 보유하는 중심점이되어야하는 메인 리모컨이 있습니다. devel 상자에서 작업하고, 커밋을하고, 때로는 물건을 "원본"으로 밀어 넣습니다. 일단 릴리스 할 때 (아마도 베타 버전으로) 태그를 붙이고, 원래 위치로 이동하고, 베타 서버로 이동하여 공개 테스트를 위해 해당 태그를 가져옵니다. 생산 기계로 가져갈 수있는 릴리즈가 나올 때까지 반복하십시오 ...

A/B 관련 질문 (아마 당신의 devel machine 및 노트북) : 당연히 그럴 수 있지만 변경 사항을 푸시하지 않고 A 또는 B를 원점으로합니다. 기계 A에서 작업 한 것을 "원점"으로 푸시했다고 가정하고 상태 "17"로 호출 할 수 있습니다. 이제는 일을 더욱 발전시켜 지역 주를 "18"에서 "20"으로 만듭니다. "원점"이 여전히 "17"인 경우 각 단계가 이전 상태의 직계 하위이므로 변경 사항 18-20을 문제없이 원점으로 푸시 할 수 있습니다. 그게 자식에서 "빨리 감기"라고.

그러나 B에서 푸시가 들어 오면 "직접 자손"의 줄이 끊어지고 A에서 푸시가 실패합니다.이 솔루션은하지만, 간단하다 : A는로 B에 의해 도입 된 모든 변경 사항을 병합, 원점에서 끌어 다음은 밀 수있다 ...

2

직접 작업하는 경우 원하지 않는 경우 실제로 분기하거나 병합하지 않아도됩니다. Git은 다른 버전 제어 시스템보다 약간 더 쉽게 만들 수 있으므로 다른 곳에서 태그를 사용할 수있는 방식으로 분기를 사용한다. 주제에 대한 O'Reilly 서적을 강력히 추천합니다. 꽤 잘 쓰여 있습니다.

+0

브랜치를 사용하지 않는다면 시스템 A에서 시스템 B를 변경하고 시스템 B에서 변경 한 다음 원래의 위치로 모두 옮길 수 있습니까? 그게 내가 붙어 있던 곳이라고 생각해. – thornomad

1

네, 처리 할 수있는 일을 명확히

희망 .. A에서 변화, B에서 다른 두 가지가 밀린 것. 그러나 둘 중 하나는 밀기 전에 원래 위치에서 당겨야합니다. 두 사람 중 한 사람은 원산지가 "구식"이 될 것이기 때문에 다른 사람은 원산지로 밀었습니다.

관련 문제