問題タブ [git-reset]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - 「git reset --hard」後に変更を元に戻す方法
私たちのブランチ dev はあまり安定していないことに気付き、いくつかの変更を元に戻してデバッグに取り組みました。
これにより、 dev の上に新しいコミットが追加されました。270329c
それ以来、別の人がいくつかの安全なコミットを dev に追加し、私は staged_dev をデバッグしていくつかのコミットを追加しました。270329c
dev から元に戻し、staged_dev の他のコミットを dev に追加するにはどうすればよいですか?
参照スタックオーバーフローの質問: Git の SHA ハッシュによるコミットに戻りますか?
git - マスターへのブランチプッシュを元に戻す方法
さて、私は GitHub にフォークされたレポを持っています。アップストリームのレポは、フォークしてから更新されていません。昨日、数か月前にレポをフォークする前に作成された最後のアップストリーム コミットに基づいてブランチを作成しました。
ブランチで不適切なコミットを行ったので、ブランチのローカル インスタンスで を使用して元に戻そうとしましたgit push -f origin HEAD^:master
が、ご覧master
のとおり、ブランチの名前を変更するのを忘れていました。そのため、これまでにマスターで行ったすべてを上書きすることになりました。
私の質問は、マスターをこの特定のプッシュの前の状態に戻すことができるように、この混乱を元に戻す方法はありますか?
私は TortoiseGit と TortoiseSVN をよく使用しますが、Git のどのコンポーネントでも以前にマスターで行ったことの残り物を見ることはできませんが、SVN トランクの履歴ログで以前のコミットをすべて見ることができます。以前の状態のマスターのクリーンなローカル インスタンスがありません。
git reset --hard <last good commit hash>
またはのようなものを試しましgit push -f origin <last good commit hash>:master
たが、そのようなハッシュを持つコミットは存在しないと言われています。ブラウザーの履歴から GitHub の以前のすべてのコミットに引き続きアクセスできます。
下流には何もないので、その心配はありません。
任意のヒント?
git - 「git merge --no-commit --no-ff」後の「git reset」の方法
私はgitの初心者です。私は、古いファイルの削除や新しいファイルの追加など、多くのコードの移動を伴うブランチに取り組んでいました。したがって、実際にマージする前に git merge の予行演習を行うことにしました。
私は走っgit merge --no-commit --no-ff <myBranchName>
た。これを実行した後、いくつかの競合が表示されました。次に、git status を実行したところ、結果は次のようになりました。
git add
次に、 (予行演習のために発生した)元に戻すためにgit merge
、 を実行しましgit reset HEAD
た。しかし後で、マスター ブランチがマージ前にあった段階 (つまり、マスターにコミットされたものとまったく同じ) に戻るためにgit reset --hard HEAD
、ハード リセットを実行した後に実行する必要があることに気付きましgit status
た。次のように表示されます。 :
上記のファイル F1、F2、F3、および upgrade.php は、私が作業していたブランチに追加されました。git reset --hard HEAD
マージしようとしていたブランチに関連するものをすべてブランチに忘れさせることを望んでいmaster
ました(ドライラン)。
これは可能なことですか?コンセプトに欠けているものはありますか?そして、ファイルを手動で削除する唯一のオプションが残っていますか? 私がもっと理解できるようにするための助けは素晴らしいでしょう!ありがとう!
git - git リポジトリをどの程度ホースで接続したか?
私のプロジェクトには、サーバー上に裸のレポがセットアップされています。私は現在ブランチに0.9/develop
います。0.9/develop
別の開発者が取り組んでいたブランチとマージしました。彼の変更を完全に消去するよりも、彼のコードを修正する方がはるかに手間がかかることが判明しました。残念ながら、git push origin 0.9/develop
マージをコミットした後に既に実行しており、それらの変更を開発およびステージングサーバーにプルしました(はい、私は愚かです)。
私は SO で幾分似たような質問をたくさんしてきましたが、どれも私の正確なケースをカバーしていないようです。これは特に役に立ちました: Git リポジトリを以前のコミットに戻すには?
その質問からの情報を使用して、プロジェクトの最後のコミットを首尾よく消去することができました。具体的にはgit reset --hard f6c84a0
、他の開発者の n00bery を自分の詩にマージする直前に、ローカル リポジトリをコミットにリセットすることに成功しました。
わかりました。あとは、裸のレポを修正するだけです。だから私は試しgit push --force origin 0.9/develop
ました。残念ながら、サーバーが送り返した特定のメッセージを失いましたが、それは「成功」に沿ったものであり、リモート リポジトリが更新されて f6c84a0 がコミットされたことを示していました。
サーバーに SSH 接続してからステージング環境に移動して を実行しようとすると、次git pull
のような応答がありました。
ただし、git log
ステージング サーバーから実行したとき、マージからのすべてのコミットはまだ0.9/develop
ブランチにあります。のようないくつかのことを試しましたgit pull --force
が、悪いコミットをなくすことはできませんでした。
じゃ、いいよ。猫の皮をむく方法はたくさんあります。私はステージング サーバーを完全に消去し、新しいサーバーをgit clone --recursive --no-hardlinks example.git stage.example.com
作成して、いくつかのサーバー メンテナンス作業を行う必要なセットアップ スクリプトを実行しました。
今、私は自分に戻ることができません0.9/develop branch
。以前は単純に を実行git checkout 0.9/develop
していましたが、今それを実行すると、次のようになります。
待って…何?0.9/develop
新しいブランチではありません。この質問からの情報を操作する: Git ですべてのリモート ブランチを複製する方法は? 私は agit branch -a
を実行し、次の結果を取得しました。
その後、試してみgit checkout origin/0.9/develop
ましたが、次のメッセージが表示されました。
良いニュースは、ステージング サーバーが適切なコード ベースを持つようになったことですが、私は切り離された HEAD 状態にあります。私はおそらくここで非常に些細なことを見逃していることを認識していますが、それは確かに私の金曜日の夜を台無しにしています. ステージング サーバーの HEAD が の HEAD を指すようにするにはどうすればよい0.9/develop
ですか? また、開発環境でも同じことをしたいのですが、git
サーバー全体を消去して最初からやり直すよりも、適切な方法で実行したいと考えています。私はそれを行うことができますか、それともレポからサーバーを再構築することによってブルートフォースする必要がありますか? みんな助けてくれてありがとう!
merge - Git リセットにより、「まだマージしようとしています」と表示されます
私はこれをさまざまな方法でグーグルで検索しましたが、他の誰かがそれについて話しているのを見つけることができません (少なくとも私が理解している限り)。
私のオフィスのPCで、私が抱えていた問題の解決策を見つけようとしていました(そのため、リモートのgitリポジトリよりも先に進んでいましたが、コミットしていませんでした)。その夜、自宅で解決策を見つけ、自宅の PC からリモート レポジトリにプッシュしました。
今、私は仕事に戻っており、リモートに一致するようにオフィスのPCのローカルレポをリセットしたいと考えていました(そして、すべてのローカル変更を破棄しました)。
私は走った:
私が得た:
これは何を意味するのでしょうか?
' Still trying to merge
' は、何らかの形で完了しなかったことを示しているようですが、その方法がわかりません (そして、git ドキュメントで明確な答えを見つけることができませんでした)。
git - Git、オリジン/マスターをコミットにリセットする方法は?
次のコマンドで、ローカル マスターをコミットにリセットします。
$ git status
コマンドを入力すると、ターミナルは次のように言います:
origin/header もリセットしたいので、origin/master にチェックアウトします。
次のコマンドでヘッダーをリセットします。
次に、コミットをオリジン/ヘッダーに追加しようとしましたが、成功しませんでした。
最後に、ローカル マスターにチェックアウトします。
ローカルとオリジンは同じ方向にあるはずですが、ご覧のとおり、gitは私のローカル/マスターがオリジン/マスターより7コミット遅れていると言っています。
この問題を解決するにはどうすればよいですか? 私が探しているのは、ローカル/マスターのヘッドとオリジン/マスターが同じコミットを指していることです。次の画像は、私がしたことを示しています。ありがとう。
git - アップストリームにプッシュされたマスターへのコミットを破棄します
新しいプロジェクトでは、git を初めて使用するチームで、masterに直接コミットすることから始めました。誤って master でいくつかの不適切なコミットを行い、それが中央リポジトリにプッシュされ、チーム全体によってプルダウンされました。
私たちの間違いに気づき、悪いコミットの前にコミットから機能ブランチを作成しました。私たちのチームは現在、機能ブランチに喜んで取り組んでいます。
悪いコミットを再導入することなく、マスターブランチに機能ブランチからの正確なコードを含めたいと考えています。
このmerge theirs
オプションは、新しいバージョンの git から削除されているようです。それでは、悪いコミットを破棄して、マスターを機能ブランチとまったく同じように見せる最善の方法は何でしょうか?
- マージ?
- リセットしますか?
- リベース?