获取后远程分支到底指向哪里?

时间:2015-06-18 14:30:57

标签: git github

从下面的代码(来源:Merge two Git repositories without breaking file history)中,我无法直观地了解old_a / master和old_b / master在流程的每个步骤中指向的位置。

# Assume the current directory is where we want the new repository to be created
# Create the new repository
git init

# Before we do a merge, we have to have an initial commit, so we'll make a dummy commit
dir > deleteme.txt
git add .
git commit -m "Initial dummy commit"

# Add a remote for and fetch the old repo
git remote add -f old_a <OldA repo URL>

# Merge the files from old_a/master into new/master
git merge old_a/master

# Clean up our dummy file because we don't need it any more
git rm .\deleteme.txt
git commit -m "Clean up initial file"

# Move the old_a repo files and folders into a subdirectory so they don't collide with the other repo coming later
mkdir old_a
dir -exclude old_a | %{git mv $_.Name old_a}

# Commit the move
git commit -m "Move old_a files into subdir"

# Do the same thing for old_b
git remote add -f old_b <OldB repo URL>
git merge old_b/master
mkdir old_b
dir –exclude old_a,old_b | %{git mv $_.Name old_b}
git commit -m "Move old_b files into subdir"

我的问题: 1)有人可以绘制(图表w /指针)在流程的每一步中所有现有指针会发生什么? 2)如果您在上述步骤之后git push old_a mastergit push old_b master会怎样? (存储库是否接收包含old_a + old_b内容的整个新文件夹以及原因?)

欣赏任何见解!

2 个答案:

答案 0 :(得分:0)

我不会绘制图表,但gitk(或git log --oneline --graph --decorate如果您更喜欢文字模式)可以为您做到这一点。默认情况下,他们会显示从HEAD可以访问的历史记录,如果您想同时查看所有分支,则添加--all,或者运行gitk old_a/master old_b/master仅查看两个远程分支的历史记录跟踪您感兴趣的参考文献。

答案 1 :(得分:0)

1)我不会为你画画。使用gitk -a自己绘制历史记录。 2)我不确定你的dir|%{}命令是否正确,因为我没有使用Windows cmds,但是,如果你推送到old_a a / o old_b,它们将具有相同的布局您的本地存储库,即

./old_a/AFILES
./old_b/BFILES

因为git甚至不关心文件。内部git只适用于内容,但你告诉git将所有old_a文件转换为新目录./old_a和old_b相同。

实际上git mv是一个shell mv加上git rm oldpath和git add newpath。 当你推送那个提交时,这些rm / add组合将转到old_a和old_b。