2014-12-01 3 views
1

일상 업무에서 Git을 사용하는 습관을 짓는 새로운 코드를 작성했습니다. dev/master/main 분기의 분기를 작성하는 대신 변경 사항을 수행 한 후 다시 병합을 마쳤습니다. 갈등을 해결하여 참조 지점으로 이동합니다. 나는 전혀 분기하지 않습니다. 대신 변경 사항을 푸시해야 할 때 다른 사람이 변경 한 내용을 가져 오기 위해 변경 사항을 저장하고 새 커밋을 가져온 다음 변경 사항을 적용합니다. 이 다른 사람들의 새로운 커밋의 맨 위와 갈등 해결 (있는 경우). 그런 다음 마침내 변경 사항을 적용합니다. 나는이 관행이 가지를 다루는 것보다 쉽고 간단하다는 것을 알았습니다.Git : 분기 대신 stashing

기존의 분기보다 변경 사항을 잘못 적용하거나 수용 할 수 있습니까? 왜? 이 변경 사항을 기반으로 적용됩니다

git fetch --all 
git checkout featureX 
git rebase master 

:

+0

나는'git commit'을하지 않고 업스트림에서 변경 사항을 가져 오기 전까지 작업 디렉토리에서 개발한다는 것을 알고 있습니까? –

+0

아니요. 변경 사항을 적용하기 바로 전에 변경 사항을 적용합니다. 작업의 기간에 따라 로컬 커밋을 수행 할 수 있는지 여부를 결정할 수 있습니다. – AxeEffect

+0

로컬에서 커밋하는 경우 (우발적 인 삭제로부터 추가 보호 수단을 제공함) 실제로 작업중인 분기는 중요하지 않습니다. –

답변

1

귀하의 로컬 저장소이 이므로 기억하십시오. git stash으로 규정 된 워크 플로우에 아무런 문제가 없습니다 (그리고 완전히 허용됨). 당신이 원하는 것은 무엇이든지간에 당신이 원하는 것은 무엇이든간에 당신은 세계의 나머지 부분을 일관성있게 유지할 수 있습니다. 예를 들어, 다른 사람들을 화나게하려는 커밋에 rewriting history을 넣지 마십시오.

여기서 중요한 점은 분기와 숨김이 상호 배타적이지 않다는 점입니다. stashing이 현재의 요구에 부합한다면, more complicated scenarios 표면까지 분기와 stashing을 모두 고려해야합니다. 명심해야 할

몇 가지 :

  1. 자식에 분기는 로우에서 어떤 식 작업입니다. 저의 팀은 일상 업무 흐름의 일부입니다.
  2. 브랜칭을 사용하면 팀 구성원이 master (또는 업스트림 메인 브랜치가 무엇이든)으로 푸시 준비가되지 않은 작업 진행 코드를 공유 할 수 있습니다. 이것은 기본적으로 팀 구성원들간에 하위 팀을 구성 할 수있게 해줍니다.
  3. 브랜칭을 사용하면 다른 프로젝트에 기여하거나 코드 리뷰를 요청하는 동안 풀 요청을 github에 제출할 수 있습니다.
  4. git stash popgit stash drop을 사용하여 장래에 혼란을 피하기 위해 항상 내 숨김 목록을 작게 유지합니다.
  5. 여전히 숨김과 병합 충돌이 있습니다.
+0

전적으로 동의합니다. 두 가지 모두 독점적 인 것이 라기보다는 보완적인 것입니다. 그러나 브랜칭이 얼마나 쉬운지를 고려하더라도 브랜칭보다 쉬움이 더 쉬운 간단한 시나리오가있을 수 있습니다. – AxeEffect

+0

@AxeEffect 듣기가 쉽습니다. 희망이 도움이됩니다. 대답이 마음에 든다면 허용으로 표시하십시오. 감사! –

+0

의심 할 바없이 당신의 대답은 좋습니다. 그러나 이것이 수학/특정 질문이 아니기 때문에 몇 가지 유효한 좋은 해답을 얻을 수 있습니다. 그러므로 나는 '받아 들인'대답을 표시하기 전에 약간의 시간을두고 싶습니다. – AxeEffect

0

는 일반적으로 그 예를 들어 당신이 featureX에 대한 상류 마스터에 따라, 그래서 당신이 다음 할, 당신은 다음과 같습니다 하나에 당신의 기능 지점을 리베이스 다소 같다 새로운 코드. 당신이 뭔가에 가지 기능을 변환 할 수 있습니다 주위에 이미 숨겨 놨다가있는 경우

는 :

git branch featureX [<stash>] 

나는 나를 위해 그 쉽게 잊어 가서, 숨겨 놨다 다루는 것보다 기능을 가지 처리하는 것이 더 관용적 발견 궁극적 인 원격 개발 Repo에 push them around을 사용할 수 없습니다.