2011-10-06 4 views
2

나는 배우려고 노력하고 있으며, 더 구체적으로 버전 관리에 익숙해 져있다. 그러나, 내 개발팀은 현재 (그리고 가까운 장래에) 나만이 유일하게 구성되어 있으므로 git에 대한 나의 집중은 브랜칭 및 커미트 기술을 습득하려고 시도하고있다.독신자 개발을위한 힘내

나는 git-flow과 같은 일부 작업 흐름 예제를보고 시도했습니다. 그러나, 나는 그들을 사용하는 방법을 정말 마스터 수없는 것. 예를 들어, 얼마나 자주, 어떤 종류의 컨텐츠가 커밋되어야 하는가? 언제 새로운 기능을 위해 정말로 분기해야합니까? 나는 새로운 기능을 쓰고있는 상황에서 매우 자주 자신을 발견하고 갑자기 이전 코딩 오류를 수정해야한다고 생각하거나 갑자기 새로운 기능을 마무리하고 나중에 여전히 몇 가지를 놓친다는 것을 깨닫는다.

이것은 혼란스러운 분기와 커밋으로 이어지지 만 절대적으로 도움이되지 않습니다. 그리고 나는 얼마나 많은 도움 버전 제어가 실제로 필요한지 궁금해합니다.

내가 뭘 잘못하고 있니? 또는 단일 인력 개발을위한 자식/버전 제어 시스템이 아닙니까?

답변

8

단일 사용자 프로젝트의 경우 버전 관리를 처음 시작한 경우 처음에는 모든 워크 플로 및 기타 사항에 대해 처음부터 걱정하지 마십시오. 첫째, 커밋하는 데 익숙해 지십시오.

방금 ​​프로그램을 실행하고 테스트 했습니까? 좋아, 커밋. 당신이 잘 모르는 뭔가를하려고하면 효과가 있을까요? 범하다. 일찍 그리고 자주 저 지르십시오. 자식에 대한 좋은 점은 커밋 할 나쁜 장소를 선택하면 커밋이 되돌릴 수 있다는 것입니다 (힌트 : 컴파일되지 않으면 나쁜 장소 일 수 있습니다. 그러나 예외가있는 경우 git rebase -igit add -i (일종의 첨단 도구이기 때문에 기본에 익숙해 져야합니다. (중괄호는 재미 있습니다!))).

이제 focus-git을 전환 할 때 유용한 도구가 많이 있습니다. 예를 들어

, 당신은

git stash save 

힘내 다음이를 저장, 커밋되지 않은 모든 변경 소요되며, 커밋에게 마지막으로 돌아갑니다 ... 버그를 수정하지만, 이미 다른 작업의 무리를 갖고 싶어합니다. 버그를 수정하고 테스트하고 커밋 한 다음

git stash pop 

버그 픽스 위에 모든 변경 사항이 다시 적용됩니다. 당신이있어 -이

당신이 작은 기능을 작동하지만, 다음이 실제로 종류의 복잡 실현 당신은 아마 한 번 이상 커밋 것입니다 경우

...

git checkout -b mynewbranch 

그리고 당신은 갈 지금 새로운 지점에. 당신은 당신이 커밋되지 않은 변경 사항을 저장 git stash와 함께이 사용할 수

git checkout someotherbranch 

로 언제든지 다시 다른 지점을 얻을 수 있습니다 다음, 완전히 다른 무언가를 다른 분기로 교환합니다. 그리고 당신이 돌아 오기를 원할 때, git checkout mynewbranch.당신이 만들 수있는 작은 버그 수정이, 전체 보관 한 것은 귀찮게하지 않으려는 경우

약간 더 고급 도구로

, 당신이이 자식 인덱스 덕분에

git add -i 
# select what changes to include 
git commit # commits only what you selected 

할 수 - git add -i을 사용하면 작업 복사본에서 인덱스로 복사 할 대상을 개별 라인 수준까지 정확하게 선택할 수 있습니다. git commit은 커밋으로 저장합니다. 이렇게하면 다른 변경 사항들이 엉망으로 인해 발생하는 사소한 문제를 신속하고 간편하게 해결할 수 있습니다. 그러나 이것은 컴파일되지 않았거나 테스트되지 않은 것을 커밋했다는 것을 의미합니다. 따라서 완전히 부러진 것을 저 지르지 않도록주의해야합니다. 회귀를 추적하기위한 매우 유용한 도구 인 git bisect을 깨뜨리기 때문에 일반적으로 코드가 완전히 손상되지 않도록해야합니다.

일단이 기본 흐름을 익숙해지면 몇 가지 프로세스를 추가 할 수 있습니다. 예를 들어 1.x 시리즈에만 버그 수정을 위해 v1.x 브랜치를 유지할 수 있습니다. 또는 무엇이든. 자신에게 적합한 워크 플로를 사용하십시오.

+1

커밋 빈도가 +1입니다. 투입은 싸다; 일찍 그리고 자주! – Nic

+0

+1 좋은 답변입니다. 그래도 작은 수정. 그것은'git stash save'이거나,'git stash'이어야합니다. – vhallac

+0

@vhallac, oops -'pop'과 섞어서 :) – bdonlan