2013-06-24 2 views
4

저는 현재 사용하고있는 GIT 워크 플로우에 대한 의견을 듣고, 변경 사항 중 어느 것이 적절한 리포지토리에 병합/푸시되지 않았는지 확인하는 방법에 관심이 있습니다. 그래서 우선, 내 현재의 시스템은 다음과 같습니다 : 새 작업에 대한GIT 브랜치가 완전히 병합되지 않았다는 것을 어떻게 알 수 있습니까?

 remote.master 
      | 
      | 
      V 
     local.master 
    |  |  | 
    V  V  V 
branch branch branch 

, 나는 local.master하는 remote.master에서 당겨 새로운 지점을 만들고 그것을 확인합니다. 작업을 수행하는 동안 다양한 커밋을 수행하고, 다른 작업으로 전환 한 다음 준비가되면 remote.master에서 local.master로 연결하고 local.master로 분기를 병합 한 다음 마지막으로 remote.master로 푸시합니다.

그래서 2 가지 질문 : 소규모 팀의 경우이 과잉 공격입니까? 지방 지부를 생략하는 것이 더 합리적입니까? 그렇다면 some advice은 '빨리 감기'(remote.master에서 변경 사항을 구분할 수없는 것으로 이해함) 또는 예기치 않은 시간 소인을 갖고 있으며 해석이 어려운 커밋의 과다한 문제가 있음을 제안합니다.

위의 워크 플로를 가정하면 두 번째 : 때로는 작업 사이를 자주 전환합니다. 나를 보여주는 화면이 필요합니다.

'branch 01' -> partially merged to local.master 
'branch 04' -> notmerged to local.master 
'local.master' -> partially merged to remote.master 

다양한 기능이 병합되었거나 어디로 이동했는지 잊어 버릴 수 있습니다. 나는 branch-by-branch로 가고 싶지 않고 'git diff'또는 다른 명령을 통해이 정보를 신성화하려하지 않습니다. 현재 Windows에서 Tortoise GIT를 사용하고 있지만 다른 그래픽 대안을 사용할 수 있습니다. 나는 쉘을 때때로 사용하지만, UI를 선호한다. 이 정보를 얻을 수있는 방법이 있습니까?

+0

로컬 분기를 생략하지 않습니다. 디폴트로,'git branch'는 단지 로컬에만 표시합니다. 그러나 나는 당신이 가지가 실제로있는 것보다 더 많다고 생각하고 있다고 생각합니다. 그것들은 정말로 특정한 커밋에 붙여진 일종의 "스티커 메모"입니다. 가지에 커밋 할 때 새로운 커밋을 추가하고 스티커 메모를 앞으로 옮깁니다. 실제 분기는 항상 커밋 그래프에서 동적으로 결정됩니다. 지점 레이블 이름을 합리적으로 유지하는 것은 사용자에게 달려 있습니다. – torek

답변

3

로컬 환경에서 수행하려는 작업이 과도하지 않습니다. 100 개의 로컬 브랜치를 갖고 싶다면 그것은 완전히 당신에게 달렸습니다. 그리고 아마 과잉이라고 판단되면 적절히 축소 할 수 있습니다.

"빨리 감기 문제"는 맛이 있습니다. Git의 기본 동작은 두 브랜치가 분기되지 않은 경우 병합 대신 빨리 감기하는 것입니다. 저자와 마찬가지로, 나는 또한 이것을 좋아하지 않지만, 나는 그것을 "문제"라고 부르지 않을 것이다. 해결 방법으로,이 같은 병합을 수행

# merge branch without fast forward and commit 
git merge --no-ff --no-commit branchname 

# code review 
git diff 

# commit the merge 
git commit -m 'merged: branchname' 

내가 git rev branchname에 병합 단계를 단순화하기 위해 별칭 rev = merge --no-ff --no-commit을 사용 ("리뷰"에라는 이름으로 "REV를", "코드 리뷰"에서와 같이). 변화처럼, 나는 모든 기능에 대해 별도의 분기를 사용하기 때문에 revlog = log --first-parent

내가 프로젝트의 발전에 큰 단계를 볼 수있는이 방법 :

또 다른 별칭을 사용 커밋에만 병합의 로그를 보려면 로그.

# view the branches that have been merged already 
git branch --merged 

# view the branches that have NOT been merged yet 
git branch --no-merged 

내가 거북이를 모르겠지만, 내가이 망할 놈의 강타에 포함되어있어 제대로 기억한다면 gitk은 꽤 좋은 : 당신의 두번째 질문에 대한

, 난 당신이 명령을 찾고 생각합니다.