1. 話の始まり
リモートマスターブランチのコードが大量のジャンクコードとともに誤って送信されたか、プロジェクトが削除されたため、以前のバージョンにロールバックしてコミットログを削除したかったのです。何をするか?シナリオは写真の通りです:
シナリオは非常にシンプルです。上司がファイルをアップロードしたので、私はそれを削除しました。ファイルを再度プッシュする方法もありますが、写真内のコメントを彼に見られたくないでしょう (追記: この方法なら私は解雇されません)。上記のシナリオを実装するコードは次のとおりです:
vim A.txt
git add .
git commit -a -m "add A.txt"
git Push
rm A.txt
git commit -a -m 「ボスのものを削除しました」
git Push
————–区切り線————–
混乱した初心者は何をすべきでしょうか?何をするか?何をするか?
リモートにプッシュされた送信はデフォルトでは変更できませんが、変更する必要があります:
git Push -f
2. ソリューション
2.1 ワークスペース、ステージングエリア、ローカルリポジトリとリモートバージョンライブラリ
いいえ写真は78と言います。 。 。
》》ワークスペース: 操作するディレクトリです
》》ステージングエリア: 操作ディレクトリのスナップショット
》》ローカルリポジトリ: Git の本質、誰もが中央倉庫です。つまり、分散型 Git の利点は、SVN のような集中型バージョンと当然のことながら比較されます
》》リモート版ライブラリ: Github のような集中型ウェアハウスで共有を実現できます。
よく使用される操作も図に示されており、一目瞭然です。
2.2 実践的な解決策
話は安い、コードかお金を見せてください~ コードは次のとおりです:
git log
git restart --soft ${commit-id}
git stash
git Push -f
詳細な説明は次のとおりです:
1行目: git log コミット履歴を表示し、ロールバックするバージョンを見つけます。履歴は次のとおりです。
commit 84686b426c3a8a3d569ae56b6788278c10b27e5b
Author: JeffLi1993
Date: Fri Apr 8 19:1 1:32 2016 +0800
上司のものを削除しました
コミット 72bd6304c3c6e1cb7034114db1dd1b8376a6283a
作成者: JeffLi1993
日付: 金曜日 4 月 8 日 19:05:23 2016 +0800
A.txt を追加
希望するバージョンロールバック: 72bd6304c3c6e1cb7034114db1dd1b8376a6283a
行 2: git replace –soft 72bd6304c3c6e1cb7034114db1dd1b8376a6283a
以前のバージョンを元に戻します一時保管場所に戻ります(綺麗な写真の見方が分かりません~)。ソフト パラメータとハード パラメータの違いは、ハードの変更レコードは失われるのに対し、ソフトは変更レコードを保持することです。
3行目: 安全上の理由から一時的に保存されています。
4行目: git Push -f
ローカルマスターをリモートリポジトリにプッシュし、-fは強制的に上書きします。
3. 概要
git restart 特定のバージョンにロールバック
git Push -f 強制的にプッシュ上書き