对github上的提交感到困惑

对github上的提交感到困惑,git,github,repository,git-commit,git-push,Git,Github,Repository,Git Commit,Git Push,我正在使用github与另外两个人一起做一个项目,我对整个提交过程感到非常困惑,我所阅读的任何东西都不能帮助我理解。我得到一份提交记录,记录您对本地存储库所做的更改。。。但为什么我的组成员的提交会出现在在线存储库中?您能否同时提交计算机上的本地存储库和联机存储库?如果您可以提交到在线存储库,那么这样做与简单地使用git push在线推送更改有什么区别? 非常感谢。如果您的组成员进行git推送,它将推送到“在线存储库”。Git提交仅在本地服务器上有效。Git push将这些提交移动到“在线存储库”

我正在使用github与另外两个人一起做一个项目,我对整个提交过程感到非常困惑,我所阅读的任何东西都不能帮助我理解。我得到一份提交记录,记录您对本地存储库所做的更改。。。但为什么我的组成员的提交会出现在在线存储库中?您能否同时提交计算机上的本地存储库和联机存储库?如果您可以提交到在线存储库,那么这样做与简单地使用git push在线推送更改有什么区别?
非常感谢。

如果您的组成员进行git推送,它将推送到“在线存储库”。Git提交仅在本地服务器上有效。Git push将这些提交移动到“在线存储库”

git提交将分为两个阶段

本地存储库提交:这些是您将对本地存储库执行的提交,称为暂存提交。这些提交对您的朋友不可用,因为名称表明这些提交是您机器的本地提交

联机存储库提交:这些提交将从暂存它们推送到联机的源存储库。一旦使用此分支的所有用户提取这些提交,这些提交将对其可用


希望这能澄清问题,如果您需要更多信息,请告诉我。

假设您正在启动一个新的存储库。你必须先从本地开始,对吗?所以

git init
->初始化本地计算机上的存储库。(假设您从一个空文件夹开始)

现在您有了一个空的存储库。现在是时候添加很多非常棒的代码/内容了。一旦你有了一些代码,你将
提交

git提交
->git仍会将所有更改保留在本地;但记住您在此提交中所做的所有更改

假设您进行了更多更改,并希望保存您的工作。因此,您将再次运行
commit
。Git再次保存您的更改,但在提交2中,仍然local保存到您的计算机

现在,您已经准备好与其他人分享您的工作。由于Github repo是在线的(通常),因此您必须将更改推送到远程存储库

commit
push
之间的区别在于,第一种方法将您的所有更改保存在本地计算机上(团队中没有其他人可以访问您的更改或提交),而
push
将使您的代码对所有人都可用。希望这是清楚的

但为什么我的组成员的提交会出现在在线存储库中

答:我假设他们已经提交了本地版本的存储库,然后git将这些提交推送到远程存储库,这样其他人都可以看到并删除这些更改

如果您可以提交到在线存储库,那么这样做与简单地使用git push在线推送更改有什么区别


答:它们是一样的。我不知道有谁会直接提交到在线存储库(除非您正在编辑自述文件或进行一些简单的HTML修复)。它的一般做法是对本地存储库进行提交,然后在希望将这些更改添加到代码库时将其推送到远程存储库

我想你可能有SVN方面的经验。与
svn commit
不同,
git commit
只是一个本地操作。它在本地生成数据,不将数据发送到远程存储库。要将存储为提交的本地更改发布到远程存储库,您需要
git push

git push
只向远程存储库发送本地数据,有时会通知远程存储库创建或删除引用,如
分支
标记
。理论上,远程存储库可以是世界上的任何存储库,只要本地存储库和远程存储库之间有一条功能路径。此外,远程存储库甚至可以是完全相同的本地存储库本身。您可以从存储库推送到它自己,尽管这几乎是无用的。你可以试试git推送。头部:refs/heads/fmyself

成功推送提交后(是的,推送可能会失败,但Git提示会告诉您如何解决),其他人(更具体地说是其他存储库。您自己可能有其他存储库)可以通过
Git fetch
Git pull
从远程存储库获取提交
git-pull
可以等效于
git-fetch+git-merge
git-fetch+git-rebase
。键是
git fetch
。它将元数据和引用从远程存储库下载到本地存储库。如上所述,其他人可以直接推送到或从您的本地存储库获取,反之亦然。然而,考虑到方便性和安全性,该模型很少使用。更有可能的是,使用了中央存储库。在您的例子中,它是一个托管在Github中的存储库。它是一个中转站


一些托管服务可能支持“在线提交”,这似乎允许您直接在远程存储库中提交。这就像您登录并在服务器上的存储库中执行操作一样。在大多数情况下,除了修改提交消息外,单行提交并不方便。

不幸的是,从您的描述很难判断发生了什么。但是你不能在本地提交远程回购协议,你必须推动它。