ホームページ  >  記事  >  開発ツール  >  gitでコミットをキャンセルする方法

gitでコミットをキャンセルする方法

青灯夜游
青灯夜游オリジナル
2021-11-29 15:15:12217568ブラウズ

git でコミットをキャンセルする方法: 1. "git rm" コマンドを使用して元に戻します; 2. "git replace" コマンドを使用して元に戻します; 3. "git rebase" コマンドを使用して元に戻します; 4 「git revert」コマンドを使用して元に戻します。

gitでコミットをキャンセルする方法

このチュートリアルの動作環境: Windows 7 システム、Git バージョン 2.30.0、Dell G3 コンピューター。

間違ったコードを送信し、特定のコミット レコードを取り消す必要がある場合があります。いくつかの方法があります:

1. ファイルを削除します

削除する必要があるコミットが 1 つ以上のファイルである場合は、次の操作を実行できます。

1. ウェアハウスに送信されたファイルを削除する必要がある場合は、git rm コマンドを使用できます:

git rm <file> // 从工作区和暂存区删除某个文件
git commit -m "" // 再次提交到仓库

2.ファイルを一時記憶領域から削除します。ローカル ワークスペースに変更を加えない場合は、次のことができます:

git rm --cached <file>

3. ワークスペース内のファイルを誤って削除した場合は、git checkout## を使用できます。 # 一時記憶領域のファイルを上書きします。誤って削除されたファイルを回復する領域のファイル:

git checkout -- <file>
4. ファイルを削除するには、

git rm を使用します。削除操作も同様に行われます。ファイルを削除すると、ローカルの物理ファイルのみが削除され、git レコードからは削除されません。

5、

git addgit rm

には同様の機能があります。

ただし、git add は追加のみを記録できます。変更します。アクションと削除アクションは git rm

によって完了する必要があります。

2. GitHub はコミットを取り消します

ファイルだけでなくインターリーブされたコードも削除する必要がある場合は、次の方法があります。コミットを削除するには 3 つの方法があります。 1. gitリセット

gitリセット: 特定のコミットまでロールバックします。

  • git replace --soft: この送信後の変更はステージング領域に返されます。
  • git restart --hard: この送信後、変更は保持されません。 git status
  • ワークスペースを表示しても記録がありません。
  • 1) ロールバック コード削除する必要があるコミットが最新の場合は、
  • git restart## を使用してコードを以前のコミットにロールバックできます。 # コマンドのステータスを確認しますが、必ず既存のコードをバックアップしてください。そうしないと、これらの変更はロールバック後に消えてしまいます。具体的な操作は次のとおりです。
git log // 查询要回滚的 commit_id
git reset --hard commit_id // HEAD 就会指向此次的提交记录
git push origin HEAD --force // 强制推送到远端

2) 誤って削除した場合の回復

コードをロールバックした後に間違った commit_id をコピーした場合、または誤ってコミット レコードを削除した場合は、次のことができます。また、次のコードを使用して復元します。<pre class="brush:php;toolbar:false">git relog // 复制要恢复操作的前面的 hash 值 git reset --hard hash // 将 hash 换成要恢复的历史记录的 hash 值</pre>

注: 途中で特定のコミットを削除する場合、リモート ライブラリをロールバックするために

git replace

を使用しないことをお勧めします。後で他の人がコードを送信するときに

git pull

を使用することになります。また、ローカル ウェアハウスを以前のバージョンにロールバックするため、エラーが発生しやすく、不必要なワークロードが増加します。
  1. 2. git rebase

git rebase: 2 つのブランチが同じ行にない場合、マージ操作を実行する必要があります このコマンドを使用します。

    1) コミットを元に戻す
  • 途中の特定のコミットを削除する必要がある場合は、git rebase
  • コマンドを使用できます。方法は次のとおりです。以下:
git log // 查找要删除的前一次提交的 commit_id
git rebase -i commit_id // 将 commit_id 替换成复制的值
进入 Vim 编辑模式,将要删除的 commit 前面的 `pick` 改成 `drop`
保存并退出 Vim

これで完了です。

2) 競合を解決するこのコマンドを実行するとリベースの競合が発生する可能性が高く、次の方法で解決できます:

git diff // 查看冲突内容
// 手动解决冲突(冲突位置已在文件中标明)
git add <file> 或 git add -A // 添加
git rebase --continue // 继续 rebase
// 若还在 rebase 状态,则重复 2、3、4,直至 rebase 完成出现 applying 字样
git push

3、git revert

git revert: コミットを破棄します。

git revert
    以前の送信は git ログに残り、この取り消しは新しい送信として扱われます。
  • git revert -m
    : マージ ノードの操作に使用されます。-m は特定の送信ポイントを指定します。
  • 1) コミットを取り消す
  • コミットを途中で取り消したい場合は、git revert
  • を使用することも良い選択です:
git log // 查找需要撤销的 commit_id
git revert commit_id  // 撤销这次提交

2) マージ ノードの送信を元に戻します。

この送信がマージ ノードの場合は、-m コマンドを追加する必要があります:

git revert commit_id -m 1 // 第一个提交点
// 手动解决冲突
git add -A
git commit -m ""
git revert commit_id -m 2 // 第二个提交点
// 重复 2,3,4
git push

推奨学習: "

Git チュートリアル

>>

以上がgitでコミットをキャンセルする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。