GIT:如何查看原点的拉/推变化

Leo*_*Leo 4 git

我刚刚开始使用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提取)