提交更改并将其推送到 Git 存储库
最后修改时间:2023 年 9 月 8 日配置提交选项:设置 | 版本控制 | 犯罪
提交工具窗口Alt00
犯罪Ctrl0K
提交和推送CtrlAlt0K
推CtrlShift0K
将新文件添加到 Git 存储库,或修改已在 Git 版本控制下的文件,并且您对它们的当前状态感到满意后,您可以共享您的工作结果。这涉及到在本地提交它们以将存储库的快照记录到项目历史记录中,然后将它们推送到远程存储库以便其他人可以使用它们。
设置您的 Git 用户名
Git 需要知道您的用户名才能将提交与身份关联起来。如果您尚未设置用户名,PyCharm 将在您首次尝试提交更改时提示您指定。
打开终端并执行以下命令之一:
要为计算机上的每个 Git 存储库设置名称,请使用
$ git config --global user.name "John Smith"
要为单个存储库设置名称,请使用
$ git config user.name "John Smith"
在本地提交更改
打开 位于左侧的垂直提交工具窗口:Alt00
当您的更改准备好提交时,选择相应的文件或整个更改列表。
如果按,将选择整个活动更改列表。Ctrl0K
您还可以选择Unversioned Files节点下的文件 - PyCharm 将一步暂存并提交这些文件。
如果要将本地更改附加到最新提交而不是创建单独的提交,请选择“修改”选项。
输入提交消息。您可以单击以从最近提交消息的列表中进行选择。
您还可以稍后在推送提交之前编辑提交消息。
提示
您可以在版本控制 |上自定义提交消息规则。IDE 设置的 提交页面。还有一个快速修复和重新格式化操作,可以换行长行或重新格式化消息。CtrlAlt0S
您还可以定义将用作默认提交消息的提交模板。指定要在.txt文件中使用的样板文本,并在终端中执行以下命令将其添加到 Git 配置中:
git config --local commit.template <path_to_template_file>
如果您需要执行提交检查、提交后将文件上传到服务器或使用高级选项提交,请单击右下角的 :
可以使用以下选项:
作者:如果您要提交其他人所做的更改,您可以指定这些更改的作者。
签署提交:选择是否要签署提交以证明您要签入的更改是由您做出的,或者您对所提交的代码负责。
启用此选项后,将以下行自动添加到提交消息的末尾:签署人:<用户名>
在“提交检查”区域中,选择您希望 PyCharm 在将所选文件提交到本地存储库时执行的操作。
可以使用以下选项:
重新格式化代码:根据项目代码样式设置执行代码格式化。
重新排列代码:根据偏好的排列规则重新排列您的代码。
优化导入:删除多余的导入语句。
分析代码:在提交修改的文件时分析它们。单击选择配置文件以选择IDE 将运行检查的检查配置文件。
检查 TODO (<过滤器名称>):查看与指定过滤器匹配的TODO 项。单击“配置”以选择现有的 TODO 过滤器,或打开TODO 设置页面并定义要应用的新过滤器。
清理:批量应用代码清理检查中的快速修复。单击选择配置文件以选择IDE 将运行检查的配置文件。
运行测试:运行测试作为提交检查。单击运行测试附近的选择配置,然后选择要运行的配置。
更新版权:根据所选的版权配置文件 - 范围组合添加或更新版权声明。
在“提交后”区域中,您可以选择用于将提交的文件上传到本地或远程主机、已安装的磁盘或目录的服务器访问配置或服务器组。有关更多信息,请参阅部署。
可以使用以下选项:
准备就绪后,单击“提交”或“提交并推送”( ) 在提交后立即将更改推送到远程存储库。您将能够在将当前提交以及所有其他提交推送到远程之前查看它们。CtrlAlt0K
提交文件的一部分
有时,当您进行与特定任务相关的更改时,您还会应用影响同一文件的其他不相关的代码修改。将所有此类更改包含到一次提交中可能不是一个好的选择,因为审查、恢复、挑选它们等会更加困难。
PyCharm 允许您通过以下方式之一单独提交此类更改:
在“提交更改”对话框中选择要包含在提交中的修改后的代码块和行,并将其他更改保留为待处理状态,以便稍后可以提交它们。
当您编辑代码时,将不同的代码块即时放入不同的变更列表中,然后分别提交这些变更列表。
提示
您还可以创建一个新的更改列表并使其处于活动状态,然后您之后所做的所有更改都将落入该更改列表中,而您之前所做的任何修改都将保留在原处。
选择要提交的块和特定行
打开 提交工具窗口。Alt00
要显示所选文件的存储库版本和本地版本之间的差异,请在 “提交”工具窗口中,从上下文菜单中选择“显示差异”或按。Alt00Ctrl0D
选中要提交的每个已修改或新添加的代码块旁边的复选框,并保留其他更改未选中:
提示
您还可以从已修改块的上下文菜单中选择移动到另一个更改列表,以在可以单独提交的不同更改列表之间拆分更改。
要为此操作分配自定义快捷方式,请在IDE 设置的“ 键盘映射”页面上的“版本控制系统”下查找“将行移至另一个更改列表”操作。CtrlAlt0S
如果您只想提交块中的特定行,请右键单击要包含的行,然后选择“ 拆分块”和“将所选行包含到提交中”。
或者,将鼠标悬停在装订线上,然后选择或清除要包含在提交中或从中排除的行旁边的复选框。
单击“提交”。未选定的更改将保留在当前更改列表中,以便您可以单独提交它们。
将更改放入不同的更改列表中
当您在编辑器中对文件进行更改时,请单击装订线中相应的更改标记。
笔记
如果装订线中没有更改标记,请确保在编辑器 |装订线中启用突出显示装订线中修改的行选项。IDE 设置的 常规页面。CtrlAlt0S
在出现的工具栏中,选择已修改代码块的目标变更列表(或创建新的变更列表):
单独提交每个变更列表。
使用 Git 暂存区提交更改
如果您更习惯于提交更改的暂存概念,而不是使用自动暂存修改文件的更改列表,请按 打开 IDE 设置并选择版本控制 | Git,然后选择启用暂存区域复选框。CtrlAlt0S
提交工具窗口现在如下所示:
使用暂存区域可以让您轻松地分别提交对同一文件的更改(包括重叠更改),并查看哪些更改已经暂存,而无需从编辑器切换焦点。
笔记
当您从使用更改列表切换到 Git 暂存区域时,所有现有更改列表都会保存。您可以在两种模式之间切换,而不会丢失所做的更改。
提交的阶段更改
执行以下操作之一:
要暂存整个文件,请在 “提交”工具窗口中选择该文件并单击其右侧的 或按。Alt00CtrlAlt0A
要暂存文件中的特定块,请在编辑器中单击已修改块旁边的装订线中的更改标记,然后单击暂存。
暂存的更改(包括从 PyCharm 外部暂存的更改)在编辑器中用边框形状的更改标记进行标记:
要暂存粒度更改,例如单行而不是代码块,甚至是对单行的多个更改之一,请在“ 提交”工具窗口中,选择包含更改的文件,然后从上下文菜单中选择“比较 HEAD”、“暂存版本”和“本地版本”。Alt00
这将打开一个三向差异查看器,其中左窗格显示存储库版本,右窗格显示本地版本,中央窗格是一个功能齐全的编辑器,您可以在其中进行想要暂存的更改。
准备就绪后,按照本地提交更改中所述提交更改。
将更改推送到远程存储库
在推送更改之前,请与远程同步并确保存储库的本地副本是最新的以避免冲突。
PyCharm 允许您将更改从任何分支上传到其跟踪分支或任何其他远程分支。
执行以下操作之一:
要从当前分支推送更改,请按或选择 Git | 从主菜单推送。CtrlShift0K
要从任何具有远程分支的本地分支推送更改,请在“分支”弹出窗口中选择该分支,然后从操作列表中选择“推送” 。
“推送提交”对话框将打开,显示所有 Git 存储库(对于多存储库项目)并列出自上次推送以来在每个存储库的当前分支中进行的所有提交。
如果您的项目使用多个非同步控制的存储库,则默认情况下仅选择当前存储库(有关启用同步存储库控制的更多信息,请参阅版本控制设置:Git)。
提示
您可以按所选提交来显示额外信息,例如提交作者、时间、哈希值和提交消息。Ctrl0Q
如果存储库中没有遥控器,则会显示“定义远程”链接。单击此链接并在打开的对话框中指定远程名称和 URL。它将被保存,您可以稍后通过 Git 进行编辑 | 管理远程(有关更多信息,请参阅添加远程存储库)。
如果你想修改要推送的目标分支,可以点击分支名称。该标签会变成一个文本字段,您可以在其中键入现有分支名称或创建新分支。您还可以单击右下角的编辑所有目标链接来同时编辑所有分支名称。
请注意,您无法更改本地分支:将推送每个选定存储库的当前分支。
提示
您还可以通过按所选元素的或切换到编辑模式。EnterF2
如果您已经进行了一些提交但还不想推送到远程分支,请在Git工具窗口的“日志”选项卡中选择要推送的最后一个提交,然后从列表中选择“将所有内容推送到此处...”选项行动。
“推送提交”对话框将打开,显示直到所选提交哈希的所有提交。
如果您想在推送更改之前预览更改,请选择所需的提交。右侧窗格显示所选提交中包含的更改。您可以使用工具栏按钮检查提交详细信息。
如果提交的作者与当前用户不同,则该提交将标有星号。
提示
如果您选择整个存储库,所有提交的所有文件将在右窗格中列出。
如果在多次提交中修改了同一文件,则当您选择这些提交或整个存储库时,该文件只会列出一次,并且如果您为此文件调用差异查看器,则所有更改都将被压缩在一起。
准备好后单击“推送”按钮,然后从下拉菜单中选择要执行的操作:“推送”或“强制推送”(相当于
push --force-with-lease
)。仅当当前分支未在受保护的分支字段中列出时(请参阅版本控制设置:Git),这些选择选项才可用,否则,您只能执行该
push
操作。
如果推送被拒绝,请更新您的工作副本
如果由于工作副本已过时而拒绝推送,PyCharm 将显示“推送被拒绝”对话框,前提是未选择“设置”对话框的Git 设置页面中的“如果当前分支的推送被拒绝则自动更新”选项。请执行下列操作:
如果您的项目使用多个 Git 存储库,请指定要更新其中的哪个。如果您想要更新所有存储库,无论推送是否被拒绝,请选择更新所有存储库选项。如果清除此选项,则仅更新受影响的存储库。
如果您希望 PyCharm 在下次使用您在此对话框中选择的更新方法拒绝推送时静默应用更新过程,请选择记住更新方法选项并在将来静默更新选项。
离开此对话框后, “设置”对话框的Git 设置页面中的“如果当前分支的推送被拒绝,则自动更新”复选框将被选中,并且应用的更新方法将成为默认方法。
要更改更新策略,请取消选择此选项以在下次当前分支的推送被拒绝时调用“推送被拒绝”对话框,应用不同的更新过程,然后再次选择“记住更新方法选择”选项。
什么时候需要使用强制推送?
当您运行push时,如果远程存储库中有您丢失的更改并且您将用存储库的本地副本覆盖,Git 将拒绝完成操作。通常,您需要执行拉取以与远程同步,然后再使用更改进行更新。
该--force push
命令禁用此检查并允许您覆盖远程存储库,从而擦除其历史记录并导致数据丢失。在幕后,当您选择强制推送时,PyCharm 会执行该push --force-with-lease
操作,这是一个更安全的选项,可帮助您确保不会覆盖其他人的提交(有关推送选项的更多详细信息,请参阅git Push )。
您可能仍需要执行的一种可能情况--force push
是,您对推送的分支进行变基,然后想要将其推送到远程服务器。在这种情况下,当您尝试推送时,Git 将拒绝您的更改,因为远程引用不是本地引用的祖先。如果您在这种情况下执行拉取,您最终将得到分支的两个副本,然后需要合并它们。
感谢您的反馈意见!