提交并推送更改至 Git 仓库
在 将新文件添加到 Git 仓库或修改已在 Git 版本控制下的文件之后,如果您对其当前状态满意,便可共享您的工作成果。 这包括先在本地 提交这些更改,以便将仓库的快照记录到项目历史中,然后 推送到远程仓库,从而使其他人也可以访问这些更改。
设置您的 Git 用户名
Git 需要知道您的用户名,以便将提交与身份关联。 如果尚未设置用户名,WebStorm 会在您首次尝试提交更改时提示您指定用户名。
打开 终端并执行以下任一命令:
要为您计算机上的所有 Git 仓库设置用户名,请使用
$ git config --global user.name "John Smith"要为单个仓库设置用户名,请使用
$ git config user.name "John Smith"
本地提交更改
打开位于左侧的垂直选项卡 提交 工具窗口 Alt+0:

准备好提交更改后,选择相应的文件或整个更改列表。
如果按下 Ctrl+K ,则将选择整个活动更改列表。
您也可选择 未进行版本管理的文件 节点下的文件 — WebStorm 将在一个步骤中暂存并提交这些文件。
如果希望 将本地更改追加到最新的提交而不是创建单独的提交,请选择 修补 选项。
输入提交消息。 您可以点击
,从最近的提交消息列表中进行选择。
在尚未推送提交之前,您也可以 编辑提交消息。
如果需要执行提交检查、在提交后将文件上传到服务器,或使用高级选项提交,请点击右下角的
或按下 Ctrl+O:

可用的选项如下:
作者 :如果您正在提交其他人所做的更改,可在此指定这些更改的作者。
签署提交 :选择该项用于签署提交声明,以确认这些更改是由您完成,或您对所提交代码承担责任。
启用该选项后,将在提交消息末尾自动添加如下行: Signed off by: <username>
在 提交检查 区域,选择要在将所选文件提交到本地仓库之前由 WebStorm 执行的操作。
可用的选项如下:
在 高级提交检查 区域中,提供以下选项:
提交完成后运行高级检查 :启用此选项可在提交完成 之后运行所选的高级提交检查。
启用此选项后,即使某些高级提交检查未通过,修改也仍将被提交。
分析代码(A) :提交过程中分析已修改的文件。 单击 选择配置方案 以选择 IDE 将运行检查所使用的 检查配置文件。
检查 TODO :查看与指定筛选器匹配的 TODO 条目。 单击 配置 选择一个 已有 TODO 筛选器 ,或打开 TODO 设置页面以定义并应用新筛选器。
Run Tests: 将测试作为提交检查执行。 在 Run Tests 附近单击 选择配置 ,然后选择要运行的配置。
在 提交后 区域,您可以选择用于将已提交文件上传到本地主机、远程主机、挂载磁盘或目录的 服务器访问配置或 服务器组。 有关更多信息,请参见 部署您的应用。
可使用以下选项:
准备就绪后,单击 提交 或 提交并推送 (Ctrl+Alt+K ),即可在提交完成后立即将更改推送到远程版本库。 您可以在推送前审查当前提交以及所有其他提交。
提交文件的部分更改
有时,当您进行与特定任务相关的更改时,也会应用影响同一文件的其他无关代码修改。 将所有此类更改包含在一个提交中可能不是一个好主意,因为这会使审查、 revert、 cherry-pick等操作变得更加困难。
WebStorm 允许您通过以下方式之一分别提交这些更改:
在 提交更改 对话框中 选择要包含在提交中的修改代码块和代码行 ,其余更改将保留待处理状态,以便您稍后提交。
在编辑代码时, 即时将不同的代码块放入不同的更改列表 ,然后分别提交这些更改列表。
选择要提交的代码块和具体行
打开 提交 工具窗口 Alt+0。
要显示所选文件的本地版本与版本库版本之间的差异,在 提交 工具窗口 Alt+0 中,点击工具栏上的
或按下 Ctrl+D。
选中您希望提交的每个修改或新增的代码块旁边的复选框,未选中的更改将不会提交:

如果只想从某个块中提交特定行,请右键点击要包含的那一行并选择 拆分区块并将所选行包含到提交中。

