[解決済み] Gitが一部のファイルの変更を取り消す [重複] [重複
2022-04-13 23:11:59
質問
コーディング中に、何が起こっているかを追跡するために、いくつかのファイルにprintステートメントを追加しました。
作業が終わったとき、いくつかのファイルの変更を元に戻すことはできますが、実際に作業したファイルをコミットすることはできますか?
ファイルに印刷を追加したとします。
A
を修正しました。
B
.
B
は私がコミットしたいものであり
A
を、以前の状態に戻したい。
どのように解決するのですか?
ファイルAの変更をどうしたかによって、3つの基本的な方法があります。まだインデックスに追加したりコミットしたりしていない場合は、checkoutコマンドを使用するだけです。これは作業コピーの状態をリポジトリと一致させるために変更します。
git checkout A
すでにインデックスに追加している場合は、resetを使用します。
git reset A
コミットしていた場合は、revertコマンドを使用します。
# the -n means, do not commit the revert yet
git revert -n <sha1>
# now make sure we are just going to commit the revert to A
git reset B
git commit
一方、コミットしたけれども、そのコミットにはむしろ多くのファイルが含まれていて、それを戻したくない場合、上記の方法では多くの "reset B" コマンドが必要になるかもしれません。この場合、この方法を使用することをお勧めします。
# revert, but do not commit yet
git revert -n <sha1>
# clean all the changes from the index
git reset
# now just add A
git add A
git commit
もうひとつの方法は、やはり rebase -i コマンドの使用を必要とします。この方法は、編集したいコミットが複数ある場合に便利です。
# use rebase -i to cherry pick the commit you want to edit
# specify the sha1 of the commit before the one you want to edit
# you get an editor with a file and a bunch of lines starting with "pick"
# change the one(s) you want to edit to "edit" and then save the file
git rebase -i <sha1>
# now you enter a loop, for each commit you set as "edit", you get to basically redo that commit from scratch
# assume we just picked the one commit with the erroneous A commit
git reset A
git commit --amend
# go back to the start of the loop
git rebase --continue
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] Git で、ステージされていない変更を破棄するにはどうしたらいいですか?
-
[解決済み] ファイルをリセットしたり、特定のリビジョンに戻したりするにはどうすればよいですか?
-
[解決済み] まだプッシュされていない Git マージを元に戻す
-
[解決済み] Gitで1つのファイルの作業コピーの変更を元に戻す?
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Git, fatal: リモートエンドが予期せずハングアップしました。
-
[解決済み】マージ後のコミットでGitエラー - fatal: マージ中に部分コミットができない
-
[解決済み】ERROR: Error cloning remote repo 'origin'.
-
gitコミット発生 ! [リモート拒否] master -> master (pre-receive hook declined) 解決策
-
git commit リモートエラー [rejected] master -> master (フェッチファースト)
-
[解決済み] リモートの <ブランチ名> とマージするように設定されていますが、そのような参照は取得されませんでしたか?
-
[解決済み] fatal: EOF が早い fatal: インデックスパックが失敗した
-
[解決済み] SourceTree error:1407742E:SSLルーチン:SSL23_GET_SERVER_HELLO:tlsv1警告プロトコルバージョン
-
[解決済み] リモートブランチにプッシュできない、ブランチに解決できない
-
[解決済み] Gitで1つのファイルの作業コピーの変更を元に戻す?