단독 개발자로서 (현재) Git을 어떻게 사용해야합니까? [닫은]


60

Git에 여러 프로젝트가있어 결국 다른 사람들을 데려오고 싶습니다. 그러나 지금 당장은 나와 Git과 GitHub를 매우 간단하게 사용합니다. 분기가 없으며 기본적으로 커밋을 로컬 파일의 백업으로 사용합니다. 때때로 돌아가서 참조 할 수 있도록 이전 버전의 파일을 살펴볼 것이지만,이 시점까지 롤백 할 필요는 없지만, 나중에 필요할 경우 옵션을 고맙게 생각합니다.

단독 개발자로서 어떤 Git 또는 GitHub 기능을 활용할 수 있습니까? 워크 플로는 어떻게 되나요?

또한 향후 다른 프로젝트를 내 프로젝트에 추가 할 것을 기대하면서 시작해야 할 특정 관행이 있습니까?


3
다른 사람들이 설명했듯이 Git은 많은 힘을줍니다. 그러나 유일한 개발자로서, 나중에 알게 될 큰 점은 변경 사항이 무엇인지 (여러 파일의 변경 사항을 한 세트로 그룹화) 기록한 이유와 그 이유를 기록 할 수 있다는 것입니다. 또한 팀의 일원이 될 때도 좋습니다.
Leading Geek

1
흥미로 인해 문을 닫았습니다. :)

언제나처럼 @ user93458! 닫힌 주제는 일반적으로 내가 찾고있는 것입니다.
Miroslav Popov

닫히지 말아야 할 훌륭한 질문.
1 권

답변:


64

또한 향후 다른 프로젝트를 내 프로젝트에 추가 할 것을 기대하면서 시작해야 할 특정 관행이 있습니까?

물론이야. 지금 팀이없는 경우에도 사용할 수있는 간단한 모범 사례가 있습니다. 개발을 위해 분리 된 지점을 만듭니다. 아이디어는 마스터 브랜치에 릴리스 된 코드 버전이나 주요 변경 사항 만 포함한다는 것입니다. 이는 프로젝트에 참여하는 새로운 개발자가 쉽게 채택 할 수 있습니다.

게다가, 분기는 혼자 일하는 경우에도 유용합니다. 예를 들어, 새로운 기능을 코딩하는 과정에서 버그가 발견됩니다. 분기를 사용하지 않으면 두 가지를 모두 수행해야합니다. 새 분기를 추가하고 동일한 분기에서 버그를 수정하십시오. 반면에, 새 기능을 작성하기 위해 새 분기를 작성한 경우 개발 분기를 체크 아웃하고 버그를 수정 한 후 새 기능 분기를 다시 체크 아웃하면됩니다.

이것은 독자적인 프로그래머가 될 수있는 간단한 예입니다. 더 좋은 사례가 있어야한다고 확신합니다.

이 기사를 강력히 추천한다 : 성공적인 Git 브랜칭 모델


+1-말이됩니다. 이 기사를 자세히 살펴보면 매우 유용합니다.
VirtuosiMedia

저는 git 전문가가 아니며 주로 Mercurial 사용자입니다. Mercurial의 경우에도이 dev 브랜치 조언이 여전히 유효합니까? 그것은 보이는 것처럼 보이지만 어쩌면 약간의 차이로 인해이 경우에는 좋지 않습니다.
Klaim

2
그렇습니다. 모든 소스 제어에 적용됩니다. 실제로 SVN을 사용하여 거꾸로 수행합니다. "기본"트렁크는 최신 개발 용이며 매일 또는 더 자주 사용됩니다. 릴리스가 요청되면 코드가 고정되고 분기가 중단됩니다. 해당 지점은 주요 릴리스 문제를 해결하기 위해 사소한 업데이트 만받은 다음 배포 가능 항목을 만듭니다. 그렇게하면 릴리스 된 각 버전 뒤에 소스 코드 분기가 있습니다. 커밋이 레이블 뒤에 있지만 릴리스 전에 커밋되는 경우 단순히 태그를 지정하거나 레이블을 지정하는 것보다 낫습니다. 실제로 제외되었는지 알 수는 없습니다.
KeithS

기사 +1; @ 클라 임-yu, hg에도 잘 작동합니다. 정말 "성공 DCVS 분기 모델"이라고한다
와이어트 바넷

링크에 대한 +1 감사, 그것은 당신이 생각하는대로 조금씩 도움이되지는 않지만 git으로 작업하는 방식을 바 꾸었습니다.
Newtopian

14

나는이 상황에 정확히 있지만 Git의 복잡한 워크 플로우는 아니지만 약간 더 복잡한 것을 선택했습니다.

처음에 목표는 git way를 배우는 것이므로 약간의 탐구를했습니다. 그런 다음 설명한 워크 플로로 거의 되돌아갔습니다.

잠시 후 일부 상황이 발생하여 작업하기가 어려워졌고 팀에 합류하면 깨기가 어려운 나쁜 습관이 생겼습니다.

그래서 나는 다음에 정착했다.

  • 작업을위한 로컬 저장소
  • 애플리케이션을위한 안정적인 트렁크로서의 마스터 브랜치
  • 각 기능 / 리 팩터 당 하나의 브랜치, 기본적으로 수행 할 각 상당한 크기 변경마다 하나의 브랜치
  • 분기가 안정되고 모든 테스트가 통과되면 트렁크로 다시 병합됩니다.

