我刚刚开始使用Git(以前的Subversion).我遇到了真正的问题让我无法看到原始存储库中的推送或拉动更改.我的'架构'是这样的:
MAIN CODEBASE
-->Development repository 1
-->Development repository 2
Run Code Online (Sandbox Code Playgroud)
当我将更改从其中一个dev repos推回到时MAIN CODEBASE
,我看不到那里的变化.
当我随后退出时MAIN CODEBASE
,该dev repo中的所有先前更改都将被覆盖.
我在这里显然缺少一个或多个点,而且我对文档似乎认为我知道'显而易见'非常困惑.就目前而言,Git对我来说似乎毫无用处,我想知道是否要回到Subversion--它当然更容易学习和理解.
Von*_*onC 10
看起来问题为什么我不会在"git push"之后看到远程仓库中的变化?
该
push
操作始终是传播存储库历史记录和更新引用,并且从不接触工作树文件.
特别是,如果您推送更新在远程存储库中检出的分支,则不会更新工作树中的文件.这是一项预防性设计决定.
远程存储库的工作树可能具有本地更改,并且您无法进入远程存储库,以解决您正在推送的更改与工作树中的更改之间的冲突
如上所述,裸露的远程仓库在这里更好.
你可以设置一个非裸露回购比同一个地方MAIN CODEBASE
,为了看到的变化是 "非裸主要的基本代码回购".
注意:对于即将推出的Git 1.7,git push
默认情况下将拒绝进入当前已检出的分支(即HEAD在非裸存储库中指向).
git pull
不应该覆盖任何东西,至少不会没有大的警告.你看到这些警告信息吗?
正如 kibitzer在评论中恰当地描述的那样:
bare
表示不包含实际文件的存储库,只包含元数据(提交).推送到这样的存储库是安全的,因为磁盘上的文件状态和提交之间不会产生差异.git
这个远程仓库是"空"(它只有.git
文件夹,但没有文件签出)的事实并不意味着git clone
将导致一个空的本地仓库.
它将创建和签出从克隆的存储库当前活动分支分叉的初始分支.
因此,"出版架构"将是:
/---
| MAIN SERVER : [ BARE-MAIN-REPO ] == (pull only) ==> [ MAIN-REPO ]
\--- ^^ || ^^ ||
|| || || ||
push pull push pull
|| || || ||
/--- || vv || ||
|DEV1 PC : [ DEV1 REPO ] || ||
\--- || ||
|| ||
/--- || vv
|DEV2 PC : [ DEV2 REPO ]
\---
Run Code Online (Sandbox Code Playgroud)
注意:如果您参考Git词汇表,那么"origin"意味着默认的上游存储库.
Bare-main-Repo
是"原点",即默认的上游回购,dev1
并且dev2
意味着这两个回购都是通过克隆创建的Bare-main-Repo
.
(没有什么可以阻止你添加其他上游存储库:dev1可以将dev2添加为另一个上游存储库,例如允许直接从dev2提取)
归档时间: |
|
查看次数: |
4802 次 |
最近记录: |