我即将为一个已经知道如何使用 Git 的人开始一个类的团队项目......我以前从未使用过它,我正在努力理解整个过程如何工作背后的概念。
假设团队中的某个人将一些样板代码上传到存储库。我想fork
吗?然后自己处理它,最终push
到共享存储库?如果两个人在同一个文件上工作并且存在一些差异,会发生什么,如何解决?pull
/fetch
从何而来?
对不起,如果我的问题不是那么清楚...我只是想确保我了解如何使用 Git 的整个概念。GitHub 和 google 查询上的教程并没有那么帮助我了解如何使用 Git 进行团队项目设置。谢谢。
没有git fork
命令,也许你想git clone
?对于此答案的其余部分,我假设您的意思是git clone
因为这是拉取存储库的本地副本的命令。
常规工作流程
通常会发生的情况是,有人会在某处的服务器上创建一个 git 存储库(手动使用某处服务器上的git init --bare
或使用 github 为您管理它),你们都将将其用作中央服务器。这是远程存储库,默认情况下称为源。如果由于某种原因您丢失了克隆的原始存储库,您可以随时将/path/to/local/directory 复制到某处,然后让其他人从中克隆。你的同事可能已经这样做了,你必须问他们。
设置远程存储库后,每个开发人员都可以克隆它。要克隆存储库,请在合理的位置创建一个空目录,安装 git,然后运行 git clone protocol://user@urltorepo.com /path/to/local/directory/
以拉取存储库的本地副本并将其粘贴到/path/to/local/directory 中。完成此操作后,您将拥有一个完全独立的存储库,该存储库反映克隆时存储库的状态。然后,您将git commit
所做的更改,将它们git push
到遥控器,然后其他人可以git pull
您的更改。
克隆后,关于如何使用 git 就没有硬性规定,因为 git 更像是一组工具,而不是决定某个工作流程的东西,所以问问你的同事他们如何使用 git。然而,大多数时候,每个开发人员都会使用 git pull
从远程提取最新更改,进行更改(通常在单独的本地分支中),git commit
它们,然后使用 git push
推送这些更改。
分支
每个开发人员都可以使用 git branch foo
创建本地分支。这太棒了,因为它允许您将 master 和代码分开,直到您明确想要将它们合并在一起。要创建分支:
git checkout master
git checkout -b foo #This will create the foo branch and then change to it
# Do some work
git add .
git commit #This commits the changes you have made to foo
并部署分支:
git checkout master
git pull #Make sure that you are up to date
git merge foo
# Fix merge conflicts and commit if merge says that you have conflicts
git push
过程应如下所示:
- 拉取文件
- 编辑它 提交它
- (它提交到您的本地仓库)
再次拉取它(如果有任何冲突,您将收到通知)在这种情况下,您可以执行以下命令(在您的存储库工作文件夹中的 GitBash )解决它:
git 合并工具
它将运行您在 .gitconfig 文件中配置的合并工具
之后,您可以推送更改。
因此,在推送更改之前,需要先拉取更改,以便解决发生的任何冲突,然后可以推送更改。
希望它能消除你的困惑!!
--干杯!!!!