2013-07-03 3 views
5

foo_baz이라는 지점에서 기능을 사용하고 있다고 가정 해 보겠습니다.스쿼시가 마스터에서 커밋되지만 기능 분기에서 커밋을 수행합니까?

필자는이 기능을 사용하여 여러 번 커밋합니다.

원격 추적 분기 인 foo_baz을 주기적으로 원격 저장소로 푸시합니다. IE origin/foo_baz.

foo_baz의 모든 커밋을 master으로 병합하고 origin/master으로 푸시합니다. 커밋 숙청

내가 모든 커밋은 여전히 ​​foo_baz에서 분리되어 master 등으로 foo_baz를 병합 할 수의 연혁,하지만 master에 그의 역사, 그들은 모두 하나 : 여기에 질문입니다?

편집 :

나는 내가 부족 것을 완전히 분명 뭔가가 있다면 자식 초보자의 비트, 그래서 용서해주십시오입니다. 나는 웹에서 파고 있지만 내 질문에 직접 대답을 찾을 수 없습니다.

git merge --squash foo_baz 
git commit 

답변

5

(다른 답변과 마찬가지로) 실제로 --squash을 찾고있을 수도 있지만 대신 을 찾고있을 수 있습니다.

두 가지의 차이점은 다음과 같습니다.

A --- B    <-- branch "master", when you start 

를 한 다음 새로운 지점 foo_baz에 두 개 더합니다 : 두 개의 커밋으로 시작한다고 가정

A --- B    <-- master 
     \ 
      C --- D  <-- foo_baz 

이제 (한 번 다시 master)에, 당신은 (다른 사람의 사이에서) 이러한 두 가지 옵션이 있습니다. 모두 별도의 git commit에서, 당신에게 첫 번째 경우 -in E를 저지 새로운 줄 명령하지만

A --- B ----------- E <-- "master" after merge --no-ff 
     \  /
      C --- D  <-- foo_baz 

:

A --- B ----------- E <-- master 
     \ 
      C --- D  <-- foo_baz 

또는 git merge --no-ff 할 수있는 다음과 같은 당신에게 줄 것이다 git merge --squash foo_baz && git commit 수있는 첫 번째 것은 멀티 패 런칭 액션을 억제하므로 마지막으로 지금부터 1 년을 되돌아 보면 마지막으로 브랜치에서 모든 변경 사항을 복사 한 것처럼 보입니다. 트리 (모든 파일은 git checkout 브랜치 일 때) DE (이 특별한 경우 어쨌든, 병합 작업 전에 master에 B가 변경되지 않은 경우)에서 동일하지만, 다른 커밋.각진 라인이 밖으로 곧게 할 수있는 당신에게 역사 곳을 모두 제공

A --- B 
     \ 
      C --- D  <-- foo_baz, master 

을 :

직선 git merge의 차이는 후자가 같이 보이는, "빠른 앞으로"생산 일반적으로 것입니다 가지는 똑같은 것처럼 보입니다.

0

나는 당신이 원하는 것은이 같은 생각합니다.

0

난 당신이 --squash 플래그를 찾고 생각 :

관련 문제