Git与远程仓库同步
在您可以通过将更改推到上游(upstream)来共享工作结果之前,您需要让Git与远程仓库进行同步,以确保项目的本地副本是最新的。您可以通过以下方式之一进行此操作:提取更改、提取更改、更新项目。
获取更改
当您从上游获取更改时,自上次与远程存储库同步以来所做的所有提交的新数据都会下载到本地副本中。这些新数据没有集成到您的本地文件,并且更改不适用于您的代码。
获取的更改存储为远程分支,这使您有机会在将它们与文件合并之前对其进行检查 。由于提取不会影响您的本地开发环境,因此这是获取对远程仓库的所有更改的更新的安全方法。
要获取更改,请从主菜单中选择VCS | Git | 获取。
拖动更改
从远程存储库中拖动更改是获取和随后合并更改的方便快捷的快捷方式。当您拖动时,您不仅要下载新数据,还要将其集成到项目的本地工作副本中。
要进行拖动更改,请执行以下操作:
- 从主菜单中选择:VCS | Git | 拖动。将打开 "拉动更改" 对话框。
- 如果您的项目有多个Git存储库,请从Git Root下拉列表中选择要更新的本地存储库的路径 。
- 如果您为存储库配置了多个远程数据库,请在Remote下拉列表中选择要从中提取数据的远程的URL 。
- 选择您想要从中获取更改的分支并合并到当前检出的分支中。
- 从“ 策略”下拉列表中,选择将用于解决合并过程中发生的冲突的合并策略。
- 如有必要,请选择以下内容:
- No commit:如果您不希望 IntelliJ IDEA 自动提交合并结果,请选择此选项。在这种情况下,您可以检查它们并在必要时进行调整。
- No fast forward:选择此选项可生成合并提交, 即使合并被解析为 fast-forward (即只更新了分支指针)。
- Squash commit:选择此选项可以在当前分支的顶部创建一个提交,而不是合并一个或多个分支。它生成工作树和索引状态,就好像一个真正的合并发生了,但它实际上并没有提交或移动HEAD。
- Add log information:如果您希望IntelliJ IDEA使用除合并分支名称之外的实际提交中的单行描述来填充日志消息,请选择此选项。
- 点击Pull以获取并应用所选远程存储库中的更改。
更新项目
如果您有多个项目根目录,或者想在每次与远程仓库同步时从所有分支获取更改,则可能会发现更新项目是一个更方便的选项。
当您执行更新操作时,IntelliJ IDEA会将更改拖动到所有项目的根和分支,并将它们合并到本地工作副本中(相当于“pull”)。
要更新您的项目,请执行以下操作:
如果您选择不在将来显示“ 更新项目”对话框,然后在某个时刻想要修改默认更新策略,请在:设置| 版本控制| 确认中选择“更新”,当这些命令被调用时,它在 "显示选项" 对话框中,并在下次执行更新时修改更新策略。
- 从主菜单中选择:VCS | 更新项目或按Ctrl+T。将打开 "更新项目" 对话框。
- 选择更新类型(该策略将应用于Git版本控制下的所有根目录):
- 合并(Merge):选择此选项可在更新期间执行合并。这相当于运行 git 获取,然后是 git 合并,或者是 git no-rebase。
- Rebase:选择此选项可在更新期间执行rebase。这相当于运行git获取,然后是git rebase,或者git pull --rebase(所有本地提交将放在更新的上游头顶部)。
- 分支默认值:如果您想为不同分支应用不同的更新策略,请选择此选项。您可以在.git/config 配置文件的branch.<name>部分指定每个分支的默认更新类型。
- 在更新之前清除工作副本时指定一个将用于保存更改的方法,以便在更新完成后可以恢复未提交的更改:
- 使用Stash:选择此选项可以将本地更改保存在git stash中。如果您需要在IntelliJ IDEA之外应用具有stash更改的修补程序,这是非常有用的,因为它们是由Git本身生成的。
- 使用Shelve:选择此选项可将本地更改放置到shelve上。通过IntelliJ IDEA完成shelve,通常在IntelliJ IDEA内部应用shelve更改生成的补丁。