或者,将鼠标悬停在边栏上,选择或清除要包含或排除在提交之外的行旁边的复选框。
点击 提交。 未选中的更改将保留在当前更改列表中,以便您单独提交这些更改。
从编辑器提交选中的更改
如果您已经提交了更改,然后意识到忘记了一些内容,您可以直接在编辑器中快速提交更新。
在编辑器中对文件进行更改时,点击边栏中相应的 更改标记。
在显示的工具栏中,输入提交消息并点击
提交此更改。

在提交消息字段中点击
修补 ,可将本地更改追加到最新的提交中。
将更改分配至不同的更改列表
在编辑器中对文件进行更改时,点击边栏中相应的 更改标记。
在显示的工具栏中,为修改的代码块选择目标更改列表(或创建一个新的更改列表):

分别提交每个更改列表。
自定义本地更改的审查方式
WebStorm 提供了多种设置,帮助您自定义在提交前审查本地更改的工作流。
自定义提交工具窗口
可以根据您的工作流程偏好更改 提交 工具窗口 Alt+0 的位置和行为。
提交界面可以作为一个独立窗口打开,外观类似对话框,但仍是非阻塞(非模态)的。
在 提交 工具窗口 Alt+0 中,单击
选项 并选择 。 要始终将窗口置于 IDE 之上,请选择 。
您可以将 提交 工具窗口设置为本地更改列表窗口,并在准备提交更改时打开提交控制(使用
提交 或 Ctrl+K)。在 中,选中 切换提交控件 复选框。
提交 工具窗口可以变为 本地更改 选项卡,位于 Git 工具窗口的 日志 选项卡中 Alt+9。
在 中,取消选中 启用“提交”工具窗口 复选框。
自定义 Diff 查看器的行为
在 提交 工具窗口 Alt+0 中,列出了已更改的文件。 双击更改的文件可以打开 Diff Viewer 或源文件。
单击
选项 ,选择 双击时显示 ,然后选择偏好的选项:
差异 以便在双击更改的文件时始终打开 Diff Viewer,从而查看更改内容。
源代码 以便始终打开文件本身以进行编辑。
您还可以通过以下设置将 Diff Viewer 配置为在编辑器或单独窗口中打开:
在 Diff Viewer 中,单击工具栏上的
设置 并选择 在单独的窗口中显示差异。
在 中,取消选中 作为编辑器标签页打开差异 复选框。
使用 Git 暂存区提交更改
如果您更习惯于使用 staging 更改进行提交,而不是使用自动暂存修改文件的 changelists ,请按 Ctrl+Alt+S 打开设置并选择 版本控制 | Git ,然后选中 启用暂存区域 复选框。

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

使用 staging 区域,您可以轻松将对同一文件的更改(包括重叠更改)分开提交,并在不中断编辑器焦点的情况下查看哪些更改已暂存。
暂存要提交的更改
请执行以下任一操作:
要将整个文件暂存,在 提交 工具窗口 Alt+0 中,选择该文件并单击其右侧的
,或按 Ctrl+Alt+A。

要暂存文件中的特定代码块,请在编辑器中单击修改代码块旁边边距处的 更改标记 ,然后单击 暂存。

已暂存的更改(包括从 WebStorm 外部暂存的更改)会在编辑器中以空心更改标记表示:

要将粒度更高的更改(如单行)而不是整个代码块暂存,或者暂存对同一行的多个更改中的某一个,在 提交 工具窗口 Alt+0 中,选择包含更改的文件并从上下文菜单中选择 比较HEAD 版本、暂存版本和本地版本。

将打开一个三方 Diff Viewer ,左侧窗格显示版本库版本,右侧窗格显示本地版本,中央窗格为功能完整的编辑器,您可以在其中进行要暂存的更改。

