2017-05-09 8 views
0

は、私が追加され、以下のファイルをコミットしてタグを作成しました、ここでも「TAGv1」特定のタグの変更のみをチェックアウトする方法はありますか?私が言うとき

b.txt ---> TAGv1 --> commit-id-1 
a.txt 

とさせて頂きます、私はGitのチェックアウト「、

d.txt ---> TAGv2 --> commit-id-2 
c.txt 

次のファイルを追加してコミットTAGv2 'これは、期待される4つのファイル(a、b、c、d)すべてをチェックアウトする

しかし、' TAGv2 'を使用して' c.txtとd.txt 'を'チェックアウト 'することは可能ですか?

これはリアルタイムでは当てはまりません。しかし、そのようなオプション/機能のみコミット-ID-2の変化を取得するにはGIT

答えて

0

に存在するかどうかを見てみたかったです。 git cherry-pick commit-id-2を使用します。

+0

例を投稿してください'HEAD of commit-id-2'の場合 –

+0

@SathishKumar、あなたのSHA番号(あなたのコミットID-2でなければなりません)を意味します。例えばgit cherry-pick c90fd66です。 – bqiao

0

あなたのダイアグラムは私には意味をなさないので、あなたが意図するものは本当にわかりません。 Gitでは、タグ名はコミットハッシュの名前に過ぎないことに注意してください。これは、タグ名と支店名を作るほとんど同じこと:支店名がコミットハッシュにも名前です。タグ名と支店名の主な違いは、支店名は、時間やタグ名の上にその基礎となるハッシュIDを変更-to「移動」にをことを意味することがあり、このように移動することになってではありません。実際には、支店名はそれほど強くおgit checkout <branch-name>を使用して、その後のgit commitコマンド際Gitは、自動的にそれを移動することを移動するためのものです。


すべてのことを考えて、特定のファイルを特定のコミットから検査または抽出する方法はいくつかあります。たとえば、次のようにします。

  • deadcabをコミットするポイント。
  • タグ名v1.3コミットするポイント1c0ffee
  • fadbeadをコミットには名前がありませんが、あなたはあなたのgit log歴史の中でそれを参照してください。あなたは、ファイルsandwichを見たい

は別名v1.31c0ffeeコミット:

git show v1.3:sandwich 
git show 1c0ffee:sandwich 

両方これを行います。

あなたは枝masterに取得したいと思います:

git checkout master 

はこれを行います。

git checkout fadbead -- cucumber 
git commit 

git checkoutステップは、と、ややgit showコマンドのようなものです。この新しいへmasterマップをコミットするように今、あなたは、fadbeadからファイルcucumberのバージョンを抽出し、新しいmasterにコミットしたいと思います2つの違い:

  • それは作業ツリーにチェックアウトしたファイルを書き込みます。これは、ファイルcucumberの作業ツリーバージョンが、ファイルcucumberfadbeadバージョンと一致するようになりました。
  • チェックアウトしたファイルをインデックスに書き込みます。これは、上記のgit commitが更新されたファイルを、git addに実行したかのように使用していることを意味します。

今新しいへmasterポイントがコミットすることを、あなたはあなたの作業ツリー内のファイルcucumberはすなわち、前回masterコミット、バックそれはdeadcabにあった方法を設定することにしたい決めます。今回はこのようなことはしません。git add -ed。あなたは使用することができます。

git show deadcab:cucumber > cucumber 

か:

git show master~1:cucumber > cucumber 

を次のコミットのためにそれをステージングすることなく、インデックス(すなわち、それを書いせずに戻ってあなたの仕事の木、に以前のバージョンを取得します)。これとgit checkout commit -- pathメソッドの主な相違点は、git checkoutバージョンがそれをインデックスに書き込みます。

(だけでなく、二次違いがあります:あなたは、ファイルに適用するラインや汚れフィルター属性の終わりを持っている場合git show方法はありませんが、git checkout方法は、それらを適用する)

関連する問題