私はGitのnoobですが、私が最近開発した機能の履歴を整理することを任されました。私はこの仲間と同様の設定をhere持っています。私も同じようなことをしたいと思っていますが、私は特定のコミットにスカッシュしたいです。私のコミットがcommit1、commit2、...、commitNをしている場合たとえば、私はcommit1、commit2は、...はcommitXに押しつぶさされるようにしたいです。 コミットX + 1、コミットX + 2、...は、コミットYに潰れています。 、私の知る限り理解しスカッシュはリモートブランチ内で任意のコミットを行います
noop
# Rebase a112005..a112005 onto a112005 (1 command(s))
...
:など
私は、このコマンドで
git rebase -i origin/*branch_name*
可能ですが、問題は、私はそのコマンドを実行したとき、私はこれを取得することをであることを理解し最後と最初のコミットはここに表示されますが、最後のコミットだけが表示されます。私は他に選ぶか、スカッシュ実行しようとすると、それは言うコミット:
error: could not apply *commit hash*... *commit message*
明らかにそれはそれはそのメッセージを知っているのでコミット見つけたが、何らかの理由で、それも編集可能として、それを見ていないことを意味しています。どのように私はこれを修正することができます誰も考えている?また、誰かがセットアップのためのより良い端末ベースの同期システムか、自分のものを整理するためのよりよい方法をお勧めするなら、私は感謝しています。
その場合は、 "git rebase -i * branch_name *"を使用し、元のファイルを編集してから、 "git push"を使ってリモートブランチに保存する必要があります。 – Ilman
はい:ただし、プッシュを強制的に受け入れるには、プッシュを強制する必要があります(「リース」オプションの有無にかかわらず)。これに関する他の回答を読んで、問題がどこにあるかを確認してください。それらはすべてあなたが始める前に彼らと同期してGitのレポを取得しなければならないという事実から流れ出します、そして、あなたが働いている間に再び同期を取り出すことができます。 – torek