PyCharm 2025.3 Help

将更改提交并推送到 Git 存储库

在您 将新文件添加到 Git 存储库 ,或修改了已在 Git 版本控制下的文件并且对其当前状态满意之后,您可以共享您的工作成果。 这包括在本地 提交它们以将存储库的快照记录到项目历史,然后将它们 推送到远程存储库,使其对他人可用。

设置您的 Git 用户名

Git 需要知道您的用户名,以便将提交与身份关联。 如果您尚未设置用户名,您在首次尝试提交更改时,PyCharm 会提示您进行指定。

  • 打开 终端 并执行以下命令之一:

    • 要为您计算机上的每个 Git 存储库设置名称,请使用 $ git config --global user.name "John Smith"

    • 要为单个存储库设置名称,请使用 $ git config user.name "John Smith"

在本地提交更改

  1. 打开位于左侧的垂直 提交 工具窗口 Alt+0

    提交工具窗口
  2. 当您的更改已准备好提交时,选择相应的文件或整个更改列表。

    如果按下 Ctrl+K ,将选择整个活动的更改列表。

    您也可以选择 未进行版本管理的文件 节点下的文件——PyCharm 将在一步中暂存并提交这些文件。

  3. 如果您希望 将本地更改追加到最新提交 ,而不是创建单独的提交,请选择 修正 选项。

  4. 输入提交消息。 您可以点击 提交消息历史记录按钮 ,从最近的提交消息列表中进行选择。

    您也可以在推送提交之前稍后 编辑提交消息

  5. 如果您需要执行提交检查、在提交后将文件上传到服务器,或使用高级选项进行提交,请点击右下角的 齿轮图标 ,或按下 Ctrl+O

    高级提交选项弹出窗口

    可用选项如下:

    • 作者 :如果您提交的是其他人所做的更改,您可以指定这些更改的作者。

    • 签署提交 :如果您希望为提交签署签名,以证明您即将检入的更改是由您完成的,或您对所提交的代码承担责任,请选择此项。

      启用此选项后,提交消息末尾会自动添加以下行: Signed off by: <username>

    • 提交检查 区域,选择您希望 PyCharm 在将所选文件提交到本地存储库之前执行的操作。

      可用选项如下:

      • 重新格式化代码 :根据 项目代码样式设置执行代码格式化。

      • 重排代码 :根据 排列规则首选项重新排列您的代码。

      • 优化导入 :移除冗余的导入语句。

      • 清理 :从代码清理检查中批量应用快速修复。 点击 选择配置文件 以选择 IDE 将从中运行检查的 配置文件

      • 更新版权 :根据所选的版权配置文件—作用域组合 添加或更新版权声明

      • 清除 Jupyter 输出 :清除 Jupyter Notebook 中的所有单元输出,仅存储源代码。

      • 检查恶意依赖项 :搜索 恶意 NPM 和 PyPI 依赖项 ,这些依赖项可能在您的项目中被声明。

    • 高级提交检查 区域,可用选项如下:

      • 在完成提交后运行高级检查 :启用此选项可在 完成之后运行所选的高级提交检查。

        启用此选项后,即使某些高级提交检查失败,更改也会照常提交。

      • 分析代码(A) :在提交时分析已修改的文件。 点击 选择配置文件 以选择 IDE 将用于运行检查的 检查配置文件

      • 检查 TODO :查看与指定过滤器匹配的 TODO 项。 点击 配置 以选择一个 现有 TODO 筛选器 ,或打开 TODO 设置页面并定义要应用的新筛选器。

      • Run Tests将测试作为提交检查运行。 在 Run Tests 附近点击 选择配置 ,然后选择要运行的配置。

    • 提交后 区域,您可以选择用于将已提交的文件上传到本地或远程主机、已挂载磁盘或目录的 服务器访问配置服务器组。 有关详细信息,请参阅 部署

      可用选项如下:

      • 将文件上传到 :选择用于将已提交的文件上传到本地或远程主机、已挂载磁盘或目录的 服务器访问配置服务器组

        • 要禁止上传,选择

        • 要将服务器配置添加到列表,点击 Browse 按钮 ,并在打开的 部署 对话框中填写必填字段。

        仅在启用 FTP/SFTP/WebDAV 连接 插件时,该列表才可用。

      • 始终使用所选服务器或服务器组 :始终将文件上传到所选的 服务器服务器组

        仅在启用 FTP/SFTP/WebDAV 连接 插件时,才会提供此复选框。

  6. 准备就绪后,点击 提交提交并推送Ctrl+Alt+K ),以在提交后立即将更改推送到远程存储库。 在将它们推送到远程之前,您可以审查当前提交以及所有其他提交。

提交文件的一部分

有时,当您进行与特定任务相关的更改时,您还会应用影响同一文件的其他不相关的代码修改。 将所有此类更改合并到一个提交中可能不是理想的选择,因为这样会更难对其进行审查、 还原拣选等。

PyCharm 允许您通过以下方式之一分别提交此类更改:

