【问题标题】:What are the differences between "git commit" and "git push"?“git commit”和“git push”有什么区别?
【发布时间】:2011-02-14 06:18:15
【问题描述】:

在我正在阅读的 Git 教程中,git commit 用于存储您所做的更改。

那么git push 是干什么用的?

【问题讨论】:

标签: git push git-commit git-push git-index


【解决方案1】:

基本上git commit记录对存储库的更改”,而git push更新远程引用以及关联的对象”。所以第一个用于连接本地存储库,而后一个用于与远程存储库交互。

这是来自Oliver Steele 的漂亮图片,它解释了 git 模型和命令:

GitReady.com 上阅读有关git pushgit pull 的更多信息(我首先提到的文章)

【讨论】:

  • 这里是原始出处:osteele.com/archives/2008/05/my-git-workflow 以及 git 工作流的另一张图片
  • @ben github 只是托管您的公共“云端”存储库供git push 使用的一种解决方案。实际上,git push 的目的地可以是 any git 存储库。它可以在您自己的本地硬盘上的另一个目录中(例如git remote add clone ~/proj/clone.git; git push clone mastergit push ~/proj/clone.git master),也可以是您的自己的 主机服务的git 存储库。
  • 所以...你需要先push还是先commit?
  • @Piet 它从您修改文件的工作区开始。然后将它们添加到索引中,将它们提交到本地存储库,最后 - 将它们推送到远程存储库
  • @Mr.Hyde 不,这是不可能的。 Git 作为分布式版本控制需要你有一个本地副本。
【解决方案2】:

提交:将更改添加到本地存储库

push:将最后一次提交传输到远程服务器

【讨论】:

  • 非常简洁的答案!这里的许多答案都不必要地冗长。
【解决方案3】:

嗯,基本上 git commit 将您的更改放入本地存储库,而 git push 将您的更改发送到远程位置。

【讨论】:

  • 这是我使用 GIT 的第二天。当我查看上面的答案时,我仍然没有得到清晰的图片,但您的答案只是确定了它。谢谢。
  • git push 是上传实际更新的文件还是一些特殊的“差异”文件?
【解决方案4】:

git push 用于将您在本地存储库中所做的提交添加到远程存储库 - 与 git pull 一起,它允许人们进行协作。

