提交并推送更改到 Git 仓库
一旦您已经 将新文件添加到 Git 仓库 ,或修改了已在 Git 版本控制下的文件,并且对它们的当前状态感到满意,您就可以分享您的工作成果。 这包括 在本地提交它们以记录仓库的快照到项目或目录历史记录中,然后 推送它们到远程仓库,以便它们对其他人可用。
设置您的 Git 用户名
Git 需要知道您的用户名以便将提交与身份关联。 如果您尚未设置用户名,DataGrip 将在您第一次尝试提交更改时提示您进行指定。
打开 Terminal 并执行以下命令之一:
要为您机器上的每个 Git 仓库设置名称,请使用
$ git config --global user.name "John Smith"要为单个存储库设置名称,请使用
$ git config user.name "John Smith"
在本地提交更改
打开 Commit 工具窗口 Alt+0:

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

提供以下选项:
Author :如果您正在提交其他人作出的更改,您可以指定这些更改的作者。
签署提交 :选择是否要签署您的提交,以证明您即将登记的更改是由您完成的,或者您对所提交的代码承担责任。
启用此选项时,以下行会自动添加到提交消息的末尾: 签署者:<用户名>
在 提交检查 区域,选择您希望 DataGrip 在提交选定文件到本地仓库之前执行的操作。
提供以下选项:
在 高级提交检查 区域,提供以下选项:
提交完成后运行高级检查 :启用此选项以在提交完成 后运行所选的高级提交检查。
启用此选项后,若某些高级提交检查失败,仍然会提交更改。
分析代码(A) :在提交时分析已修改的文件。 点击 选择配置文件 以选择一个 检查配置文件 ,IDE 将从中运行检查。
检查 TODO :查看符合指定过滤器的 TODO项目。 点击 配置 以选择 现有 TODO 筛选器 ,或打开 TODO 设置页面并定义一个新的筛选器以应用。
Run Tests: 将测试作为提交检查运行。 点击 选择配置 附近的 Run Tests 并选择您想要运行的配置。
当您准备好时,点击 Commit 或 提交并推送 (Ctrl+Alt+K) 以在提交后立即将更改推送到远程存储库。 您将能够在推送到远程之前查看当前提交及所有其他提交。
提交部分文件
有时候,当您对特定任务进行更改时,您还会对同一文件应用其他不相关的代码修改。 将所有此类更改包含在一个提交中可能不是一个好的选择,因为这样更难以审核、 revert、 cherry-pick等。
DataGrip 允许您通过以下其中一种方式单独提交这些更改:
在 选择修改后的代码块和行 您想要在 提交更改 对话框中立即提交,并将其他更改保留以便稍后提交。
编辑代码时,您可以 将不同的代码块放入不同的变更列表中 ,然后分别提交这些变更列表。
选择您想要提交的块和特定行
从编辑器提交选定的更改
如果您已经提交了更改,然后发现忘记了一些内容,您可以直接从编辑器快速提交任何更新。
当您在编辑器中更改文件时,请点击边栏中的相应 更改标记。
在出现的工具栏中,输入提交消息并单击
提交此更改。

在提交消息字段中单击
修改 以将本地更改附加到最新的提交。
将更改放入不同的更改列表
当您在编辑器中更改文件时,请点击边栏中的相应 更改标记。
在出现的工具栏中,选择修改后的代码块的目标更改列表(或创建一个新的更改列表):

分别提交每个更改列表。
自定义查看本地更改的方式
DataGrip 提供了不同的设置,供您在提交前自定义查看本地更改的工作流程。
自定义提交工具窗口
Commit 工具窗口 Alt+0 的位置和行为可以根据您的首选工作流程进行更改。
提交界面可以作为一个单独的窗口打开,看起来像一个对话框,但仍然是非阻塞(或非模态)的。
在 Commit 工具窗口 Alt+0 中,单击
选项 并选择 。 要始终将窗口保持在 IDE 前面,请选择 。
您可以设置 Commit 工具窗口,使其作为一个包含本地更改列表的窗口工作,并在准备提交更改时打开提交控件(使用
Commit 或 Ctrl+K)。在 中,选中 切换提交控件 复选框。
Commit 工具窗口可以成为 Git 工具窗口 Alt+9 中 日志 选项卡中的 本地更改 选项卡。
在 中,清除 启用“提交”工具窗口 复选框。
自定义 Diff Viewer 的行为
在 Commit 工具窗口 Alt+0 中,有一个更改文件的列表。 双击已更改的文件可以打开 Diff 查看器或源文件。
单击
选项 ,选择 双击时显示 ,然后选择首选选项:
差异 始终在双击更改的文件时打开 Diff Viewer,以便您查看更改。
来源 始终打开文件本身,以便您编辑它。
您还可以设置 Diff Viewer 在编辑器中或单独的窗口中打开,具体取决于以下设置之一:
在 Diff Viewer 中,单击工具栏上的
设置 并选择 在单独的窗口中显示差异。
在 中,清除 作为编辑器标签页打开差异 复选框。
使用 Git 暂存区提交更改
如果您更习惯于 暂存更改以进行提交,而不是使用 更改列表 (其中修改的文件会自动暂存),请按 Ctrl+Alt+S 打开设置并选择 版本控制 | Git ,然后选中 启用暂存区域 复选框。

使用暂存区可以让您轻松地将对同一文件的更改单独提交(包括重叠的更改),并无需从编辑器切换焦点即可查看哪些更改已经暂存。
准备提交的更改
请执行以下操作之一:
要暂存整个文件,请在 Commit 工具窗口 Alt+0 中,选择此文件并单击其右侧的
或按 Ctrl+Alt+A。

要将文件内的特定片段暂存,请在编辑器中点击修改片段旁边页边空白中的 更改标记 ,然后点击 阶段。

在编辑器中,已暂存的更改(包括从 DataGrip 外暂存的更改)标记为空心的更改标记:

要暂存细粒度更改(如单行而不是代码块,甚至是单行中的多个更改之一),请在 Commit 工具窗口 Alt+0 中,选择包含更改的文件并从上下文菜单中选择 比较HEAD 版本、暂存版本和本地版本。
这将打开一个三方 差异查看器 ,左窗格显示版本库版本,右窗格显示本地版本,中间窗格是一个功能齐全的编辑器,您可以在其中进行想要暂存的更改。

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

