2014-07-16 2 views
0

여러분, gutub에 푸시하기 전에 분기에있는 여러 커밋을 하나로 병합하려고합니다. 지점 이름은 mybranch입니다.git branch stash가 하나에 커밋됩니다.

내가 잘못하지 않은 경우 다음 명령을 사용하여 커밋을 스쿼시 할 수있는 옵션을 제공해야합니다.

git rebase -i mybranch 

나는 그냥

noop 

# Rebase 39e50c2..39e50c2 onto 39e50c2 
# 
# Commands: 
# p, pick = use commit 
... 

내가 잘못 뭐하는 거지라고 ... 실제로 작업 표시 해달라고? 메시지가 말한다처럼 - 그 아무것도 실행이 될 것입니다 때문에 당신이 그 자체에 지점을 리베이스 수 없도록

감사

+0

[힘내 : 다른 지점의 모든 변경 사항을 단일 커밋으로 병합] (https://stackoverflow.com/questions/3697178/git-merge-all-changes-from-another-branch-as-a-single- 커밋) – RomanHotsiy

+0

@RomanGotsiy Im 특별히 한 지점에 머물려고 노력 중입니다. – Cmag

답변

1

Rebase 현재의 이동, 한 곳에서 커밋 그래프의 다른 커밋합니다. 대신, mybranch에있는 동안, 아마도 당신이 원하는 것은 분기 된 지점으로 리베이스하는 것입니다. 이 마스터에서 분기하는 경우 다른 사람이 변화를 추진하고있다 예를 들어, 당신은

git rebase -i master 

추가 정보를 원하시면 특히 http://philipdaniels.com/gitcheatsheet/

내 쪽지에 "기능/버그 수정 지점 워크 플로우"에서 살펴 보자 필요 리포에 대해 원점/마스터에 리베이스해야하는 것이 바람직한 이유를 이해하는 것이 좋습니다. (단계 7) : 이때 병합 충돌을 해결해야합니다.

2

실제로 병합은 하나의 지점에 머물러 있습니다. 하지만 당신은 다음 단계를 사용하여 수행 할 수 있습니다 명령 git reset의 더 나은 이해 형식

# reset all changes after commit that already is pushed to remote repo 
# option --soft will save all the changes in stage area 
git reset --soft origin/mybranch 
# here all you changes is in stage area so you can commit 
git commit -m "squashed commit" 
git push 

은 다음과 같습니다

git reset <mode> <commit> 

그리고 모드 --soft :

를 만지지 않는다 --soft 인덱스 파일이나 작업 트리를 전혀 사용하지 않습니다 (단, 모든 모드와 마찬가지로 헤드를 리셋합니다). 이로 인해 변경된 파일 인 이 "커밋 될 변경 사항"으로 남게됩니다. 왜냐하면 자식 상태가 이므로

origin/mybranch 마지막으로 강제 실행 커밋으로 푸시 포인트.

mybranch이 로컬 브랜치 (즉, 리모컨으로 푸시되지 않은 경우)에서 분기 된 분기로 재설정 할 수 있습니다.