选择要提交的代码块和特定行

  1. 打开 提交 工具窗口 Alt+0

  2. 要显示所选文件的存储库版本与本地版本之间的差异,请在 提交 工具窗口 Alt+0 中,从上下文菜单中选择 显示差异 ,或按 Ctrl+D

  3. 选中您要提交的每个已修改或新添加的代码块旁边的复选框,并将其他更改保持未选中:

    PyCharm:部分提交对话框
  4. 如果您只想从某个代码块中提交特定行,右键点击要包含的该行并选择 拆分区块并将所选行包含到提交中

    PyCharm:在上下文菜单中将当前行包含到提交中的选项

    或者,将鼠标悬停在装订边上,选中或清除要在提交中包含或排除的该行旁边的复选框。

  5. 点击 提交。 未选中的更改将保留在当前更改列表中,您可以单独提交它们。

从编辑器提交所选更改

如果您已提交了更改,随后意识到遗漏了某些内容,您可以直接在编辑器中快速提交任何更新。

  1. 在编辑器中更改文件时,点击装订边中的相应 更改标记

  2. 在出现的工具栏中,编写提交消息并点击 提交此更改

    内联提交字段

    在提交消息字段中点击 修正 ,以将本地更改追加到最新提交。

将更改放入不同的更改列表

  1. 在编辑器中更改文件时,点击装订边中的相应 更改标记

  2. 在出现的工具栏中,选择已修改代码块的目标更改列表(或创建新的更改列表):

    部分提交的更改列表
  3. 分别提交每个更改列表。

自定义查看本地更改的方式

PyCharm 提供多种设置,帮助您自定义在提交前审查本地更改的工作流。

自定义提交工具窗口

您可以根据首选工作流更改 提交 工具窗口 Alt+0 的位置和行为。

  • 提交界面可以作为单独窗口打开,其外观类似对话框,但仍为非阻塞(或非模态)。

    提交 工具窗口 Alt+0 中,点击 选项 并选择 视图模式 | 窗口。 要始终将窗口置于 IDE 之前,请选择 视图模式 | 浮动

  • 您可以将 提交 工具窗口设置为仅显示本地更改列表的窗口,并在准备提交更改时再开启提交控件(通过 提交Ctrl+K)。

    设置 | 高级设置 | 版本控制 中,选中 切换提交控件 复选框。

  • 提交 工具窗口可以成为 Git 工具窗口的 日志 选项卡中的 本地更改 选项卡 Alt+9

    设置 | 高级设置 | 版本控制 中,清除 启用“提交”工具窗口 复选框。

自定义差异查看器行为

  1. 提交 工具窗口 Alt+0 中,会显示已更改文件的列表。 双击已更改的文件可以打开差异查看器或源文件。

    点击 选项 ,选择 双击时显示 ,然后选择首选选项:

    • 差异 :在双击已更改的文件时始终打开差异查看器,以便审查更改。

    • 源代码 :始终打开文件本身,以便进行编辑。

  2. 您还可以通过以下设置之一,将差异查看器设置为在编辑器中或在单独窗口中打开:

    • 在差异查看器中,点击工具栏上的 设置 ,并选择 在单独的窗口中显示差异

    • 设置 | 高级设置 | 版本控制 中,清除 作为编辑器标签页打开差异 复选框。

使用 Git 暂存区提交更改

如果您更习惯于在提交前 暂存更改,而不是使用会自动暂存已修改文件的 更改列表 ,请按 Ctrl+Alt+S 打开设置并选择 版本控制 | Git ,然后选中 启用暂存区域 复选框。

提交 工具窗口将如下所示:

Git 暂存区

使用暂存区可以轻松将同一文件的更改分别提交(包括重叠的更改),并且无需从编辑器切换焦点即可查看哪些更改已被暂存。

将更改暂存以进行提交

  1. 请执行以下任一操作:

    • 要暂存整个文件,请在 提交 工具窗口 Alt+0 中选择该文件,然后点击其右侧的 Add 按钮 ,或按 Ctrl+Alt+A

      从提交工具窗口进行暂存
    • 要暂存文件中的特定代码块,请在编辑器中点击已修改代码块旁装订边中的 更改标记 ,然后点击 暂存

      从编辑器暂存更改

      已暂存的更改(包括在 PyCharm 之外暂存的更改)会在编辑器中以空心更改标记标注:

      已暂存更改的装订边标记
    • 要暂存粒度更细的更改,例如单行而非代码块,或者甚至是对单行的多个更改之一,请在 提交 工具窗口 Alt+0 中选择包含该更改的文件,然后在上下文菜单中选择 比较HEAD 版本、暂存版本和本地版本

      这将打开一个三方 差异查看器 ,其中左侧窗格显示存储库版本,右侧窗格显示本地版本,中间窗格是一个功能齐全的编辑器,您可以在其中进行要暂存的更改。

      交互式暂存更改
  2. 准备就绪后,按照 在本地提交更改 中的说明提交更改。

将更改推送到远程存储库

在推送更改之前,先 与远程同步 ,并确保您存储库的本地副本是最新的,以避免冲突。

