問題タブ [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 リセット」と「git チェックアウト」の違いは何ですか?
どちらもプロジェクトを特定のコミットに戻すという意味で、私は常に と を同じものと考えてきましgit reset
た。git checkout
ただし、冗長になるため、まったく同じにすることはできないと思います。両者の実際の違いは何ですか?svn co
svnはコミットを元に戻すだけなので、少し混乱しています。
追加した
VonC と Charles は と の違いgit reset
をgit checkout
とてもよく説明してくれました。私の現在の理解では、git reset
すべての変更を特定のコミットに戻しますが、git checkout
多かれ少なかれブランチの準備をします。この理解を深めるには、次の 2 つの図が非常に役立ちます。
追加 3
http://think-like-a-git.net/sections/rebase-from-the-ground-up/using-git-cherry-pick-to-simulate-git-rebase.htmlから、チェックアウトとリセットをエミュレートできますリベース。
git - git を使用してマスターからブランチにコミットを移動する
Git を効果的に使用する方法を学習しようとしていますが、次のケースをどのように解決する必要があるか (良い習慣/悪い習慣?) を考えています。
master に次の一連のコミットがあるとします。
- 初期コミット
- コミット 1
- コミット 2
- コミット 3
その後、最後の 2 つのコミットで行われたことが完全に間違っていることに気付き、コミット 1 からやり直す必要があります。質問:
- どうすればいいですか?
- コミット 2 と 3 を別のブランチに移動して、将来の参照用に保持し (結局のところそれほど悪くはなかったとします)、マスターでコミット 1 から作業を続けることはできますか?
git - 現在サブディレクトリの下にある場合、GIT でファイルをアンステージするためにフル パスが必要ですか?
リポジトリ: mergetest
$pwd
/gitvobs/mergetest/アップル
$git ステータス
ブランチ br1 で
変更されたが更新されていない:
(コミットされる内容を更新するには、「git add ...」を使用します)
(「git checkout -- ...」を使用して、作業ディレクトリの変更を破棄します)
$git チェックアウト内部
エラー: pathspec 'inside' は、git が認識しているファイルと一致しませんでした。
$git checkout apple/insideは完璧に動作します
毎回、サブディレクトリ内にいるときに変更をアンステージするためにファイルのフルパスを指定する必要がありますか?
これは add には当てはまりません (どこでも 'git add file-name' を使用してファイルを追加できます)
これは GIT の動作ですか、それとも他のバージョンの GIT で変更されていますか?
gitバージョン1.6.6を使用しています
ありがとう
git - Gitでローカルコミットを破棄するには?
私は何かに取り組んでいましたが、完全に失敗したと判断しました...一部をコミットした後。そこで、次のシーケンスを試しました。
その時点で私はメッセージを受け取りました
ローカル ディレクトリを消去してすべてを再ダウンロードすることなく、ローカル コミットを破棄したい。どうすればそれを達成できますか?
git - 誰かがリベースまたはリセットを発行済みブランチにプッシュした後、どうすれば回復/再同期できますか?
公開された作品を決してリベースしてはならない、危険だ、などと聞いたことはありますが、リベースが公開された場合の状況に対処する方法について投稿されたレシピを見たことがありません。
これは、リポジトリが既知の (できれば少数の) グループによってのみクローンされている場合にのみ実現可能であることに注意してください。フェッチ(!)。
私が見た明らかな解決策の 1 つは、ローカル コミットがなく、foo
リベースされた場合に機能します。
これにより、ローカルの状態がfoo
破棄され、リモート リポジトリの履歴が優先されます。
しかし、そのブランチで大幅なローカル変更をコミットした場合、どのように状況に対処すればよいでしょうか?
git - Gitリポジトリを以前のコミットに戻すにはどうすればよいですか?
現在の状態から特定のコミットで作成されたスナップショットに戻すにはどうすればよいですか?
git log
すると、次の出力が得られます。
11月3日からコミットに戻すにはどうすればよいですか?つまりコミットし0d1d7fc
ますか?
git - Gitを使用してファイルを特定のコミットにリセットすることはできません
最新のコミットにあるものに戻したい変更済みファイルがありますが、常に変更済みとしてマークされている「スタック」しています。
次に試してみます:
ただし、gitstatusの出力は同じです。次に試してみます:
そして、gitstatusの出力はまだ同じです。
そのファイルの想定される変更をどのように取り除くことができるかについてのアイデアはありますか?
git - git での最後のコミット後にすべての変更をリセットする
追加されたファイルの削除、変更されたファイルのリセット、削除されたファイルの再追加など、最後のコミット後にディレクトリに加えられたすべての変更を元に戻すにはどうすればよいですか?
git - 「git add」を元に戻す」?
コマンド「git add dir」を使用して誤ってファイルを追加しました。「git commit」はまだ実行していません。このディレクトリとその中に含まれるすべてのものをコミットから削除する方法はありますか?
試してみgit reset dir
ましたが、うまくいきませんでした。どうやらgit reset file
それを元に戻す方法です。しかし、私には非常に多くのファイルがあり、時間がほとんどありません。
git - gitで中間マージを削除するには?
中間マージを削除し (スカッシュではなく削除)、最後の 2 つのコミットを新しいブランチに移動したいと考えています。
これは私の現在git log --graph
です:
私はこれで終わりたい:
git rebase -i
ブランチ tade とのマージを削除してgit branch newone
からgit reset --hard HEAD^2
、最後の 2 つのコミットを新しいブランチに移動するために使用することを考えました。ただし、リベースを実行すると、マスターにマージされた tade ブランチからのすべてのコミットが表示され、| それらを削除することに消極的でした。
より良い方法はありますか、それとも先に進むべきですか?
編集:意図した状態グラフを更新して、より明確にしました。2 つの新しいコミット (aaaaaaa
とbbbbbbb
) は、状態をもう少しよく説明するためだけのものです (願っています)。