트렁크를 동기화하는 git hub 계정도 설정했습니다. 이를 통해 다른 컴퓨터에서 쉽게 작업을 시작할 수있었습니다. 필연적으로 다른 컴퓨터에서는 사용할 수 없었던 환경과 관련된 버그를 찾을 수있었습니다. 이제 다른 "처녀"시스템에서 프로젝트를 한 번 이상 시도하는 습관을들이십시오. 고객에게 배포 할 때 많은 어려움을 겪습니다.

  • github에 릴리스 할 수있는 모든 버전에 릴리스 가능 버전으로 태그를 지정합니다.
  • 고객에게 릴리스되면이 버전에서 분기하여 고객이 선언 한 버그 수정에 대한 두 번째 안정적인 트렁크를 만듭니다.

처음에는 여러 가지가 과잉처럼 보였지만 실제로 많은 도움이되었습니다. 나는 지점에서 아이디어를 시작하고 잠시 동안 작업하고 서클을 시작하면 다른 지점에서 작업을 포기하고 다른 지점을 시작했습니다. 나중에 반 구운 지점으로 돌아와서이 아이디어를 탐구 할 아이디어가 나왔습니다. 이로 인해 플래시와 아이디어를 매우 빠르게 행동하고 작동하는지 확인할 수 있기 때문에 훨씬 생산성이 향상되었습니다. GIT로 지점을 전환하는 비용은 매우 낮아서 코드 기반에 매우 민첩합니다. 그것은 여전히 ​​내 역사를 정리하기 위해 rebase 개념을 마스터해야한다고 말했지만, 나는 혼자이기 때문에 정말로 필요하다고 의심합니다. 그것을 배우기 좋은 것으로 밀어 붙였다.

모든 분기가 복잡해지면 로그 옵션을 탐색하여 변경 트리를 그리고 어느 분기가 어디에 있는지 확인했습니다.

간단히 말해 git은 SVN, CVS 또는 (brrr) TFS와 다릅니다. 분기는 매우 저렴하며 작업을 지우는 실수를하는 것은 실제로 매우 어렵습니다. 한 번만 나는 일을 잃었고 커밋을 너무 크게했기 때문입니다 (위의 나쁜 습관을보십시오). 자주 저지르면 작은 덩어리로 git이 최고의 동맹국이 될 것입니다.

저에게 git은 소스 제어가 실제로 무엇인지에 대해 마음을 열었습니다. 이전의 다른 것은 그것을 얻으려는 시도 일뿐입니다 .git은 처음으로, 제 마음에는 그것을 얻었습니다. 즉, 나는 다른 DVCS를 시도하지 않았으며 아마도이 진술이 온 가족에게 넓어 질 수 있습니다.

마지막 조언 중 하나는 명령 줄입니다. 그래픽 툴이 좋지 않다는 것은 말할 것도없고, 반대로, 명령 행으로 내려 가서 직접 시도해 보았을 때 git을 정말 싫어했습니다. 실제로 매우 포괄적 인 도움말 시스템을 사용하여 쉽게 만들 수 있습니다. 내 가장 큰 문제는 대안을 찾을 때까지 창문의 추악한 콘솔에 묶여있었습니다.

이제 Git과 Eclipse 통합을 사용하여 실시간으로 진행되는 작업을 확인하고 diff와 같은 일부 작업을 수행하고 파일의 기록을 탐색합니다. 분기, 병합, 푸시, 가져 오기 및 더 복잡한 로그 트리를위한 명령 행 . 몇 가지 기본 스크립팅과 소스 제어와 관련하여 생산성이 높지 않았으며 소스를 너무 많이 제어하지 못했습니다.

행운이 있기를 바랍니다.


4

나는 몇 가지 정교한 브랜칭 모델에 정통하며 일부는 직장에서 사용합니다. 그러나 프로젝트에서 혼자 일할 때, 나는 당신이 지금하고있는 일을 거의 정확하게 수행합니다. 필요한 경우 사실 후에 항상 지점을 만들 수 있지만 거의하지 않습니다. 혼자 일하면서 현재 작업이 끝날 때까지 기다릴 수없는 버그 수정이 거의 없습니다. 내 조언은 일부 브랜칭 모델에 익숙해지는 것이지만 필요할 때까지 복잡하게 만드는 것은 아닙니다.


4

더 간단한 모델의 경우 GitHub의 기능을 확인할 수 있습니다. "GitHub 흐름"은 매우 간단하며 여기에 훌륭한 안내서가 있습니다 : https://guides.github.com/introduction/flow/index.html

요약 ( Scott Chacon의 블로그에서 ) :

그렇다면 GitHub Flow는 무엇입니까?

  • 마스터 브랜치의 모든 것은 배포 가능
  • 새로운 작업을하려면 설명 적으로 이름이 지정된 브랜치에서 브랜치를 생성하십시오 (예 : new-oauth2-scopes)
  • 해당 지사에 로컬로 커밋하고 정기적으로 서버의 동일한 지사에 작업을 푸시하십시오.
  • 피드백이나 도움이 필요하거나 지점을 병합 할 준비가되었다고 생각되면 풀 요청을여십시오.
  • 다른 사람이 기능을 검토하고 사인 오프 한 후이를 마스터로 병합 할 수 있습니다.
  • 병합 된 후 '마스터'로 푸시되면 즉시 배포 할 수 있으며 배포해야합니다
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.