2016-12-03 11 views
0

私はGitを使い始めています。ブランチの仕組みを完全に理解していません。 は、私は基本的なプロジェクトを開始し、私は次のようでした:1.TXTと2.txt:「マスターの現地支店、中Gitブランチを理解しようとしています

  1. 開始は2つのファイルを作成します。これらのファイルを追加します。コミットとプッシュ。 => origin/masterに2つのファイルがあります。
  2. は、=>はwip_12_pushedローカルマスタでまだ
  3. (それはファイル1 & 2を持つべきである)のローカル/マスター=ヘッド/マスター」から進捗ブランチ(WIP)で作品を作る3(2つののファイルを作成します4))でもは追加されません。
  4. 作成し、「ローカル/マスタは」=>は、ローカルマスタに(私はこれはまだ3,4が追加されていないとしてだけ... 1,2をファイル持っている必要がありますね)
  5. をwip_34_not_addedからブランチを作成さらに2つのファイル(5,6)を追加し、コミットしてを押します。
  6. 、 'ローカル/マスター' =>は、ローカルマスタに(そう、これは1,2,5,6-が押されたファイルを持っている必要があります)
  7. をwip_files_56_pushedからブランチを作成し、より多くの2つのファイル(7,8)を作成それらを追加してコミットしますが、コミットしないでください。
  8. ローカル/マスター=>からローカルブランチを作成してください。wip_78_committed_only(これはファイル1,2,5,6(すべてプッシュされています) 6.コミットされた新しいブランチにも表示する必要がありますか?)

問題は、理解しなければならないのは、私がそれらの異なるブランチに切り替えるとき、私は実際にウィンドウのコマンドラインに違いがないのですか?私のwindowsフォルダに行っても、すべてのファイルはまだそこにあるので、どのファイルがどのブランチに属しているかを知るにはどうすればいいですか?

はさらに、I は「wip_56_pushed」私は、何とかそのブランチからgit push --set-upstream origin wip_56_pushedをしたファイル7と8で何かを行う前に作成されたを、分岐に切り替えファイル7と状態にあった8ローカル/マスタだけのコミットと 'wip78_committed' もリモートのorigin/masterにプッシュされましたか?私はこの 'wip_56_pushed'ブランチが新しいファイルについて全く知らないことを期待していましたか?

+0

発行したコマンドを正確に入力してください。 – Vampire

+0

私は 'git push -set-upstream origin wip_56_pushed'コマンドだけを使用しました。他のすべての操作は、Windows UIのTortoiseGitを使用して行われました。基本的には、どこのファイルがどのブランチに属しているかを知ることはできません(すべてが同じWindowsフォルダにあります)。そして、なぜ私がブランチ 'wip_56_pushed'を私の起源/マスターの上にあるコマンドで受け取ったファイル7と8(これはコミットされたが他のブランチでのみ)のコマンドで押したのか分かりません。 – mickael

+0

ああ、私は今あなたの問題を知っていると思います。 – Vampire

答えて

0

git push --set-upstream origin wip_56_pushedwip_56_pushedorigin/masterではなく、origin/wip_56_pushedにプッシュしません。前にマスターにファイル7と8を追加してプッシュしたので、それらはもちろんorigin/masterにあります。あなたのローカルwip_56_pushedorigin/masterにプッシュしたい場合は、git push --set-upstream origin wip_56_pushed:masterを実行してください。

どのファイルがどのブランチに属しているかは簡単です。ブランチXがチェックアウトされている場合は、追跡されていないすべてのファイル(git status)は、チェックアウトしたブランチの一部です。

+0

ありがとう、もう少し実践しています。 2つの疑問点:1 - 異なるブランチ用に保存されているローカルファイルはどこにあるのですか(異なる場合があります)? 2私は起源/マスターを維持し、新しい起源/ 78_branchを作成しました(このブランチでは、私は2つの新しいファイル-7,8をプッシュしました)。私が今ローカル/マスターにいる場合、どのようにしてorigin/78_branchからの変更を引き出してマージできますか?私は 'git merge origin/78_branch master'をやっていて、すでに最新の状態になっています(しかし、私は新しいファイル7,8を手に入れていません)。もし私が 'git pull origin 78_branch'をすれば、私はすでに増強しています。ブランチ→FETCH_HEAD.But新しいファイルはありません – mickael

+0

** 1 ** '.git'の中にGitはファイルのすべての差分を' objects'に非常に効率的に格納します。これはVCSの意味であり、すべてのブランチのすべてのファイルがすぐにそこに存在するかどうかはあまり意味がありません。 ;-) ** 2 **あなたの状況やレポを再現するためのコマンドなしでは答えにくい。特に前に言ったように、あなたはすでにマスターに7と8を加えました。 – Vampire

+0

1.ありがとう、ありがとう。 2 - 最初の説明の後、最初から新しいプロジェクトを始めました。私はちょうどマスターを作成し、いくつかのファイル(1〜4)を追加してそこからブランチを作成し、新しいブランチ(5〜8)にさらにファイルを追加して、それらのファイルをすべて新しいリモートブランチ(78_remote)。そして今、ローカルに、元のマスター(ファイル1〜4)をチェックアウトしました。私がしようとしているのは、origin/78_remoteをlocal/masterとマージして新しいファイル(5-8)を取得することですが、私がしているコマンドはlocal/masterが最新であるということです。ファイルがありません... – mickael

0

どのブランチから別のブランチに切り替えるのですか?あなたは何度もプッシュ..これは、この時点では必要ではないが、ブランチを切り替えるために主に使用され、チェックアウト1つでも時間を、言及しないかもしれない..あなたは

1を次の出力を共有することができます)git reflog

2)git ls-tree --name-only master

3)git ls-tree --name-only < branch name >(各支店の結果を共有)

+0

私はプッシュを行うために当時の正しい枝にいました。私は亀のフロントエンドを介してそれらを切り替えていましたが、それはボンネットの下で 'git branch checkout'をやっています。私が合併しようとしていたときに、いくつかのブランチに欠けていた問題がまだ残っていましたが、今のところ私はそれを完全に理解するまで多くのブランチを作成しようとしていません。 – mickael

+0

oh..ok、2リモートとローカルの違いを取得するために 'git rev-list remote_name/master^$(git rev-list master --all)'を使ってください。 'git branch -r'の名前 – Girish

+0

次は、私が奇妙な問題を見て比較するメモを取っておきます。 – mickael

関連する問題