오늘 답은 기본적으로 동일합니다. 이러한 커밋을 수행하는 것은 가능하지만, 공유 기록을 다시 쓰는 일은 힘내에서 강력하게 피해야합니다.
당신과 나는 각각 또한 GitHub의에 존재하는 일부 저장소의 복사본이 있는지 상상해
A---B---C
당신은 그 B
커밋 당신이 커밋 스쿼시 있도록 C
정말 함께 노력 했어야 통지하여 로컬 사본. GitHub의 내가 여전히 파일 내용이 모든 곳에서 동일 할지라도,이 시점에서 우리의 커밋 ID를
A---B---C
있는 동안 당신은 지금, D
이 B
및 C
의 조합
A---D
이 갈라 섰다. 이제 --force
없이 GitHub으로 푸시 할 수 없습니다. GitHub의 master
분기에 더 이상 기록에없는 두 개의 커밋이 포함되어 있기 때문입니다.
당신이 사용을 경우 --force
당신은 GitHub의 변경 사항을 수용 할 수 있지만, 지금 내 저장소 상류 더 이상 존재하지 않는 개체를 커밋이 포함되어 있습니다. 나는 --force
을 사용하지 않고 GitHub을 사용할 수 없으며 (변경을 무효로 할 것입니다), 변경 사항을 가져 오기 위해 상대적으로 펑키 한 병합을하지 않고서는 제 작업을 리베이스하는 등의 작업을하지 않을 수 없습니다. 네가 한 짓을 말해줘.
더 많은 개발자들 (리눅스 커널 저장소에서 이것을 수행하는 이미징!)이 더 복잡해지고 더 많은 작업이 동시에 수행됩니다.
언제든지 git push --force
으로 유혹받을 때마다 잠시 생각해보십시오. 아주 좋은 이유만으로 끝내야 할 일을하고 계실 것입니다.
내 추천은 귀하의 기록이 조금 지저분하지만 앞으로 나아갈 수 있도록 노력하는 것입니다. 이러한 커밋은 로컬에서 으로 정리할 수 있습니다. GitHub을 누르거나 다른 개발자와 공유하려면을 누르십시오. 기능 브랜치에서 작업하고 필요하다면 커밋 히스토리를 정리하려면 , 푸시를 사용하려면 cherry-pick
, rebase
등을 사용하십시오.