2011-09-06 8 views
1

나는 그것을 사용하면서 지난 몇 개월 동안 기초를 알아야 할 필요성에 대해 배웠다. 나는 Git Pro 서적을 보았으나 복잡한 것을 이해하는 데 시간을 할애하지 못했다.Git에서 분기를 병합하는 대신 덮어 쓸 수 있습니까?

"떠 다니는 가지"라고 부르는 것에 관한 기사를 읽었습니다. 프로덕션 서버에 필요한 구성 변경 사항을 포함합니다. 따라서 작업 흐름은 개발 서버에서 새로운 기능을 작성하고 테스트 한 다음 프로덕션 서버로 새로운 지점으로 이동하고 새 지점을 체크 아웃 한 다음 소위 말하는 "부동 지점"구성 지점을 병합합니다 & 그런 다음 다시 작성하십시오 소스 &을 다시 시작하십시오.

예기치 않은 일이 발생하면 마지막으로 작동하는 지점을 신속하게 체크 아웃 할 수 있습니다. & & 서버를 다시 시작하여 가동 중단 시간을 줄입니다.

프로덕션 서버가 모든 업데이트에 대해 새 분기를 끝내기 때문에 이것은 분명히 지저분한 작업 흐름입니다. 또한 혼란스러운 지점 계층을 만듭니다.

또 다른 문제는 "floating branch"설정 병합이 마지막 커밋에서 변경 사항을 덮어 쓰지 않는다는 것입니다.

그래서 예를 들면 : 나는 그것이 이상의 데이터베이스 이름을 기록하지 않습니다 config 분기를 병합 할 때 나는이 설명한 작업 흐름에 따라 개발 서버 &에 뭔가를 테스트하기 위해 새로운 데이터베이스 인스턴스를 시작하는 경우, 이 워크 플로우에 의해 생성 된 복잡한 지점 계층 구조로 인해 상상할 수 있습니다.

이것은 일종의 게으른 질문이지만 전문가의 간결한 조언은 확실히 만성인지 능력 과부하를 줄입니다. 나는 한 팀인 &을 추적 할 정도로 많은 세부 사항이 있습니다.

누군가가 내게 더 나은 작업 흐름에 대한 통찰력을 줄 수 있다면. 난 그물에 & 여기에 수십 개의 옵션을 볼 수 프로덕션 서버에 아무도 맨손 저장소를 사용하여 나쁜 형태 등입니다. 지금은 그냥 일종의를 피하기 위해 약간의 작업 흐름을 청소하고 싶습니다 내가 설명했던 것. 어쩌면 나중에 git 내부 구조에 들어가기 위해 며칠을 보낼 것입니다. 나는 자식 소스 자체를 조사 할 때까지 모든 것을 알아낼 수 있을지 의심 스럽다.

+2

단락은 가독성을 높입니다. –

답변

1

당신이해야 할 것보다 더 복잡하게 만듭니다. git의 분산 된 특성은 로컬 저장소의 임시 분기를 사용하여 모든 작업을 수행하고 변경 사항이 하나의 분기에 추가되는 것처럼 중앙 서버를 보이게 만들 수 있음을 의미합니다. 생산 및 개발을위한 별도의 구성을 유지 관리하는 워크 플로에 대해 설명했습니다. here.

+0

+1 여기에 * and * there :) – johnny

0

생산 사본을 정확히 업스트림으로 되돌리기 위해 git fetchgit reset --hard origin/master을 사용하고 떠 다니는 가지.

git reset --hard origin/master origin/master가 가리키는 커밋을 가리 키도록 로컬 분기 ref를 다시 작성합니다.

+0

프로덕션 서버는 원격 지점을 추적하지 않습니다. dev 서버'git remote -v origin \t git : //gitorious.org/example-os-proj/example-os-proj.git (fetch) 생산 \t ssh : //XXX.X6.0.53/home/justin/justifventures/justifventures-example-os-proj /.git (가져 오기) 생산 \t ssh : //XXX.X6.0.53/home/justin/justifventures/justifventures-example-os-proj/.git (push) remoteclone \t [email protected] : ~ justifventure/example- os-proj/justifventures-example-os-proj.git (push)'공개 프로젝트에서만 끌어낼 수 있습니다. 변경 사항을 오프 사이트 백업으로 remoteclone에 푸시합니다. – justify

+0

임의의 커밋에 대해'git reset --hard'를 할 수 있습니다. 'origin/master'를 사용하는 것이 편리하지만, 병합 전에 태그를 만들거나 병합하기 전에 커밋 SHA1로 재설정하면됩니다. –

관련 문제