問題タブ [git-checkout]
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 checkout の動作について混乱しています。git checkoutのドキュメントには次のように書かれています。
- マージ
ブランチを切り替えるときに、現在のブランチと切り替え先のブランチとの間で異なる 1 つ以上のファイルにローカルで変更を加えている場合、コマンドは変更をコンテキストに保持するためにブランチの切り替えを拒否します。ただし、このオプションを使用すると、現在のブランチ、作業ツリーの内容、および新しいブランチの間で 3 方向のマージが行われ、新しいブランチになります。
しかし、太字部分で述べたように動作していない小さなテストを行いました。あれは:
- git リポジトリを作成します
- いくつかのコンテンツを含むディレクトリとファイルを作成し、master ブランチにコミットします。
- 別のブランチ「testbranch」を作成します
- マスターのファイルの内容を変更します。しかし、コミットしませんでした。
- 「テストブランチ」に切り替えました。
- これで、master ブランチからの変更済みおよびコミットされていない変更が testbranch に送られます!
ローカルに変更があり、ブランチに切り替えたい場合、失敗するはずではありませんでしたか?
以下は、この動作を再現するためのコマンドのリストです。
誰でもこれを説明できますか?
以下は私のgitバージョンの出力です:
git - チェックアウトを使用せずにGitブランチをマージ、更新、プル
私は、AとBの2つのブランチを持つプロジェクトに取り組んでいます。通常、ブランチAに取り組んでおり、ブランチBからのものをマージします。マージには、通常、次のようにします。
ただし、ブランチAと最初にマージせずにブランチをチェックアウトすることがあるため、ブランチBのローカルコピーも保持したいと思います。これには、次のようにします。
ブランチを前後に切り替えることなく、1つのコマンドで上記を実行する方法はありますか?そのために使用する必要がありgit update-refますか?どのように?
git - Git: 最後のコミット以降の変更を新しいブランチに移動する方法
私は「A」と呼べるブランチに取り組んでいます。最後にコミットしてから追加したコードは、「A」ではなく、特定の (実験的な) ブランチに配置する必要があることに気付きました。変更を新しいブランチにコミットし、ブランチ "A" を最後にコミットしたときのままにしておくにはどうすればよいですか?
git - Git:リモートオリジンマスターから単一のファイルを更新/チェックアウトする方法は?
シナリオ:
- ローカルで単一のファイルにいくつかの変更を加えて実行し
git add、git commitgit push - ファイルはリモートのオリジン マスター リポジトリにプッシュされます
- そのリモートリポジトリからの「remote_cache」メソッドを使用してCapistrano経由でデプロイされた別のローカルリポジトリがあります
- ここで、アプリケーション全体をデプロイするのではなく、その単一のファイルを更新/チェックアウトするだけです。
これは何とかgitで可能ですか?うまくいくものを見つけることも、理解することもできませんでした。SVNを使用して、私がやったばかりsvn up fileで出来上がりです。
git - 現在使用している git タグを表示しますか?
現在チェックアウトされているタグを見つけるのに苦労しています。
私がする時:
自分がどのタグにいるのかわからないようです。ログのみ:
どのタグがチェックアウトされているかを調べることはできますか? 上記の例では、これは になりますtag1。
git - Gitで最新バージョンに戻す方法は?
私は最近SVNからGitに移動しましたが、何かについて少し混乱しています。以前のバージョンのスクリプトをデバッガーで実行する必要があったので、git checkout <previous version hash>必要なことを実行しました。
今度は最新バージョンに戻したいのですが、そのハッシュがわかりません。入力git logしても表示されません。
これどうやってするの?また、ハッシュを入力するよりも簡単にバージョンを変更する方法はありますか?「2つのバージョンに戻る」や「最新のものに戻る」などです。
git - 「git リセット」と「git チェックアウト」の違いは何ですか?
どちらもプロジェクトを特定のコミットに戻すという意味で、私は常に と を同じものと考えてきましgit resetた。git checkoutただし、冗長になるため、まったく同じにすることはできないと思います。両者の実際の違いは何ですか?svn cosvnはコミットを元に戻すだけなので、少し混乱しています。
追加した
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 checkout-index: ファイルを作成できません
私がやろうとしているのは、Windows での git clone ですが、親リポジトリは UNIX マシンに存在します。
UNIX から Windows へのクローンを取得するために ssh を使用してクローンを作成していますが、この奇妙なエラーが発生します。
これは、git クローンのチェックアウト段階で発生します。
誰でも私を助けることができますか?
git - git checkout HEAD~2 (例) 最後のコミットで追加された場合、追跡されていないファイルを削除します
新しいファイル (以前は追跡されていないファイルとして存在していた) を追加してコミットします。このコミットの前にチェックアウトすると、これらのファイルは削除されます。彼らはすべきではありません。
.gitignore がこれらのファイルを一覧表示するかどうかは問題ではありません (これには git add -f ... を実行する必要があります)。
git - GIT:ステージングされていないデータをチェックアウトしたり失ったりすることなく、新しい/ダーティ/開発ブランチにいる間に古い/安全なブランチに変更をコミットします
実験的なものの開発を始める前に、新しいブランチを作成しました。普段は忘れてしまいますが(問題ありません)、今は事前にやっていました。
それ以来、私は3つのファイルを更新しました。
- 2つ目は、安全なブランチにコミットしたくない実験的な変更のみです。
- 1では、安全なブランチにコミットしたい安全な(マイナーな)変更のみです。これらの最後の変更を新しいブランチにもコミットすることに問題はありません(ただし、そうではありません)。
私の(ダーティな)作業ディレクトリから古い安全なブランチへのいくつかのステージングされていない、コミットされていない変更を(迅速に)コミットすることは可能ですか?
私が考えることができる唯一のことは、ブランチを切り替えて(チェックアウトなしで)、1つのファイルで変更をコミットして元に戻すことですが、ダーティブランチに切り替えたときに変更がどうなるかわかりません(まだそこにありますか?または、コミットのために「消えた」のでしょうか?)...
GITにはこれに美しいものがあると思いますが、GITにはたくさんあるので、まったく同じものを見つけることはできません。
(私は助けのためにこの「マニュアル」を使用してきましたが 、同じものがそこにあるかどうかはわかりません。もしそうなら(そしてあなたがそれをスキャンしても構わないと思っているなら)、私に知らせてください、それで私は次に知っていますよく見る時間です。)
ありがとう!今のところ、「後で安全なブランチにコミットするために」変更を加えた紙を手元に置いておきます。

