2016-03-31 56 views
1

我有两个的Git分支,A和B.我使用Git部署从服务器1到服务器更改2.混帐不响应分支修改

科A的文件集数。分支B有一个额外的目录(foo),其中包含更多文件,并且对额外目录之外的其中一个文件(bar)进行更改。我有本地分支和远程分支源/ A。分支B和分支起点/ B也一样。

在服务器1上,如果我检出分支A,我在bar中看到原始内容,并且没有看到额外的目录foo。如果我签出分支B栏更改和额外目录,则会出现foo。

太好了。服务器1工作。

问题出在服务器2上。如果我签出分支条更改,但额外的目录条不会像在服务器1上那样消失。在服务器2上,如果我更改为分支B条,也会更改额外的目录,foo仍然存在。总而言之,当我通过git部署到服务器2时,只会发生文件内的更改,并且不会发生文件的添加/删除操作。

这是git的正常行为还是应该当我检出分支A时文件消失?

感谢

+0

是否对服务器1上的所有更改进行了提交和推送?你有没有在服务器2上执行git pull? –

+0

我做了一次抓取和结帐,但是当我在结账分支B后做了一次拉取后,我得到:$ git pull 当前分支没有跟踪信息。 请指定您想要合并的分支。 详见混帐式(1) 混帐拉 如果要设置这个分支跟踪信息你可以这样做: 混帐分支--set-上游到原点=/ b – splunge

+0

您使用了“部署”这个词:根据我的经验,很多时候人们说“部署[在服务器上]”,他们暗示服务器上的存储库是用'--bare'创建的,而且有一个post-receive钩子,在服务器上做一些特殊的事情。然而,你接着说话,就好像你登录到服务器并在那里做普通的工作树命令,就好像它不是一个''''''''''''''版本库。所以,我不确定你的实际设置是什么。如果您显示了创建这些存储库并且您现在正在使用的全部命令序列,则可能会有所帮助。 – torek

回答

1

的问题是在服务器上。如果我签分支杆的变化,但额外的目录,酒吧不消失,因为它在服务器1

这是究竟如何git的行为,一旦你签出分支工作目录的内容更新与分支的内容。

这是分支背后的全部观点。您可以处理不同的内容。

你还怎么接受它?每次签出不同的分支时,它会检出整个存储库中的所有文件?

它只检查给定分支的内容并更新工作目录。

+0

我不明白你的意思。 git是否根据不同的分支去除和添加文件,或者只是改变文件的内容?我期望它根据特定分支的提交状态添加和删除文件。 – splunge

+0

阅读此内容,一旦你做错了解释,它会给你一个更好的图片。 http://stackoverflow.com/questions/34519665/how-to-move-head-back-to-a-previous-location/34519716#34519716 – CodeWizard

+0

https://git-scm.com/book/no-nb/ v1/Git-Branching-What-a-Branch-is – CodeWizard