对github上的提交感到困惑

时间:2018-04-11 00:58:12

标签: git github repository git-commit git-push

我正在使用github与另外两个人一起开展一个项目,并且对整个提交事情感到非常困惑,我读的任何内容都没有帮助我理解。我得到了您对本地存储库所做的提交记录更改...但是为什么我的小组成员'提交出现在在线存储库?您是否可以同时使用计算机上的本地存储库以及在线存储库?如果您可以提交到在线存储库,那么在执行此操作之间有什么区别,只需使用git push在线推送您的更改? 谢谢你。

5 个答案:

答案 0 :(得分:1)

如果您的小组成员执行git推送,它将推送到"在线存储库"。 Git提交仅适用于本地。 Git push是将这些提交移动到"在线存储库"的原因。

答案 1 :(得分:1)

将有两个阶段的git提交。

本地存储库提交:这些是您将对本地存储库执行的提交,称为暂存提交。这些提交不适用于您的朋友,因为顾名思义这些提交是您的计算机的本地提交。

联机存储库提交:这些是您将从将它们转移到联机的原始存储库的提交。这些提交将在所有使用此分支的用户可用时提供。

希望如果您需要更多信息,请澄清并告诉我。

答案 2 :(得分:1)

假设您正在开始新的存储库。你必须先在当地开始,对吧?所以,

git init - >在本地计算机上初始化存储库。 (假设你开始使用空文件夹)

现在你有一个空的存储库。现在是时候添加很多很棒的代码/内容了。获得一些代码后,您将commit

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

让我们说你做了一些更改,并希望保存你的工作。因此,您将再次运行commit。 Git会再次保存您的更改,但是在提交#2中,仍然本地到您的计算机。

现在您已准备好与其他人分享您的工作。由于Github repo的在线(通常),您必须push(即上传)您对远程存储库的更改。

commitpush之间的区别在于,第一个在您的计算机上本地保留所有更改(您的团队中没有其他人可以访问您的更改或提交),{{1}将使您的代码可供所有人使用。希望明白!

答案 3 :(得分:1)

  

但是为什么我的小组成员'提交显示在在线存储库?

回答:我认为他们已经提交了他们本地版本的存储库,然后df.coef <- data.frame( fraction.of.train, t(sapply(res, function(x) coef(x)))); # fraction.of.train X.Intercept. lstat #1 0.1 34.89899 -1.0582710 #2 0.2 34.11266 -0.9234659 #3 0.3 34.27738 -0.9703798 #4 0.4 35.71255 -1.0257534 #5 0.5 34.90033 -0.9898475 #6 0.6 33.40422 -0.9042411 #7 0.7 34.80059 -0.9905163 #8 0.8 34.56530 -0.9702517 #9 0.9 34.51626 -0.9610643 #10 1.0 34.66880 -0.9752710 将这些提交提交到远程存储库,以便其他人可以查看和删除这些更改。

  

如果您可以提交在线存储库,那么在执行此操作之间有什么区别,只需使用git push在线推送您的更改即可?

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

答案 4 :(得分:0)

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

git push将仅本地数据发送到远程存储库,有时会告诉远程存储库创建或删除branchestags等引用。理论上,只要本地存储库与远程存储库之间存在功能路径,远程存储库就可以是Universe中的任何存储库。此外,远程存储库甚至可以是本地存储库本身。你可以从存储库推送到自己,虽然它几乎没用。您可以尝试git push . HEAD:refs/heads/fmyself

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

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