2016-07-06 2 views
1

브랜치에 커밋을 세 개 만들고 각 브랜치를 원격으로 푸시했다. 그때 커밋 스쿼시하는 데 필요한, 그래서 내가 사용 :로컬 커밋을 스쿼시 한 ​​후 원격 브랜치가 실패한다.

git reset --soft HEAD~3 && git commit 
git push --force 

을 두 번째 줄에서, 나는 치명적인 오류가있어 : 나는 git push --set-upstream origin [BRANCH-NAME]과의 제안 명령을 시도

The current branch [BRANCH-NAME] has no upstream branch. 
To push the current branch and set the remote as upstream. 

, 그러나 것을 말했다되고 있어요 현재 지점의 끝은 원격 지점의 뒤에 있습니다. 뒤돌아 보면 머리말이 리모컨의 색인 3에있는 동안 현재 로컬 지점의 색인 1에 있으므로 이해가됩니다.

내가 지금하고 싶은 것은 기본적으로 (내가 로컬로 가지고있는) 브랜치의 버려진 버전을 리모트에있는 스쿼시되지 않은 버전으로 대체하는 것이다. 여기서 올바른 접근 방식은 무엇입니까?

나는 this와 몇 가지 다른 것들을 보았지만 도움을받지 못했습니다.

답변

2

당신은 --force를 추가해야합니다.

+0

강제 실행은 해당 분기 외부에 영향을 미치지 않습니다. 나는이 지부에서 일하는 유일한 사람이지만 스승님을 위해 일하는 사람들이 많아서 나는 그들의 일에 영향을 미치고 싶지 않다. – NeonBlueHair

+0

아니요, 분기 이름을 지정하기 때문에 밀어 넣을 유일한 이름입니다. 그냥 지사 이름으로 master를 입력하지 마십시오;) – jonnystoten

+0

그 것처럼 보입니다. 그것은 생명의 은인이었습니다, 정말 고마워요! – NeonBlueHair

0

변경 사항이 원격으로 커밋되었으므로 git 기록을 다시 작성해야합니다. 일반적으로 꼭해야하는 경우가 아니라면 일반적으로 기록을 다시 작성하지 마십시오. 사소한 커밋이 푸시 커밋을 스쿼시하는 이유는 아닙니다. 그들이 머물 수 있다면, 그들을 머물게하십시오.

git 원격 저장소의 경우 계속 진행하려면 로컬 저장소에서 커밋을 스쿼시해야한다고 가정합니다 (git rebase -i는 간단합니다). 스쿼시 후, -f를 눌러 강제로 밀어 넣습니다.

당신이 --set-upstream으로 실행 한 후에
git push --set-upstream --force origin [BRANCH-NAME] 

, 당신은 단지 git push을 입력 할 수 있습니다 (또는 git push -f 필요) 다음부터 : 그 명령을 제안에