PyCharm 允许您将任意分支的更改推送到其 跟踪分支或其他任何远程分支。

  1. 请执行以下任一操作:

    • 要从 当前分支推送更改,请按下 Ctrl+Shift+K ,或在主菜单中选择 Git | 推送

    • 要从任何已设置远程的本地分支推送更改,请在 分支 弹出窗口中选择该分支,并从操作列表中选择 推送

    • 如果您有一些已进行但尚不想推送到远程分支的提交,请在 Git 工具窗口的 日志 选项卡(Alt+9 )中,选择您要推送的最后一个提交,并从操作列表中选择 推送此前所有提交… 选项。

    推送提交对话框 将打开,显示所有 Git 存储库(对于多存储库项目),并列出自上次推送以来在每个存储库的当前分支所做的所有提交。

    推送提交对话框

    如果您选择了 推送此前所有提交… 选项,将显示截至所选提交哈希的所有提交列表。

    如果您的项目使用多个存储库但未启用同步控制,则默认情况下仅选择当前存储库(有关启用同步存储库控制的详细信息,请参阅 版本控制设置:Git)。

  2. 如果存储库中没有远程,则会出现 定义远程 链接。 点击此链接,并在打开的对话框中指定远程名称和 URL。 该远程将被保存,您可以稍后通过 Git | 管理远程 进行编辑(有关详细信息,请参阅 添加远程存储库)。

  3. 如果您想修改要推送到的目标分支,可以点击分支名称。 该标签会变为文本字段,您可以在其中输入现有的分支名称,或创建新分支。 您也可以点击右下角的 编辑所有目标 链接,同时编辑所有分支名称。

    请注意,您无法更改本地分支:将推送每个所选存储库的当前分支。

  4. 如果您希望在推送之前预览更改,请选择所需的提交。 右侧窗格显示所选提交包含的更改。 您可以使用工具栏按钮查看提交的详细信息。

    如果某次提交的作者与当前用户不同,该提交会用星号标记。

  5. 选中 推送标签 复选框,以将标签与提交一起推送。

    默认情况下,当您执行 push 操作时,除非选中此复选框,否则不会将标签发送到远程存储库。

    • 选择 全部 ,以推送所有标签,包括不属于您即将推送的所选分支的标签(相当于 git push --tags)。

    • 选择 当前分支 ,以仅推送属于您即将推送的所选分支的标签(相当于 git push --follow-tags ,自 Git 1.8.3 起可用)。

  6. 准备就绪后,点击 推送 按钮,并从下拉菜单中选择您要执行的操作: 推送强制推送 (相当于 git push --force-with-lease)。

    仅当当前分支未列在 受保护的分支 字段中时,这些选择项才可用(请参阅 版本控制设置:Git ),否则,您只能执行 push 操作。

如果推送被拒绝,请更新您的工作副本

如果由于您的工作副本已过时而 推送 被拒绝,且在 设置 对话框的 Git 设置 页面中未选中 如果当前分支的推送被拒,则自动更新 选项,PyCharm 会显示 推送被拒 对话框。 请执行以下操作:

  1. 如果您的项目使用多个 Git 存储库,请指定您要更新哪些存储库。 如果您要更新所有存储库,无论这些存储库的 推送 是否被拒绝,请选择 更新所有存储库 选项。 如果清除此选项,将仅更新受影响的存储库。

  2. 如果您希望 PyCharm 在下次推送被拒绝时,使用您在此对话框中选择的更新方法以静默方式应用更新过程,请选择 记住更新方式的选择,并在将来静默更新 选项。

    离开此对话框后, 设置 对话框的 Git 设置 页面中的 如果当前分支的推送被拒,则自动更新 复选框将被选中,并且所应用的更新方法将成为默认方法。

    要更改更新方法,请清除此选项,以便在下次当前分支的推送被拒绝时调用 推送被拒 对话框,应用不同的更新方法,并再次选择 记住更新方式的选择 选项。

  3. 通过分别点击 变基合并 按钮来选择更新方法。

何时需要使用强制推送?

当您运行 推送 时,如果远程存储库存在您本地缺失的更改,而您打算用存储库的本地副本将其覆盖, Git 将拒绝完成该操作。 通常,在用您的更改更新远程之前,您需要执行 pull 以与远程同步。

git push --force 命令会禁用此检查,并允许您覆盖远程存储库,从而擦除其历史并导致数据丢失。 在底层,当您选择强制推送时,PyCharm 会执行 git push --force-with-lease 操作,这是一种更安全的选项,可帮助确保您不会覆盖他人的提交(有关推送选项的更多详细信息,请参阅 git push)。

您可能仍需执行 git push --force 的一种情况是:当您对已推送的分支进行变基,然后希望将其推送到远程服务器时。 在这种情况下,当您尝试推送时, Git 会拒绝您的更改,因为远程引用不是本地引用的祖先。 如果在这种情况下执行 拉取 ,您最终会得到该分支的两个副本,随后您需要将它们合并。

最后修改日期: 2025年 12月 2日