试图了解Git Branches

时间:2016-12-03 13:13:16

标签: git github git-branch branching-and-merging

我从Git开始,我不完全了解分支机构的工作原理。 我开始了一个基础项目,我做了以下工作:

  1. 从' 主人'开始本地分支,创建2个文件: 1.txt 2.txt 。添加这些文件。提交和推送。 => origin / master现在有这两个文件。
  2. 创建一个正在进行的工作分支(wip)来自&local; / master = master / master' => wip_12_pushed(应该有文件1和2)
  3. 仍然在本地主人,再创建两个文件(3,4))但甚至不添加它们。
  4. 从本地/主人'创建分支机构=> wip_34_not_added (我想这应该只有文件1,2 ......因为还没有添加3,4)
  5. 在本地版主中,再创建两个文件(5,6),添加它们,提交它们并推送它们
  6. 从本地/主人' =>创建分支 wip_files_56_pushed (所以这应该推文件1,2,5,6)
  7. 在本地主人中,再创建两个文件(7,8),添加它们,提交它们但不要推它们
  8. 从本地/主人=>创建本地分支 wip_78_committed_only (所以这应该有文件1,2,5,6(全部被推送),不确定5,6。它们是否应该像新的分支一样出现?)
  9. 我必须要理解的问题是,当我切换到那些不同的分支时,我真的看不到我的Windows命令行有什么区别?甚至去我的Windows文件夹,所有文件仍然存在,所以我怎么知道哪个文件属于哪个分支?

    更重要的是,我切换到分支' wip_56_pushed' ,这是在对文件7和8执行任何操作之前创建的。然后我从该分支执行了git push --set-upstream origin wip_56_pushed 不知何故,文件7和8 只处于本地/主人的提交状态,并且' wip78_committed' 也被推入了远程起源/主人?我期待这个' wip_56_pushed'分支机构不知道新文件?

2 个答案:

答案 0 :(得分:0)

git push --set-upstream origin wip_56_pushed不会将wip_56_pushed推送到origin/master,而是推送到origin/wip_56_pushed。当您之前将文件7和8添加到master并且可能推送它时,它们当然存在于origin/master中。如果您想将本地wip_56_pushed推送到origin/master,请执行git push --set-upstream origin wip_56_pushed:master

关于哪些文件属于哪些分支,这很简单。如果您已签出分支X,则所有未跟踪的文件(git status)都是您已签出的分支的一部分。

答案 1 :(得分:0)

您是如何从一个分支切换到另一个分支的?你用了很多次推..这个时候可能不需要,但是没有提到结账甚至单次,主要用于在分支之间切换..你可以分享以下输出

1)git reflog

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

3)git ls-tree --name-only < branch name >(分享每个分支的结果)