提交并推送更改到 Git 存储库
在您将新文件添加到 Git 存储库或修改了已在 Git 版本控制下的文件并且您对它们的当前状态感到满意之后,您可以分享您的工作结果。这包括在本地提交它们以将存储库的快照记录到项目历史记录中,然后将它们推送到远程存储库,以便其他人可以使用它们。
设置你的 Git 用户名
Git 需要知道您的用户名才能将提交与身份相关联。如果您尚未设置用户名,PhpStorm 将在您首次尝试提交更改时提示您指定它。
打开终端并执行以下命令之一:
要为机器上的每个 Git 存储库设置名称,请使用
$ git config --global user.name "John Smith"
要为单个存储库设置名称,请使用
$ git config user.name "John Smith"
在本地提交更改
打开位于左侧的垂直 提交工具窗口:Alt+0
当您的更改准备好提交时,请选择相应的文件或整个更改列表。
如果您按Ctrl+K,将选择整个活动更改列表。
您还可以在Unversioned Files节点下选择文件——PhpStorm 将一步完成并提交这些文件。
如果您想将本地更改附加到最新提交而不是创建单独的提交,请选择“修改”选项。
输入提交消息。您可以单击以从最近提交消息列表中进行选择。
您还可以稍后在推送提交之前编辑提交消息。
如果您需要执行预提交检查、提交后将文件上传到服务器或使用高级选项提交,请单击:
可以使用以下选项:
作者:如果您正在提交其他人所做的更改,您可以指定这些更改的作者。
Sign-off commit:选择是否要签署提交以证明您即将签入的更改已由您完成,或者您对所提交的代码负责。
启用此选项后,以下行会自动添加到提交消息的末尾:签名者:<用户名>
在Before Commit区域中,选择您希望 PhpStorm 在将所选文件提交到本地存储库之前执行的操作。
可以使用以下选项:
重新格式化代码:根据项目代码样式设置执行代码格式化。
重新排列代码:根据排列规则偏好重新排列您的代码。
优化导入:删除多余的导入语句。
分析代码:在提交之前分析修改过的文件。单击选择配置文件以选择IDE 将运行检查的检查配置文件。
检查 TODO (<filter name>):查看与指定过滤器匹配的TODO 项。单击配置以选择现有的 TODO 过滤器,或打开TODO 设置页面并定义要应用的新过滤器。
清理:从代码清理检查中批量应用快速修复。单击选择配置文件以选择IDE 将运行检查的配置文件。
运行测试:运行测试作为预提交检查。单击运行测试附近的选择配置,然后选择要运行的配置。
更新版权:根据选定的版权配置文件-范围组合添加或更新版权声明。
在“提交后”区域中,您可以选择用于将提交的文件上传到本地或远程主机、挂载的磁盘或目录的服务器访问配置或服务器组。有关详细信息,请参阅部署您的应用程序。
可以使用以下选项:
准备好后,单击Commit或Commit and Push ( Ctrl+Alt+K) 以在提交后立即将更改推送到远程存储库。在将它们推送到远程之前,您将能够查看当前提交以及所有其他提交。
提交文件的一部分
有时,当您进行与特定任务相关的更改时,您还会应用影响同一文件的其他不相关的代码修改。将所有此类更改包含在一个提交中可能不是一个好的选择,因为审查、还原、挑选它们等会更加困难。
PhpStorm 允许您通过以下方式之一单独提交此类更改:
选择修改后的代码块,您希望将其包含在“提交更改”对话框中的提交权中,并保留其他更改待处理,以便您稍后提交它们。
当您编辑代码时,将不同的代码块即时放入不同的更改列表中,然后分别提交这些更改列表。
选择要提交的块
打开垂直 提交工具窗口Alt+0。
要显示存储库版本与所选文件的本地版本之间的差异,请在 提交工具窗口Alt+0中,单击工具栏上的 或按Ctrl+D。
选中您要提交的每个修改或新添加的代码块旁边的复选框,并保持其他更改未选中:
单击提交。未选择的更改将保留在当前更改列表中,以便您可以单独提交它们。
将更改放入不同的更改列表
在编辑器中对文件进行更改时,单击装订线中相应的更改标记。
在出现的工具栏中,选择修改后的代码块的目标变更列表(或创建一个新的变更列表):
分别提交每个更改列表。
使用 Git 暂存区提交更改
如果您更习惯于提交暂存更改的概念,而不是使用自动暂存已修改文件的更改列表,请选择版本控制 | 中的启用暂存区域选项。IDE设置的GitCtrl+Alt+S页面。
提交工具窗口现在如下所示:
使用暂存区域可以让您轻松地分别提交对同一文件的更改(包括重叠更改),并查看哪些更改已经暂存,而无需从编辑器切换焦点。
提交的阶段更改
执行以下操作之一:
准备就绪后,按照在本地提交更改中所述提交更改。
将更改推送到远程存储库
在推送您的更改之前,请与远程同步并确保您的存储库的本地副本是最新的以避免冲突。
PhpStorm 允许您将更改从任何分支上传到其跟踪的分支或任何其他远程分支。
执行以下操作之一:
要从当前分支推送更改,请按Ctrl+Shift+K或选择 从主菜单
要从具有远程的任何本地分支推送更改,请在“分支”弹出窗口中选择此分支,然后从操作列表中选择“推送”。
Push Commits 对话框打开,显示所有 Git 存储库(用于多存储库项目)并列出自上次推送以来在每个存储库的当前分支中所做的所有提交。
如果您的项目使用了多个不同步控制的仓库,则默认只选择当前仓库(关于如何启用同步仓库控制的详细信息,请参阅版本控制设置:Git)。
如果存储库中没有远程,则会出现定义远程链接。单击此链接并在打开的对话框中指定远程名称和 URL。它将被保存,您可以稍后通过 (有关详细信息,请参阅添加远程存储库)。
如果要修改要推送的目标分支,可以点击分支名称。标签变成一个文本字段,您可以在其中键入现有分支名称或创建新分支。您还可以单击右下角的编辑所有目标链接以同时编辑所有分支名称。
请注意,您不能更改本地分支:将推送每个选定存储库的当前分支。
如果您已经进行了一些提交但还不想推送到远程分支,请在Git工具窗口的“日志”选项卡中选择您要推送的最后一个提交,然后从操作列表中选择“全部推送到此处”选项.
Push Commits对话框打开,显示直到选定提交哈希的所有提交。
如果您想在推送更改之前预览更改,请选择所需的提交。右侧窗格显示所选提交中包含的更改。您可以使用工具栏按钮来检查提交详细信息。
如果提交的作者与当前用户不同,则此提交用星号标记。
准备好后单击Push按钮,然后从下拉菜单中选择要执行的操作:Push或Force push(相当于
push --force-with-lease
)。这些选项仅在当前分支未列在受保护的分支字段中时可用(请参阅版本控制设置:Git),否则,您只能执行该
push
操作。
如果推送被拒绝,请更新您的工作副本
如果由于您的工作副本已过时而拒绝推送,PhpStorm 将显示Push Rejected对话框,前提是未选择Settings/Preferences对话框的Git 设置页面中的Auto-update if push of current branch was denied选项。请执行下列操作:
如果您的项目使用多个 Git 存储库,请指定要更新其中的哪些。如果要更新所有存储库,无论推送是否被拒绝,请选择更新所有存储库选项。如果清除此选项,将仅更新受影响的存储库。
如果您希望 PhpStorm 下次使用您在此对话框中选择的更新方法拒绝推送时静默应用更新过程,请选择记住更新方法选项并在将来静默更新选项。
离开此对话框后,设置/首选项对话框的Git 设置页面中的自动更新如果当前分支的推送被拒绝复选框将被选中,并且应用的更新方法将成为默认方法。
要更改更新策略,请取消选择此选项以在下一次拒绝当前分支的推送时调用Push Rejected对话框,应用不同的更新过程,然后再次选择记住更新方法选项选项。
我什么时候需要使用强制推送?
当您运行push时,如果远程存储库有您丢失的更改并且您将使用存储库的本地副本覆盖,Git 将拒绝完成操作。通常,您需要先执行pull以与远程同步,然后再使用您的更改进行更新。
该--force push
命令禁用此检查并允许您覆盖远程存储库,从而擦除其历史记录并导致数据丢失。在幕后,当您选择强制推送时,PhpStorm 会执行push --force-with-lease
操作,这是一个更安全的选项,可帮助您确保不会覆盖其他人的提交(有关推送选项的更多详细信息,请参阅git push)。
您可能仍需要执行的一种可能情况--force push
是,当您对推送的分支进行变基,然后想要将其推送到远程服务器时。在这种情况下,当您尝试推送时,Git 将拒绝您的更改,因为远程 ref 不是本地 ref 的祖先。如果您在这种情况下执行拉取操作,您最终会得到两个分支副本,然后您需要合并它们。