我对Git的理解如下:
1) 工作树 ---> 您手动进行更改的文件系统。2
) 暂存区 ---> 更改保存到提交的位置。3
) 存储库 ---> 已提交更改的位置(本地或远程)。
本质上我真正想要的是:
1) 工作树 - 我桌面上的本地文件目录。2
) 暂存区 - 位于某个网络服务器上。3
) 存储库 - GitHub 用于跟踪我的源代码。
我不确定我是否因为阅读了有关 Git 的所有内容而感到困惑,以及我刚才描述的情况是否真的可行?
本质上,我希望团队中的所有开发人员都拥有源代码的本地工作树副本,然后能够将更改暂存到我们网络上的服务器,然后从这里执行对 GitHub 的最终提交。
这是正确的吗?还是暂存区必须位于每台本地计算机上?
亲切的问候
答案1
我认为值得在这里研究一下 git 中使用的术语:
- git 工作树:你当前正在处理的文件
- git 暂存区:你指定下次提交时需要的文件
- git 存储库:你的机器上的一个目录,其中包含工作文件以及
.git
包含完整版本和分支历史记录等的目录。
每个开发人员在将另一个存储库克隆到他们的机器时都有一个完整的 git 存储库。事实上,每个 git 存储库都包含所有这些元素(除了我们不需要在这里讨论的裸存储库)。
你想要的更多的是过程或者政策管理团队的工作流程。您可以像这样进行设置:
- 每个开发人员在自己的机器上都有自己的工作 git 存储库
- 开发人员做出承诺
- 让它成为你上面定义的工作树
- 一旦开发人员完成工作,他们
git push
就会将这些提交提交到某个网络服务器上的 git 存储库- 这是你进行测试等的地方
- 这是您团队的临时服务器
- 当新的提交通过所有测试后,你可以
git push
将它们提交到 github 上的最终仓库- 这是您团队的主要权威存储库
请注意,每颗子弹都是git 存储库它可以满足您要求和定义的任何目的。
开发人员在自己的工作站上进行提交。此后,git 所做的一切就是在存储库之间移动这些提交,无论它们位于何处,也无论它们提供何种功能。
希望这能让事情变得清楚一些。
答案2
嗯,从技术上来说这也许是可行的,但这并不是暂存区背后的想法。
暂存区的作用是控制您想要提交的内容,适用于您不想提交工作树中更改的所有内容的情况。
也许你更改了树中的几个不同内容,但只想提交其中的一部分,或者想多次提交(以提供不同的提交注释)。这就是你使用暂存区的原因。
它不是为了将事物暂存到服务器上。
为此,您应该创建一个分支(例如“staging_branch”),提交到该分支,然后使用诸如 CruiseControl 之类的 CI 工具在服务器上检查它。然后,当一切正常时,您可以将其合并到主分支中。
或者直接提交到主分支,如果出错就修复它:-)。