Gitリポジトリを以前のコミットに戻すにはどうすればよいですか?

7626
Crazy Serb 2010-11-07 06:58.

現在の状態から特定のコミットで作成されたスナップショットに戻すにはどうすればよいですか?

私が行う場合はgit log、その後、私は次のような出力が得られます。

$ git log
commit a867b4af366350be2e7c21b8de9cc6504678a61b`
Author: Me <[email protected]>
Date:   Thu Nov 4 18:59:41 2010 -0400

blah blah blah...

commit 25eee4caef46ae64aa08e8ab3f988bc917ee1ce4
Author: Me <[email protected]>
Date:   Thu Nov 4 05:13:39 2010 -0400

more blah blah blah...

commit 0766c053c0ea2035e90f504928f8df3c9363b8bd
Author: Me <[email protected]>
Date:   Thu Nov 4 00:55:06 2010 -0400

And yet more blah blah...

commit 0d1d7fc32e5a947fbd92ee598033d85bfc445a50
Author: Me <[email protected]>
Date:   Wed Nov 3 23:56:08 2010 -0400

Yep, more blah blah.

11月3日からコミットに戻すにはどうすればよい0d1d7fcですか?つまりコミットしますか?

30 answers

10222
Cascabel 2010-11-07 07:04.

これは、「元に戻す」の意味に大きく依存します。

一時的に別のコミットに切り替えます

一時的に戻って、だましてから、現在の場所に戻りたい場合は、目的のコミットを確認するだけです。

# This will detach your HEAD, that is, leave you with no branch checked out:
git checkout 0d1d7fc32

または、そこにいる間にコミットを行いたい場合は、先に進んで、そこにいる間に新しいブランチを作成します。

git checkout -b old-state 0d1d7fc32

元の場所に戻るには、もう一度行っていたブランチを確認してください。(ブランチを切り替えるときはいつものように、変更を加えた場合は、必要に応じて対処する必要があります。リセットして破棄することもできます。スタッシュ、チェックアウト、スタッシュポップして持ち運ぶことも、コミットすることもできます。そこにブランチが必要な場合は、そこにブランチします。)

未公開のコミットをハード削除する

一方、それ以降に行ったすべてのことを本当に取り除きたい場合は、2つの可能性があります。1つは、これらのコミットをまだ公開していない場合は、リセットするだけです。

# This will destroy any local modifications.
# Don't do it if you have uncommitted work you want to keep.
git reset --hard 0d1d7fc32

# Alternatively, if there's work to keep:
git stash
git reset --hard 0d1d7fc32
git stash pop
# This saves the modifications, then reapplies that patch after resetting.
# You could get merge conflicts, if you've modified things which were
# changed since the commit you reset to.

混乱した場合は、ローカルの変更をすでに破棄していますが、少なくとも再度リセットすることで、以前の場所に戻ることができます。

公開されたコミットを新しいコミットで元に戻す

一方、作品を公開した場合は、ブランチをリセットしたくないでしょう。これは、履歴を効果的に書き換えるためです。その場合、実際にコミットを元に戻すことができます。Gitでは、元に戻すには非常に具体的な意味があります。逆パッチを使用してコミットを作成し、それをキャンセルします。このようにして、履歴を書き換えることはありません。

# This will create three separate revert commits:
git revert a867b4af 25eee4ca 0766c053

# It also takes ranges. This will revert the last two commits:
git revert HEAD~2..HEAD

#Similarly, you can revert a range of commits using commit hashes (non inclusive of first hash):
git revert 0d1d7fc..a867b4a

# Reverting a merge commit
git revert -m 1 <merge_commit_sha>

# To get just one, you could use `rebase -i` to squash them afterwards
# Or, you could do it manually (be sure to do this at top level of the repo)
# get your index and work tree into the desired state, without changing HEAD:
git checkout 0d1d7fc32 .

# Then commit. Be sure and write a good message describing what you just did
git commit

git-revertmanページには、実際にその説明では、このの多くをカバーしています。もう1つの便利なリンクは、git-revertについて説明しているこのgit-scm.comセクションです。

結局元に戻したくないと判断した場合は、元に戻すか(ここで説明)、元に戻す前にリセットすることができます(前のセクションを参照)。

この場合、この回答が役立つこともあります
。HEADを前の場所に戻すにはどうすればよいですか。(切り離されたヘッド)&コミットを元に戻す

2168
Yarin 2014-02-12 18:18.

ここには複雑で危険な答えがたくさんありますが、実際には簡単です。

git revert --no-commit 0766c053..HEAD
git commit

これにより、すべてがHEADからコミットハッシュに戻されます。つまり、すべてのコミット0766c053がウォークバックされた後のように、作業ツリーにそのコミット状態が再作成されます。次に、現在のツリーをコミットできます。これにより、「元に戻した」コミットと本質的に同等の新しいコミットが作成されます。

--no-commitフラグを使用すると、gitはすべてのコミットを一度に元に戻すことができます。そうしないと、範囲内のコミットごとにメッセージの入力を求められ、不要な新しいコミットが履歴に散らばります。)

これは、前の状態にロールバックするための安全で簡単な方法です。履歴が破棄されることはないため、すでに公開されているコミットに使用できます。

1661
boulder_ruby 2012-08-21 20:19.

不正なコーダー?

自分で作業して、それを機能させたいですか?以下のこれらの指示に従ってください、彼らは私と他の多くの人のために何年もの間確実に働きました。

他の人と一緒に働いていますか?Gitは複雑です。何か発疹を起こす前に、この回答の下にあるコメントを読んでください。

作業コピーを最新のコミットに戻す

変更を無視して、前のコミットに戻すには:

git reset --hard HEAD

ここで、HEADは現在のブランチの最後のコミットです。

作業コピーを古いコミットに戻す

最新のコミットよりも古いコミットに戻すには:

# Resets index to former commit; replace '56e05fced' with your commit code
git reset 56e05fced 

# Moves pointer back to previous HEAD
git reset --soft [email protected]{1}

git commit -m "Revert to 56e05fced"

# Updates working copy to reflect the new commit
git reset --hard

クレジットは同様のStackOverflowの質問に送られます、GitのSHAハッシュによるコミットに戻しますか?

227
Pogrindis 2013-10-23 01:53.

私とおそらく他の人にとって最良のオプションは、Gitリセットオプションです:

git reset --hard <commidId> && git clean -f

これは私にとって最良の選択肢でした!シンプル、高速、効果的です!


**注:**コメントで述べたように、古いコミットのコピーを持っている他の人とブランチを共有している場合は、これを行わないでください

また、コメントから、より少ない「ballzy」メソッドが必要な場合は、使用できます

git clean -i
191
CodeWizard 2015-02-06 11:56.

答える前に、これHEADが何であるかを説明するいくつかの背景を追加しましょう。

First of all what is HEAD?

HEADは、現在のブランチの現在のコミット(最新)への単なる参照です。常に1つしか存在できませんHEAD(を除くgit worktree)。

の内容HEADは内部.git/HEADに格納され、現在のコミットの40バイトのSHA-1が含まれています。


detached HEAD

最新のコミットを行っていない場合、つまりHEAD、履歴内の以前のコミットを指している場合は、と呼ばれdetached HEADます。

コマンドラインでは、次のようになります-HEADは現在のブランチの先端を指していないため、ブランチ名の代わりにSHA-1です。


切り離されたHEADから回復する方法に関するいくつかのオプション:


git checkout

git checkout <commit_id>
git checkout -b <new branch> <commit_id>
git checkout HEAD~X // x is the number of commits t go back

これにより、目的のコミットを指す新しいブランチがチェックアウトされます。このコマンドは、特定のコミットにチェックアウトします。

この時点で、ブランチを作成し、この時点から作業を開始できます。

# Checkout a given commit.
# Doing so will result in a `detached HEAD` which mean that the `HEAD`
# is not pointing to the latest so you will need to checkout branch
# in order to be able to update the code.
git checkout <commit-id>

# Create a new branch forked to the given commit
git checkout -b <branch name>

git reflog

いつでも使用できreflogます。git reflog を更新した変更が表示さHEADれ、目的のreflogエントリをチェックアウトすると、HEADこのコミットに戻ります。

HEADが変更されるたびに、に新しいエントリがあります。 reflog

git reflog
git checkout [email protected]{...}

これにより、目的のコミットに戻ることができます


git reset HEAD --hard <commit_id>

頭を目的のコミットに「移動」します。

# This will destroy any local modifications.
# Don't do it if you have uncommitted work you want to keep.
git reset --hard 0d1d7fc32

# Alternatively, if there's work to keep:
git stash
git reset --hard 0d1d7fc32
git stash pop
# This saves the modifications, then reapplies that patch after resetting.
# You could get merge conflicts, if you've modified things which were
# changed since the commit you reset to.
  • 注:(Git 2.7以降)も使用できgit rebase --no-autostashます。

このスキーマは、どのコマンドが何を実行するかを示しています。ご覧のとおり、をreset && checkout変更しHEADます。

152
Stephen Ostermiller 2014-03-05 07:25.

「コミット解除」し、最後のコミットメッセージを消去し、変更したファイルをステージングに戻す場合は、次のコマンドを使用します。

git reset --soft HEAD~1
  • --softコミットされていないファイルは、--hard破棄されるのではなく、作業ファイルとして保持する必要があることを示します。
  • HEAD~1最後のコミットです。3つのコミットをロールバックする場合は、を使用できますHEAD~3。特定のリビジョン番号にロールバックする場合は、SHAハッシュを使用してロールバックすることもできます。

これは、間違ったことをコミットし、最後のコミットを元に戻したい場合に非常に便利なコマンドです。

ソース: http://nakkaya.com/2009/09/24/git-delete-last-commit/

140
kiran boghra 2014-12-12 20:52.

これは、次の2つのコマンドで実行できます。

git reset --hard [previous Commit SHA id here]
git push origin [branch Name] -f

以前のGitコミットが削除されます。

変更を保持したい場合は、次を使用することもできます。

git reset --soft [previous Commit SHA id here]

次に、変更を保存します。

114
Roman Minenok 2012-07-30 01:01.

Gitでローカルの変更を元に戻す方法をたくさん試しましたが、最新のコミット状態に戻したいだけの場合は、これが最適なようです。

git add . && git checkout master -f

簡単な説明:

  • コミットは作成されませんgit revert
  • それはあなたの頭を切り離すことはありませんgit checkout <commithashcode>
  • ブランチでの最後のコミット以降に、すべてのローカル変更を上書きし、追加されたすべてのファイルを削除します。
  • ブランチ名でのみ機能するため、この方法でブランチ内の最新のコミットにのみ戻すことができます。

上記の結果を達成するためのはるかに便利で簡単な方法を見つけました。

git add . && git reset --hard HEAD

ここで、HEADは現在のブランチでの最新のコミットを指します。

これはboulder_rubyが提案したものと同じコードコードですが、最後のコミット以降に作成されたすべての新しいファイルを消去するためにgit add .以前git reset --hard HEADに追加しました。これは、ほとんどの人が最新のコミットに戻るときに信じていることだからです。

90
Alireza 2017-07-21 05:55.

OK、 Gitで前のコミットに戻るのはとても簡単です...

変更を保持せずに元に戻します。

git reset --hard <commit>

変更を保持したまま元に戻します。

git reset --soft <commit>

説明:を使用git resetすると、特定の状態にリセットできます。上記のように、コミットハッシュで使用するのが一般的です。

ただし、違いは2つのフラグを使用すること--soft--hard、デフォルトではフラグgit resetを使用することです--softが、常にフラグを使用することをお勧めします。各フラグについて説明します。


- 柔らかい

説明されているデフォルトのフラグは、提供する必要はなく、作業ツリーを変更しませんが、コミットする準備ができているすべての変更されたファイルを追加するため、ファイルへの変更がステージングされないコミットステータスに戻ります。


- ハード

このフラグに注意してください。作業ツリーと追跡ファイルへのすべての変更がリセットされ、すべてが失われます。


また、Gitを使用した実際の生活で発生する可能性のある以下の画像を作成しました。

74
markreyes 2016-05-11 07:21.

マスターとそのそれぞれのブランチについて話していると仮定します(つまり、これはあなたが関係している任意の作業ブランチである可能性があります):

# Reset local master branch to November 3rd commit ID
git reset --hard 0d1d7fc32e5a947fbd92ee598033d85bfc445a50

# Reset remote master branch to November 3rd commit ID
git push -f origin 0d1d7fc32e5a947fbd92ee598033d85bfc445a50:master

ブログ投稿で答えを見つけました(現在は存在しません)

これはリモートへの変更のリセットと強制であることに注意してください。チームの他のメンバーがすでにgitプルしている場合は、問題が発生します。あなたは変更履歴を破壊しています。これは、人々が最初にgitを使用する重要な理由です。

リセットよりも元に戻す(他の回答を参照)を使用することをお勧めします。あなたが一人のチームなら、それはおそらく問題ではありません。

61
Lance Caraccioli 2011-10-14 11:51.

次の名前のテキストファイルに次のコミットがあるとします~/commits-to-revert.txt(私git log --pretty=onelineはそれらを取得するために使用しました)

fe60adeba6436ed8f4cc5f5c0b20df7ac9d93219
0c27ecfdab3cbb08a448659aa61764ad80533a1b
f85007f35a23a7f29fa14b3b47c8b2ef3803d542
e9ec660ba9c06317888f901e3a5ad833d4963283
6a80768d44ccc2107ce410c4e28c7147b382cd8f
9cf6c21f5adfac3732c76c1194bbe6a330fb83e3
fff2336bf8690fbfb2b4890a96549dc58bf548a5
1f7082f3f52880cb49bc37c40531fc478823b4f5
e9b317d36a9d1db88bd34831a32de327244df36a
f6ea0e7208cf22fba17952fb162a01afb26de806
137a681351037a2204f088a8d8f0db6e1f9179ca

Bashシェルスクリプトを作成して、それぞれを元に戻します。

#!/bin/bash
cd /path/to/working/copy
for i in `cat ~/commits-to-revert.txt`
do
    git revert $i --no-commit
done

これにより、ファイルとディレクトリの作成、削除など、すべてが以前の状態に戻り、ブランチにコミットされ、履歴が保持されますが、同じファイル構造に戻されます。Gitにがない理由git revert --to <hash>は私を超えています。

59
2 revs user456814 2014-06-30 07:51.

Jefromiのソリューションの追加の代替案

Jefromiのソリューションは間違いなく最高のものであり、間違いなくそれらを使用する必要があります。しかし、完全を期すために、私もまた、コミット復帰するために使用することができ、これらの他の代替ソリューションを見せたかった(あなたはという意味で、前のコミットに新しいを作成することアンドゥの変更をコミットするだけで何のように、git revertありません)。

明確にするために、これらの選択肢はコミットを元に戻すための最良の方法ではありません、Jefromiのソリューションがありますが、私はちょうどあなたにも同じことを達成するために、これらの他の方法を使用することができることを指摘したいですgit revert

代替案1:ハードリセットとソフトリセット

これは、GitのSHAハッシュによるコミットに戻すためのCharles Baileyのソリューションのごくわずかに変更されたバージョンですか?:

# Reset the index to the desired commit
git reset --hard <commit>

# Move the branch pointer back to the previous HEAD
git reset --soft [email protected]{1}

# Commit the changes
git commit -m "Revert to <commit>"

これは基本的に、ソフトリセットがインデックス/ステージング領域にステージングされた前のコミットの状態を残し、それをコミットできるという事実を使用して機能します。

代替案2:現在のツリーを削除し、新しいツリーに置き換えます

このソリューションは、古いコミットをチェックアウトして新しいコミットにするsvickのソリューションから来ています。

git rm -r .
git checkout <commit> .
git commit

代替案#1と同様に、これ<commit>は現在の作業コピーの状態を再現します。以降に追加されたファイルは削除されないため、git rm最初に行う必要がありgit checkoutます<commit>

57
Paul Walczewski 2016-02-29 22:40.

これは、前のコミットに戻る(そして、コミットされていない状態にして、好きなように処理する)ためのはるかに簡単な方法です。

git reset HEAD~1

したがって、コミットIDなどは必要ありません:)

57
david.t_92 2020-02-26 07:00.

最良の方法は次のとおりです。

git reset --hard <commidId> && git push --force

これにより、ブランチが特定のコミットにリセットされ、ローカルの場合と同じコミットでリモートサーバーがアップロードされます(これにより、特定のコミット後のコマンドが完全に制限されます)

--forceフラグを使用すると、選択したコミットの後に後続のすべてのコミットが削除され、それらを回復するオプションがないことに注意してください。

39
Shadow Man 2013-08-09 08:30.

特に古いコミットを元に戻してステージングするためのコマンド(コアGitの一部ではありませんが、git-extrasパッケージにあります)があります。

git back

manページによると、次のように使用することもできます。

# Remove the latest three commits
git back 3
38
sivi 2013-09-06 04:03.

すべての変更後、これらすべてのコマンドをプッシュするときは、次を使用する必要がある場合があります。

git push -f ...

そしてだけではありませんgit push

33
Nanhe Kumar 2017-04-07 02:20.

これらの最初のステップをすべて自分で完了して、Gitリポジトリにプッシュバックできます。

  1. git pull --allコマンドを使用して、Bitbucketからリポジトリの最新バージョンをプルします。

  2. -n 4ターミナルからでGitlogコマンドを実行します。の後の-n数は、ローカル履歴の最新のコミットから始まるログ内のコミットの数を決定します。

    $ git log -n 4
    
  3. git reset --hard HEAD~Nここで、Nはヘッドを取り戻したいコミットの数であり、リポジトリの履歴のヘッドをリセットします。次の例では、ヘッドはリポジトリ履歴の最後のコミットに1つのコミットに戻されます。

  4. を使用git push --forceして変更をGitリポジトリにプッシュし、変更を強制的にプッシュします。

Gitリポジトリを前のコミットにしたい場合:

git pull --all
git reset --hard HEAD~1
git push --force
30
Mohammed Irfan Tirupattur 2016-07-27 03:13.

最新のコミットに戻り、ローカルの変更をすべて無視します。

git reset --hard HEAD
29
tonythomas01 2014-02-27 02:52.

必要なコミットを選択し、それを確認してください

git show HEAD
git show HEAD~1
git show HEAD~2 

必要なコミットを取得するまで。HEADがそれを指すようにするには、

git reset --hard HEAD~1

またはgit reset --hard HEAD~2または何でも。

25
mike rodent 2015-03-20 07:33.

状況が緊急であり、プロジェクトがたとえば「my project」というディレクトリの下にあると仮定して、質問者が尋ねたことをすばやく汚い方法で実行したい場合:


クイックアンドダーティ:状況によっては、クイックアンドダーティは実際には非常に良い場合があります。ここでの私の解決策は、作業ディレクトリにあるファイルを、非常に巧妙で悪魔のように強力なgitコマンドを使用して、.git /ディレクトリの下に潜んでいるgitリポジトリの深さから引き上げられた/抽出されたファイルに不可逆的に置き換えることではありません。たくさんの。悲惨な状況に見えるかもしれないものを回復するためにそのような深海ダイビングをする必要はありません、そして十分な専門知識なしでそうしようとすると致命的であるとわかるかもしれません


  1. ディレクトリ全体をコピーして、「myproject--copy」のように別の名前を付けます。gitリポジトリ(「repo」)ファイルが「myproject」ディレクトリ(デフォルトの場所、「。git」というディレクトリの下)にあるとすると、作業ファイルとリポジトリファイルの両方がコピーされます。

  2. ディレクトリ「myproject」でこれを行います。

    .../my project $ git reset --hard [first-4-letters&numbers-of-commit's-SHA]
    

これにより、「myproject」の下のリポジトリの状態がコミットを行ったときの状態に戻ります(「commit」は作業ファイルのスナップショットを意味します)。それ以降のすべてのコミットは「myproject」の下で永久に失われますが、.../。gitの下のファイルを含め、すべてのファイルをコピーしたため、「myproject--copy」の下のリポジトリに引き続き存在します。 /。

次に、システムに2つのバージョンがあります...前のコミットから、関心のあるファイルなどを調べたり、コピーしたり、変更したりできます。復元されたコミットがどこにも行かなかったために新しい作業を決定した場合は、「myproject--copy」の下のファイルを完全に破棄できます...

この取得されたコミットが実際に作業を破棄せずにプロジェクトの状態を続行したい場合は、ディレクトリの名前を再度変更することです。取得されたコミットを含むプロジェクトを削除し(または一時的な名前を付け)、「 myproject-「コピー」ディレクトリを「myproject」に戻します。次に、ここで他の回答のいくつかを理解しようとし、おそらくかなり早く別のコミットを実行します。

Gitは華麗な創造ではありませんが、全く-1は、単に「その場でそれを拾う」することができます。また、それを説明しようとする人々があまりにも頻繁には、 [バージョン管理システム]他のVCSの予備知識を前提とし、あまりにも深く遠く掘り下げます早すぎて、「チェックアウト」に互換性のある用語を使用するなど、他の犯罪を犯します。初心者を混乱させるように計算されているように見えることもあります。

ストレスを解消するために、私の傷跡から学びましょう。Gitに関する本を読む必要があります。「Gitを使用したバージョン管理」をお勧めします。後でではなく早くそれを行います。そうした場合、Gitの複雑さの多くは、分岐してから再マージすることに起因することに注意してください。どの本でも、これらの部分をスキップできます。あなたの質問から、人々があなたを科学で盲目にするべき理由はありません

特に、たとえば、これが絶望的な状況であり、Gitの初心者である場合は特にそうです。

PS:もう1つの考え:Gitリポジトリを作業ファイルのあるディレクトリ以外のディレクトリに保持することは(現在)非常に簡単です。これは、上記の迅速で汚いソリューションを使用してGitリポジトリ全体をコピーする必要がないことを意味します。--separate-git-dir ここを使用してフライヤーによる回答を参照してください。ただし、注意が必要です。コピーしない「separate-directory」リポジトリがあり、ハードリセットを実行すると、絶対に必要な場合を除いて、リセットコミット後のすべてのバージョンが永久に失われます。リポジトリを定期的にバックアップします。できれば、他の場所の中でも特にクラウド(Googleドライブなど)にバックアップします。

「クラウドへのバックアップ」というこのテーマについて、次のステップは、GitHubまたは(私の見解では)GitLabで(もちろん無料で)アカウントを開くことです。その後、定期的にgit pushコマンドを実行して、クラウドリポジトリを「適切に」最新の状態にすることができます。しかし、繰り返しになりますが、これについて話すのは早すぎるかもしれません。

23
Point Networks 2016-05-06 01:43.

これは、最近のコミットに直接リセットするもう1つの方法です。

git stash
git stash clear

前回のコミット以降に行ったすべての変更を直接クリアします。

PS:少し問題があります。また、最近保存したstashの変更をすべて削除します。ほとんどの場合、どちらが問題ではないと思います。

22
Chris Moschini 2015-10-11 14:10.

偶発的な変更からコーダーのディレクトリを完全にクリーンアップするために、次のものを使用しました。

git add -A .
git reset --hard HEAD

ただ、git reset --hard HEAD修正を取り除くだろうが、それは「新しい」ファイルを取り除くことはありません。彼らの場合、彼らは誤って重要なフォルダをランダムな場所にドラッグし、それらのファイルはすべてGitによって新しいものとして扱われてreset --hardいたため、修正しませんでした。git add -A .事前に実行することで、それらすべてをgitで明示的に追跡し、リセットによって消去されます。

21
Vishnu Atrai 2015-07-28 22:35.

前のコミットからHEADへの変更を保持し、前のコミットに移動するには、次のようにします。

git reset <SHA>

HEADへの前回のコミットからの変更が不要で、すべての変更を破棄する場合は、次のようにします。

git reset --hard <SHA>
20
nevster 2015-02-05 15:28.

マスターで行ったコミット済みの変更をロールバックする方法を知りたいという質問に来る人もいるかもしれません。つまり、すべてを破棄して元の/マスターに戻る場合は、次のようにします。

git reset --hard origin/master

https://superuser.com/questions/273172/how-to-reset-master-to-origin-master

19
Sireesh Yarlagadda 2015-08-21 04:45.

Revertは、コミットをロールバックするコマンドです。

git revert <commit1> <commit2> 

サンプル:

git revert 2h3h23233

以下のようにHEADからレンジを取ることができます。ここで1は「最後のコミットを元に戻す」と言います。

git revert HEAD~1..HEAD

そしてします git push

16
maytham-ɯɐɥʇʎɐɯ 2018-01-09 04:15.

あぶない!ユーザーが誤って間違ったコミットを行った場合、このコマンドはコミット履歴を失う可能性があります。少し安全であるよりも、間違いを犯した場合に備えて、他の場所にgitの追加のバックアップを常に用意してください。:)

同様の問題が発生したため、以前のコミットに戻したいと思いました。私の場合、新しいコミットを維持することに興味がなかったので、を使用しましたHard

これは私がそれをした方法です:

git reset --hard CommitId && git clean -f

これはローカルリポジトリに戻り、使用後git push -fにリモートリポジトリを更新します。

git push -f
14
optimistanoop 2017-05-07 13:03.

目的のコミットにリセットしてみてください-

git reset <COMMIT_ID>

(COMMIT_IDの使用を確認するにはgit log

これにより、変更されたすべてのファイルが追加されていない状態にリセットされます。

これで、checkout追加されていないすべてのファイルを

git checkout .

チェックgit logして変更を確認するために。

更新

リポジトリに1つだけコミットしている場合は、試してください

git update-ref -d HEAD

13
George Ninan 2017-03-20 21:33.

コミットはリモートでプッシュされるため、削除する必要があります。あなたのブランチが開発中であり、それが原点を超えてプッシュされていると仮定しましょう。

最初に、開発元の場所から削除する必要があります。

git push origin :develop (note the colon)

次に、必要なステータスに開発する必要があります。コミットハッシュがEFGHIJKであると仮定します。

git reset --hard EFGHIJK

最後に、もう一度開発をプッシュします。

git push origin develop
13
Ângelo Polotto 2018-05-03 08:41.

GitKrakenでは、次のことができます。

  1. リセットするコミットを右クリックし、次を選択します。このコミットにリセット/ハード

  2. コミットをもう一度右クリックして、次を選択します。現在のブランチ名/プッシュ

  3. フォースプッシュをクリックします:

Obs。:ハードリセット後のコミット履歴はすべて失われ、このアクションは元に戻せないため、注意が必要です。あなたは自分が何をしているのかを確かめる必要があります。

12
Upul Doluweera 2015-07-02 01:35.

最後のコミットでエラーを修正したい場合は、git commit--amendコマンドを使用することをお勧めします。最後のコミットが参照によってポイントされていない場合、最後のコミットと同じ親でコミットを作成するため、これでうまくいきます。最後のコミットへの参照がない場合、それは単に破棄され、このコミットが最後のコミットになります。これは、コミットを元に戻さずにコミットを修正するための良い方法です。ただし、独自の制限があります。

Related questions

MORE COOL STUFF

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは、夫に会ったとき、典型的な交際のアドバイスに逆らいました。

マイケルシーンが非営利の俳優である理由

マイケルシーンが非営利の俳優である理由

マイケルシーンは非営利の俳優ですが、それは正確にはどういう意味ですか?

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

特徴的なスターのコリン・エッグレスフィールドは、RomaDrama Liveでのスリル満点のファンとの出会いについて料理しました!加えて、大会での彼のINSPIREプログラム。

「たどりつけば」をオンラインでストリーミングできない理由

「たどりつけば」をオンラインでストリーミングできない理由

ノーザンエクスポージャーが90年代の最も人気のある番組の1つになった理由を確認するには、Blu-rayまたはDVDプレーヤーをほこりで払う必要があります。

バイオニック読書はあなたをより速く読むことができますか?

バイオニック読書はあなたをより速く読むことができますか?

BionicReadingアプリの人気が爆発的に高まっています。しかし、それは本当にあなたを速読術にすることができますか?

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖は、世界で2番目に大きいボイリング湖です。そこにたどり着くまでのトレッキングは大変で長いですが、努力する価値は十分にあります。

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

サロンからのヘアトリミングや個人的な寄付は、油流出を吸収して環境を保護するのに役立つマットとして再利用できます。

ホワイトハウスの最も記憶に残る結婚式を見てください

ホワイトハウスの最も記憶に残る結婚式を見てください

過去200年以上の間にホワイトハウスで結婚したのはほんの数人です。彼らは誰でしたか、そしてそこで結婚式を獲得するために何が必要ですか?

驚くほど素晴らしいDropMixミュージックミキシングカードゲームは30ドルで驚くべき取引です

驚くほど素晴らしいDropMixミュージックミキシングカードゲームは30ドルで驚くべき取引です

DropMixはNFC対応のカードゲームで、基本的にはリミックスアーティストになります。現在、Amazonでは$ 30まで下がっており、これまでで最高の価格に匹敵します。ロックバンドで有名なHarmonixによって開発されたDropMixは、おそらく少し野心的すぎるように思われます。結局のところ、ほとんどの人は素晴らしいリズムを持っていませんが、ゲームは驚くほどうまく実行されます。

メアリーJ.ブライジがついにハリウッドウォークオブフェイムスターを獲得

メアリーJ.ブライジがついにハリウッドウォークオブフェイムスターを獲得

写真:APメアリーJ.ブライジは、間もなくハリウッドウォークオブフェイムのスターを獲得します。これは、メアリーJよりもハリウッドウォークオブフェイムのほうが正直なところ恩恵です。

MeltdownとSpectreの脆弱性についてこれまでに知っていることはすべて、簡単な方法で説明されています

MeltdownとSpectreの脆弱性についてこれまでに知っていることはすべて、簡単な方法で説明されています

画像:グラズ工科大学/ NataschaEiblがデザインしたロゴ。MeltdownとSpectreは、攻撃者がシステムメモリに保存されているあらゆる種類の情報にアクセスできるようにする2つの脆弱性に付けられた名前です。

彼のニューヨークの家から追い出されようとしている97歳の第二次世界大戦の獣医。メリーエフィングクリスマス

彼のニューヨークの家から追い出されようとしている97歳の第二次世界大戦の獣医。メリーエフィングクリスマス

日本人に襲われたときに真珠湾にいた97歳の第二次世界大戦のベテランが、ニューヨークのブルックリンから追い出されています。

Zendaya Wishes Boyfriend Tom Holland Happy Birthday with Cuddly Photo: He 'Makes Me the Happiest'

Zendaya Wishes Boyfriend Tom Holland Happy Birthday with Cuddly Photo: He 'Makes Me the Happiest'

Zendaya shared a sweet photo in honor of boyfriend Tom Holland's 26th birthday Wednesday

小さな女性:脳卒中を患った後に病院から解放されたアトランタのジューシーな赤ちゃん:「まだ癒し」

小さな女性:脳卒中を患った後に病院から解放されたアトランタのジューシーな赤ちゃん:「まだ癒し」

シーレン「Ms.JuicyBaby」ピアソンは、先月脳卒中で入院した後、「もう一度たくさんのことをする方法を学ばなければならない」ため、言語療法を受けていることを明らかにしました。

エマストーンは彼女のクリフサイドマリブビーチハウスを420万ドルでリストアップしています—中を見てください!

エマストーンは彼女のクリフサイドマリブビーチハウスを420万ドルでリストアップしています—中を見てください!

オスカー受賞者の世紀半ばの家には、3つのベッドルーム、2つのバス、オーシャンフロントの景色があります。

ジーニー・メイ・ジェンキンスは、母乳育児の経験の中で、彼女は「本当に、本当に落ち込んでいる」と言います

ジーニー・メイ・ジェンキンスは、母乳育児の経験の中で、彼女は「本当に、本当に落ち込んでいる」と言います

ジーニー・メイ・ジェンキンスは、生後4か月の娘、モナコに母乳育児をしていると語った。

投資ノート:Bioscout AU$300万シード

投資ノート:Bioscout AU$300万シード

Bioscoutは、農家を運転席に置くという使命を負っています。Artesian(GrainInnovate)やUniseedと並んで、最新のシードラウンドでチームを支援できることをうれしく思います。問題真菌症による重大な作物の損失は、農民にとって試練であることが証明されています。

リトルマーケットリサーチ1| 2022年のクイックグリンプス遠隔医療市場

リトルマーケットリサーチ1| 2022年のクイックグリンプス遠隔医療市場

遠隔医療は、パンデミック後の時代では新しいものではなく、時代遅れの分野でもありません。しかし、業界を詳しく見ると、需要と供給の強力な持続可能性と、米国で絶え間ない革命となる強力な潜在的成長曲線を示しています。

スタートアップ資金調達環境:タイのスタートアップエコシステムの次は何ですか?

スタートアップ資金調達環境:タイのスタートアップエコシステムの次は何ですか?

2021年は、世界的なベンチャーキャピタル(VC)の資金調達にとって記録的な年でした。DealStreetAsiaによると、東南アジアも例外ではなく、この地域では年間で記録的な25の新しいユニコーンが採掘されました。

ムーアの法則を超えて

ムーアの法則を超えて

計算に対する私たちの欲求とムーアの法則が提供できるものとの間には、指数関数的に増大するギャップがあります。私たちの文明は計算に基づいています—建築と想像力の現在の限界を超える技術を見つけなければなりません。

Language