准备就绪后,请按照 本地提交更改 中所述提交更改。
推送更改至远程仓库
在推送更改前,请先 与远程同步 ,确保您的本地版本库副本是最新的,以避免冲突。
WebStorm 允许您将任何分支的更改上传到其 跟踪分支 或任何其他远程分支。
请执行以下任一操作:
要从 当前分支 推送更改,请按 Ctrl+Shift+K 或从主菜单中选择 。
要从拥有远程的任何本地分支推送更改,请在 分支 弹窗中选择该分支,并从操作列表中选择 推送。
推送提交对话框 将打开,显示所有 Git 版本库(适用于多版本库项目),并列出自上次推送以来每个版本库中当前分支所做的所有提交。
如果项目使用多个未同步控制的版本库,默认只会选择当前版本库(如需启用同步控制,请参阅 版本控制设置:Git)。
如果版本库中没有远程仓库,则会显示 定义远程 链接。 单击此链接,并在打开的对话框中指定远程名称和 URL。 远程地址将被保存,您可以稍后通过 进行编辑(更多信息请参阅 添加远程版本库)。
如果您希望修改要推送的目标分支,可以单击分支名称。 标签将变为一个文本字段,您可以在其中输入现有分支名称或创建新分支。 您还可以单击右下角的 编辑所有目标 链接,以同时编辑所有分支名称。
请注意,您无法更改本地分支:将推送每个选定版本库的当前分支。
如果您有一些已提交但暂不希望推送至远程分支的提交,请在 日志 选项卡中的 Git 工具窗口中选择您希望推送的最后一个提交,并在操作列表中选择 推送此前所有提交… 选项。
推送提交 对话框将打开,显示直到所选提交哈希值为止的所有提交记录。
如果您希望在推送前预览更改,请选择所需提交。 右侧窗格显示所选提交中包含的更改。 您可以使用工具栏按钮检查提交详细信息。
如果某次提交的作者与当前用户不同,则该提交会以星号标记。
准备就绪后,单击 推送 按钮,并从下拉菜单中选择要执行的操作: 推送 或 强制推送 (相当于
push --force-with-lease)。仅当当前分支未在 受保护分支 字段中列出时(请参阅 版本控制设置:Git ),这些选项才可用,否则只能执行
push操作。
推送被拒绝时更新您的工作副本
如果由于您的工作副本已过期而导致 推送 被拒绝,则 WebStorm 将显示 推送被拒 对话框,前提是在 Git 设置页的 设置 对话框中未选中 如果当前分支的推送被拒,则自动更新 选项。 请执行以下操作:
如果您的项目使用多个 Git 仓库,请指定您要更新哪些仓库。 如果希望更新所有存储库,无论是否存在被拒绝的 推送 ,请选择 更新所有版本库 选项。 如果未选中此选项,则只会更新受影响的存储库。
如果希望在下次推送操作被拒绝时,WebStorm 使用您在此对话框中选择的更新方法自动静默执行更新过程,请选中 记住更新方式选择并在未来自动更新 选项。
关闭此对话框后, 如果当前分支的推送被拒,则自动更新 复选框将在 Git 设置页的 设置 对话框中被选中,所应用的更新方法将成为默认方法。
如需更改更新策略,请取消选中该选项,以便在当前分支推送被拒绝时调用 推送被拒 对话框,应用不同的更新过程,然后再次选中 记住更新方式选择 选项。
请分别单击 变基 或 合并 按钮选择更新方法。
何时需要使用强制推送?
当您运行 推送 时,如果远程存储库中存在您本地副本缺失且将被覆盖的更改,Git 将拒绝完成操作。 通常,您需要执行 pull 来与远程存储库同步,然后再使用您的更改更新远程存储库。
--force push 命令会禁用此检查,并允许您覆盖远程存储库,从而清除其历史记录并导致数据丢失。 在后台,当您选择强制推送时,WebStorm 执行的是 push --force-with-lease 操作,这是一种更安全的选项,有助于确保不覆盖他人的提交(有关推送选项的详细信息,请参阅 git push)。
一种可能需要执行 --force push 的情况是,在您变基了已推送的分支之后,想要将其再次推送到远程服务器。 在这种情况下,当您尝试推送时,Git 会拒绝您的更改,因为远程引用不是本地引用的祖先。 如果在这种情况下执行 拉取 ,将会产生分支的两个副本,随后需要合并。