現在のブランチのスカッシュリベースの実行方法を取得できません。コンソールコマンドは
git rebase -i HEAD~2
その後、通常どおりにつぶします。しかし、TGitで同じことをする方法は?
ケースを初期化するスクリプト
git init .
touch 1
git add 1
git commit -m "1"
touch 2
git add 2
git commit -m "2"
touch 3
git add 3
git commit -m "3"
結果として、スカッシュ後、3つのファイルで1つのコミットが行われます。
提案はありますか?
前のいずれもしないでください!インターフェイスを使用して2つのコミットを結合するだけです。共有リポジトリで既にコミットを結合しないでください。見る:
これは、TortoiseGit 1.7.12を使用して動作します。
TortoiseGit
-> Show log
を選択します。Rebase master onto this...
を選択する最新のコミットを右クリックします。コンテキストメニューから。Force Rebase
チェックボックスをオンにしてから、コミットを右クリックしてPick
、Squash
などを選択するか、Squash ALL
あなたの場合のチェックボックス。Start Rebase
ボタンを押すと、成功するとCommit
ボタンに変わり、次にDone
ボタンに変わります。それらをすべて押します。サンプルスクリプトでは、ルートコミット 特殊なケース を押しつぶす/修正することに注意してください。ルートコミットにはステップ2で選択できる親がないため、上記のように動作しません。
Tortoise Gitを使用して、Aspoblaにレポジトリを保存しました(明らかにGitHubに似ています)。
コミット履歴全体を効果的に削除し、最初からレポジトリをやり直すことにしました。 Assemblaのローカルgitフォルダーと対応するレポを削除してから再作成することもできましたが、これを「正しい方法」で行う方法を見つけた方が良いと考えました。
だから、ここに私がそれを達成した方法があります:
1)Tortoise Gitを使用して、リポジトリのログを表示します。すべてのコミットを強調表示し、右クリックして、「1つのコミットにまとめる」を選択します。
2)表示されるダイアログで、コミットコメント(以前のすべてのコメントの組み合わせになります)を削除し、単一のコメントに置き換えます。リベース。次に、コミットを開始します。ローカルリポジトリは、削除して再作成することなく、最初から効果的に開始されます(もちろん、すべてのファイルはもちろん追加されます)。
3)残念ながら、Assemblaにプッシュすることはできません。あなたの「頭」がリモートブランチの背後にあると主張して、これを拒否します。それを解決するには、まずAssemblaのレポの「設定」ページに移動します。 「強制プッシュを許可する」を有効にします。
4)「強制プッシュ」を実行します。 Tortoise GitのGUIオプションがあるかどうかはわかりませんが、コマンドプロンプトを使用して簡単に実行できます。
cd [your repo folder]
git Push -f Origin
できた!
更新:
TortoiseGitで「プッシュを強制」するには、プッシュダイアログに「既知の変更」と「不明な変更」を強制するチェックボックスがあります。違いはわかりませんが、両方ともgit --forceスイッチを使用します。そもそも「既知の変更」を試してください。
Show Log
に移動し、現在のコミットでタグを作成します(例:「tmp」)。All Branches
を切り替えます。Cherry Pick selected commits...