2014-11-04 2 views
7

모든 프로젝트에서 git을 사용하지만 가끔 git을 사용하지 않는 동료와 공동 작업해야합니다. 그들은 그들의 zip 한 소식통을 앞뒤로 이메일을 보내는 것을 선호한다. 그것은 짜증나고 성가시다. 그러나 나는 그것을 다루어야 만한다. 워크 플로는 다음과 같습니다.git을 사용하지 않는 동료와 공동 작업

내 코드가 필요한 경우 git archive을 사용하고 Zip 파일 export.zip을 보냅니다. 나는 일하는 것을 계속하고 나가 나의 변화하는 근원을 사용하는 동안 나가하는 변화를 투입한다. 그림 :

┌ archive & mail 
    │ 
    A ← B ← C 
     └───┴── my later changes 

잠시 후 나에게 응답 파일 import.zip을 보냅니다. 내 git 트리에 Zip 파일을 가져 오는 가장 좋은 방법은 무엇입니까? import.zip의 압축을 풀고, A'로 커밋, 여기

┌ archive & mail 
    │ 
    A ← A' ← B ← C 
     │ └───┴── my later changes 
     │ 
     └─ their changes 

내가 A 체크 아웃 것이며 :

  1. 자신의 변화에 ​​따라 내 나중에 변경을 고려 나는 의미 차이가 다음 세 가지 옵션을 생각할 수 있습니다 BC (및 그 이후의 내용)을 다시 적용하십시오. 커밋을 최대 HEAD까지 다시 적용하려면 어떻게해야합니까?

  2. 내 나중에 변경에 따라 변경 사항을 고려 : 여기

    A ← B ← C ← A' 
    

    내가 Aimport.zip 사이 DIFF을 기반으로 패치를 만들고 C에 그 적용됩니다.

  3. 분기를 만들고 병합 :

    A ← B ← C ← M 
        ↖  ↙ 
         A' 
    

    이 질문을 쓰는 동안, 나는이 옵션은 가장 일반적으로 적용하고 가장 강력한이라는 결론에 도달했다. 동의하니?

워크 플로우와 관련하여 다른 조언을 해주셔서 감사합니다. 예를 들어, 나는 지루하고 오류가 발생하기 쉽기 때문에 내가 보관 한 커밋 A을 기억하고있다.

+1

@aelam 당신은 무시 무시한 말을 할 수도 있지만 사실 그들은 소프트웨어 엔지니어가 아니라는 가능성이 있습니다. – shadowtalker

+0

메모와 마찬가지로,'git rebase'를 사용하여 커밋을 다른 브랜치에 다시 적용 할 수 있습니다.하지만 실제로 옵션 # 3을 권하고 싶습니다. –

+0

모든 커밋을 한 줄에 넣고 싶다면 rebase를 시도해보십시오. A-> – aelam

답변

3

정확합니다. # 3이 가장 좋습니다. 나는 당신에게 변화를 줄 각 사람을위한 지회를 만들 것입니다. 브랜치를 체크 아웃하고, 압축 파일의 압축을 풀고, 변경 사항을 브랜치에 반영하십시오. 어느 시점에서 변경 내용을 변경 내용과 병합 할 수 있으며, git은 충돌을 지적 할 것입니다. 이는 분명 최적이 아니지만 상대방이 우편 번호를 우편으로 발송하는 것을 고려할 때 상대적으로 좋습니다. 가장 최근의 변경 사항을 보낼 준비가되면 보관중인 커밋에 "Y로 인해 X로 변경 사항 보내기"라는 태그 메시지와 함께 "collab-zip-<date>"또는 기타 태그로 태그하는 것이 좋습니다. 그것은 당신이 보낸 것을 언제 어떻게 추적 할 것인지에 대한 마지막 비트에 대한 대답입니다.

+0

나는이 접근법을 사용할 것이라고 생각한다. 여러 병렬 공동 작업도 가능합니다. 감사! – Lumen

1

내가 보관 한 커밋 A을 기억하는 것은 지루하고 오류가 발생하기 쉽습니다.

export 분기를 만들고 다른 분기에서 작업하십시오. 동료에게 보낼 준비가되면 언제든지 최신을 export에 병합하여 보관할 수 있습니다.나는 이것을 옵션 # 3과 함께 사용하는 것이 좋습니다.

또한 옵션 # 4를 잊어 버렸습니다. 동료를 설정하고 시작하기 위해 제공함으로써 Git을 사용하도록 설득합니다. 사람에게 물고기 등을 가르쳐주세요.

1

다른 사람들이 이미 지적했듯이, # 3은 차선책입니다. Git을 사용할 때와 거의 비슷하다. 단지 로컬 브랜치 대신에 원격 브랜치를 병합 할 것이고, 아마도 하나의 커밋이 아닌 여러 커밋을 가질 것이다.

물론 커밋을 처음 변경 사항에 따라 리베이스 할 수는 있지만 많은 다른 문제를 일으킬 수있는 히스토리를 다시 작성해야합니다.

수동 패치 (옵션 # 2) 사용을 권장하지 않습니다. 힘내는 이러한 상황을 고려하여 설계된 아주 좋은 merge 도구를 가지고있다.

* : 최선의 해결책은 여전히 ​​동료에게 Git 사용을 시작하도록 유도하는 것입니다. 현재 환경 설정으로 인해 많은 시간과 노력을 들여야합니다. 그들이 당신의 말을 듣고 싶지 않다면, 당신의 상사와 이야기하고, 당신이 완고함 때문에 많은 시간을 낭비하고 있으며, 버그를 도입 할 위험이 더 높다고 말하면됩니다. 당신이 돈을 아끼겠다고 설득하기 위해 더 많은 논쟁을 불러 일으킬 수있을 것 같네요.)