2016-09-29 10 views
0

2つのブランチがあるとします。あるブランチが特定のコミットから開始して別のブランチを追跡し、そのブランチに新しいコミットがある場合、古いコミットが追跡ブランチにマージされないようにします。特定のコミットからgitブランチを追跡する

gitで実行できますか?私の問題は、新しいブランチで古いコミットをしたくないということですが、古いコミットの一部を除いて、別のブランチから自動的に新しいコミットを取得する必要があります。

答えて

0

ブランチ名は、コミットIDを格納するレコードです。

名前の下に特定のコミットIDを格納し、その後、別のブランチの名前のコミットIDを保存済みコミットIDと比較することをお勧めします。これはまさにブランチとタグが行うものです:コミットIDの名前です。

支店名とタグ名の間の唯一の本当の違いは、支店名がを移動するために設計されており、自動的に実際に移動されていることである 1は、そのブランチ「ON」であるとコミット作るとき:

をあなたはブランチbranch2にしているという意味branch2にここ
 o--o  <-- branch1 
    /
...--o--o--o  <-- HEAD -> branch2 
     ^
      | 
      \-------- tag: tagX 

HEADポイント:あなたが最近git checkout branch2やりました。タグが移動していないか

 o--o  <-- branch1 
    /
...--o--o--o--* <-- HEAD -> branch2 
     ^
      | 
      \-------- tag: tagX 

注:

は今、あなたは新しいは、グラフはなりコミット(の代わりにo*でこの1をマークしてみましょう)を作る場合。

タグ名ではなくブランチ名を使用すると、のままでもは移動しません。新しいコミットの前に巻き戻し、これを次のように描画しましょう:

 o--o  <-- branch1 
    /
...--o--o--o  <-- branchX, HEAD -> branch2 

ここで新しいコミットを行います。私たちは支店にいるのでbranch2はにはではなく、branch2だけが変更されます。 、

 o--o  <-- branch1 
    /
...--o--o--o  <-- branchX 
      \ 
      * <-- HEAD -> branch2 

注意をこのタグは - 私だけで少し異なるタグの矢印を引かれのように正確に同じグラフであること:だから、僕は分岐矢印に合わせて少し異なり、これを描きますタグの矢印がコミット自体に近いことを暗示します(タグは決して変更されないと考えられるので、となります)。

したがって、あなたがここにする必要があるすべては、あなたが覚えておきたいコミットの特定を指して、名前(支店名やタグ名)を作成します

git branch branchX <commit-ID> 

か:

git tag tagX <commit-ID> 

どちらを使用するか、タグ付けするか、または分岐する必要がありますか?それはあなたがそれを動かすかどうか、そして他の人々がそれをどのように共有したいのか、あるいはどのようにしてそれを共有するかによって異なります。タグは決して動かされることはなく、かなりグローバルなものです。リポジトリをクローン化する他の人は、タグ、タグのようになります。ブランチであり、グローバルではありません。リポジトリを複製する他の人がブランチを取得しますが、origin/*という名前ではなく、のブランチ名ではありません。

(名前を移動したくないだけでなく、グローバルにしたくない場合など) - 独自の名前空間を作成することができます。ブランチとタグは、あなたが独自の参照名空間を作成した場合、Gitはそれを使って作業する方法を知らないので、もっと仕事をしなければならないでしょう)

関連する問題