【讨论】:

    【解决方案5】:

    由于 git 是一个分布式版本控制系统,不同之处在于 commit 会将更改提交到本地存储库,而 push 会将更改推送到远程存储库。

    【讨论】:

      【解决方案6】:

      提交快照 |变更集 |版本 |历史记录 |存储库的“另存为”。 Git 存储库 = 提交的系列(树)。

      本地存储库:您计算机上的存储库。

      远程存储库:服务器上的存储库 (Github)。

      git commit:将一个新的commit(最后一个commit + staged 修改)附加到local 存储库. (提交存储在/.git

      git pushgit pull:将本地存储库与其关联的远程存储库同步。 push - 将 local 的更改应用到 remotepull - 将 remote 的更改应用到 local

      【讨论】:

        【解决方案7】:

        git commit 将您的更改记录到 本地 存储库。

        git push更新 远程 存储库与您的本地更改。

        【讨论】:

        • 你的回答与this answer基本一致,没有添加任何新内容。
        【解决方案8】:

        注意三点:

        1)工作目录 ----- 我们的代码文件所在的文件夹

        2)本地存储库 ------ 这是在我们的系统内部。当我们第一次做 COMMIT 命令然后创建此本地存储库。 在我们的工作目录所在的同一个地方,
        Checkit ( .git ) 文件被创建。
        之后,当我们提交时,这将存储 我们在工作目录文件中所做的更改 本地存储库 (.git)

        3)Remote Repository ----- 它位于我们的系统之外,就像在服务器上一样 位于世界任何地方。像github。 当我们发出 PUSH 命令时,我们本地的代码 存储库被存储到这个远程存储库

        【讨论】:

          【解决方案9】:

          只想补充以下几点:

          在您提交之前无法推送,因为我们使用 git push 将本地分支上的提交推送到远程存储库。

          git push 命令有两个参数:

          远程名称,例如origin 分支名称,例如master

          例如:

          git push  <REMOTENAME> <BRANCHNAME> 
          git push  origin       master
          

          【讨论】:

            【解决方案10】:

            一个非常粗略的类比:如果我们将git commit 与保存已编辑的文件进行比较,那么git push 将把该文件复制到另一个位置。

            请不要把这个比喻从这个上下文中解脱出来——提交和推送并不像保存一个编辑过的文件并复制它。也就是说,为了比较,它应该成立。

            【讨论】:

              【解决方案11】:

              如果您想象在 Github 上的存储库中维护一个日志文件,则更容易理解 git 命令 addcommit 的使用。 对我来说,一个典型的项目日志文件可能如下所示:

              ---------------- Day 1 --------------------
              Message: Completed Task A
              Index of files changed: File1, File2
              
              Message: Completed Task B
              Index of files changed: File2, File3
              -------------------------------------------
              
              ---------------- Day 2 --------------------
              Message: Corrected typos
              Index of files changed: File3, File1
              -------------------------------------------
              ...
              ...
              ...and so on
              

              我通常以 git pull 请求开始我的一天,并以 git push 请求结束。因此,一天的记录中的所有内容都对应于它们之间发生的事情。每天,我都会完成一项或多项需要更改一些文件的逻辑任务。在该任务期间编辑的文件列在索引中。

              每个子任务(这里的任务 A 和任务 B)都是单独的提交。 git add 命令将文件添加到“已更改文件索引”列表中。此过程也称为暂存,实际上记录更改的文件和执行的更改。 git commit 命令记录/最终确定更改和相应的索引列表以及可用于以后参考的自定义消息。

              请记住,您仍然只是更改存储库的本地副本,而不是 Github 上的副本。在此之后,只有当您执行 git push 时,所有这些记录的更改以及每次提交的索引文件都会登录到主存储库(在 Github 上)。

              例如,要获得该虚构日志文件中的第二个条目,我会这样做:

              git pull
              # Make changes to File3 and File4
              git add File3 File4
              # Verify changes, run tests etc..
              git commit -m 'Corrected typos'
              git push
              

              简而言之,git addgit commit 可让您将主存储库的更改分解为系统的逻辑子更改。正如其他答案和 cmets 所指出的那样,它们当然还有更多用途。然而,这是最常见的用法之一,也是 Git 背后的驱动原理,它是一个不同于 Svn 等其他流行的多阶段修订控制系统。

              【讨论】:

                【解决方案12】:

                git commit 只不过是正式保存我们的更改,对于每次提交,我们都会给出提交信息, 完成提交后,我们可以将其推送到远程以全局查看我们的更改

                这意味着我们可以在推送到远程之前进行多次提交(我们可以看到发生的提交列表和消息) git 使用 40 位代码的提交 ID 保存每个提交

                只有当我想在远程查看我的更改时我才使用 git push(之后我将检查我的代码是否在 jenkins 中工作)

                【讨论】:

                  【解决方案13】:

                  当您提交更改时,您会将更改保存为本地存储库中的单个逻辑集。您可以多次执行此操作而无需推动。在它们被推送之前,它们不会离开您的本地存储库,这意味着远程存储库还没有这些更改集,因此当其他人从远程存储库拉取时,您的提交将不会被拉取。

                  当您推送时,您在本地存储库中所做的所有提交都将转移到远程存储库,因此当共享此远程存储库的其他开发人员拉取时,他们会将您的更改转移到他们的本地存储库 检查 Git 命令和备忘单here

                  【讨论】:

                    【解决方案14】:

                    git commit 是提交暂存在本地仓库中的文件。 git push 是快进合并本地的master分支和远程的master分支。但合并并不总是成功。如果出现拒绝,您必须pull,以便您可以成功发送git push

                    【讨论】:

                    • 有些人可能想要强制推而不是拉。这取决于实际情况。事实上,如果您在不与其他人共享的分支上(即使在远程仓库中)重新提交提交,那么拉取肯定不是您想要做的。
                    【解决方案15】:

                    嗯,基本上 git commit 将您的更改放入本地存储库,而 git push 将您的更改发送到远程位置。由于 git 是一个分布式版本控制系统,不同之处在于 commit 会将更改提交到本地存储库,而 push 会将更改推送到远程存储库

                    来源谷歌

                    http://gitref.org/basic/这个链接也很有用

                    https://git-scm.com/docs/git-commit

                    【讨论】:

                    • 此答案将其他答案逐字复制到一个中。
                    • 它并没有为之前已经说过的所有内容带来任何新的东西......
                    【解决方案16】:

                    用外行的话来说,git commitgit push 之前的步骤,您按此顺序运行它们以成功将您的文件 git 到 github。

                    【讨论】:

                      猜你喜欢
                      • 2021-11-02
                      • 2018-03-27
                      • 2012-09-09
                      • 2015-07-03
                      • 2011-12-06
                      • 2017-11-24
                      • 2021-02-26
                      • 2015-10-26
                      相关资源
                      最近更新 更多