对 github 上的提交感到困惑
Confused about commits on github
我正在使用 github 与另外两个人一起处理一个项目,我对整个提交的事情感到非常困惑,而且我正在阅读的任何内容都无法帮助我理解。我得到了您对本地存储库所做的提交记录更改......但是为什么我的组成员的提交显示在在线存储库中?您可以同时提交到计算机上的本地存储库和在线存储库吗?如果您可以提交到在线存储库,那么这样做与简单地使用 git push 将您的更改推送到在线有什么区别?
谢谢你。
如果您的群组成员执行 git 推送 - 它会推送到 "online repository"。 Git 提交仅适用于本地。 Git 推送是将这些提交移动到 "online repository" 的原因。
将有两个 git 提交阶段。
本地存储库提交:这些是您将对本地存储库执行的提交,称为暂存提交。顾名思义,这些提交对您的朋友不可用。
在线存储库提交:这些是您将从暂存它们推送到在线原始存储库的提交。这些提交将对所有使用此分支的用户可用。
希望这能说明问题,如果您需要更多信息,请告诉我。
假设您要开始一个新的存储库。您必须先从本地开始,对吗?所以,
git init
-> 初始化本地计算机上的存储库。 (假设您从一个空文件夹开始)
现在你有一个空的存储库。现在是时候添加很多很棒的东西了 code/content。一旦你有了一些代码,你就会 commit
.
git commit
-> Git 仍会在本地保留所有更改;但会记住您在此提交中所做的所有更改。
假设您进行了更多更改,并希望保存您的工作。因此,您将再次 运行 commit
。 Git 再次保存您的更改,但在提交 #2 中,仍然 local 到您的计算机。
现在您可以与其他人分享您的工作了。由于 Github 存储库在线(通常),您必须 push
(即上传)您的更改到远程存储库。
commit
和 push
之间的区别是,第一个将您的所有更改保存在本地计算机上(您的团队中没有其他人可以访问您的更改或提交),并且 push
将使您的代码对所有人可用。希望这很清楚!
but then why are my group members' commits showing up on the online repository?
回答:我假设他们已经提交了本地版本的存储库,然后 git push
将这些提交编辑到远程存储库,这样其他人就可以看到并提取这些更改。
If you can commit to an online repository, what is the difference between doing that and simply using git push to push your changes online?
回答:它们是一样的。不过,我不知道有谁会直接向在线存储库提交内容(除非您正在编辑自述文件或进行一些简单的 HTML 修复)。通常的做法是提交到您在本地拥有的存储库,然后在您想要将这些更改添加到代码库时将这些更改推送到远程存储库。
我猜你可能对 SVN 有经验。与svn commit
不同,git commit
只是一个本地操作。它在本地生成数据,不会将数据发送到远程存储库。要将存储为提交的本地更改发布到远程存储库,您需要 git push
.
git push
将 local-only 数据发送到远程存储库,有时会告诉远程存储库创建或删除引用,如 branches
和 tags
。理论上,远程存储库可以是宇宙中的任何存储库,只要在本地存储库和远程存储库之间存在功能路径即可。此外,远程存储库甚至可以是本地存储库本身。您可以从存储库推送到自身,尽管它几乎没有用。你可以试试 git push . HEAD:refs/heads/fmyself
.
在你成功推送提交后(是的,推送可能会失败,但 Git 提示会告诉你如何解决它),其他人(更具体地说是其他存储库。你自己可能有其他存储库)可以得到您通过 git fetch
或 git pull
从远程存储库提交。 git pull
可以等价于 git fetch + git merge
或 git fetch + git rebase
。关键是git fetch
。它将元数据和引用从远程存储库下载到本地存储库。如上所述,其他人可以直接向您的本地存储库推送或从中获取,反之亦然。但考虑到方便性和安全性,这种模式很少使用。更有可能使用中央存储库。在您的例子中,它是托管在 Github 中的存储库。它作为一个中转站。
某些托管服务可能支持 "online commit",这似乎允许您直接在远程存储库中提交。这就像您登录并在服务器上的存储库中执行操作一样。除了修改提交消息外,大多数情况下在线提交不是那么方便。
我正在使用 github 与另外两个人一起处理一个项目,我对整个提交的事情感到非常困惑,而且我正在阅读的任何内容都无法帮助我理解。我得到了您对本地存储库所做的提交记录更改......但是为什么我的组成员的提交显示在在线存储库中?您可以同时提交到计算机上的本地存储库和在线存储库吗?如果您可以提交到在线存储库,那么这样做与简单地使用 git push 将您的更改推送到在线有什么区别? 谢谢你。
如果您的群组成员执行 git 推送 - 它会推送到 "online repository"。 Git 提交仅适用于本地。 Git 推送是将这些提交移动到 "online repository" 的原因。
将有两个 git 提交阶段。
本地存储库提交:这些是您将对本地存储库执行的提交,称为暂存提交。顾名思义,这些提交对您的朋友不可用。
在线存储库提交:这些是您将从暂存它们推送到在线原始存储库的提交。这些提交将对所有使用此分支的用户可用。
希望这能说明问题,如果您需要更多信息,请告诉我。
假设您要开始一个新的存储库。您必须先从本地开始,对吗?所以,
git init
-> 初始化本地计算机上的存储库。 (假设您从一个空文件夹开始)
现在你有一个空的存储库。现在是时候添加很多很棒的东西了 code/content。一旦你有了一些代码,你就会 commit
.
git commit
-> Git 仍会在本地保留所有更改;但会记住您在此提交中所做的所有更改。
假设您进行了更多更改,并希望保存您的工作。因此,您将再次 运行 commit
。 Git 再次保存您的更改,但在提交 #2 中,仍然 local 到您的计算机。
现在您可以与其他人分享您的工作了。由于 Github 存储库在线(通常),您必须 push
(即上传)您的更改到远程存储库。
commit
和 push
之间的区别是,第一个将您的所有更改保存在本地计算机上(您的团队中没有其他人可以访问您的更改或提交),并且 push
将使您的代码对所有人可用。希望这很清楚!
but then why are my group members' commits showing up on the online repository?
回答:我假设他们已经提交了本地版本的存储库,然后 git push
将这些提交编辑到远程存储库,这样其他人就可以看到并提取这些更改。
If you can commit to an online repository, what is the difference between doing that and simply using git push to push your changes online?
回答:它们是一样的。不过,我不知道有谁会直接向在线存储库提交内容(除非您正在编辑自述文件或进行一些简单的 HTML 修复)。通常的做法是提交到您在本地拥有的存储库,然后在您想要将这些更改添加到代码库时将这些更改推送到远程存储库。
我猜你可能对 SVN 有经验。与svn commit
不同,git commit
只是一个本地操作。它在本地生成数据,不会将数据发送到远程存储库。要将存储为提交的本地更改发布到远程存储库,您需要 git push
.
git push
将 local-only 数据发送到远程存储库,有时会告诉远程存储库创建或删除引用,如 branches
和 tags
。理论上,远程存储库可以是宇宙中的任何存储库,只要在本地存储库和远程存储库之间存在功能路径即可。此外,远程存储库甚至可以是本地存储库本身。您可以从存储库推送到自身,尽管它几乎没有用。你可以试试 git push . HEAD:refs/heads/fmyself
.
在你成功推送提交后(是的,推送可能会失败,但 Git 提示会告诉你如何解决它),其他人(更具体地说是其他存储库。你自己可能有其他存储库)可以得到您通过 git fetch
或 git pull
从远程存储库提交。 git pull
可以等价于 git fetch + git merge
或 git fetch + git rebase
。关键是git fetch
。它将元数据和引用从远程存储库下载到本地存储库。如上所述,其他人可以直接向您的本地存储库推送或从中获取,反之亦然。但考虑到方便性和安全性,这种模式很少使用。更有可能使用中央存储库。在您的例子中,它是托管在 Github 中的存储库。它作为一个中转站。
某些托管服务可能支持 "online commit",这似乎允许您直接在远程存储库中提交。这就像您登录并在服务器上的存储库中执行操作一样。除了修改提交消息外,大多数情况下在线提交不是那么方便。