Git 混淆(“更新”和“拉取”)

pay*_*yne 9 git intellij-idea

我对如何正确使用 IntelliJ 的 VCS 选项感到有些困惑。

我们正在开发一个 Git 存储库,我想了解如何以尽可能少的步骤执行以下操作:

  1. 暂存并提交(提示我输入“提交消息”)
  2. 拉/推和合并(如果冲突不在同一行,则自动解决在同一类中发生的冲突)

事实上,如果两个不同的人在同一个班级工作,有时如果两个人没有在班级的同一部分工作,显然应该接受合并。然而到目前为止,我总是不得不指定我希望在这些情况下发生合并的方式。

我已经阅读了一些关于“更新”选项的内容,但我不确定我是否真的理解它到底做了什么。它执行拉取和合并吗?

Twi*_*wiN 15

您问了 3 个不同的问题,但我将重点关注最后一个(更新选项)。

首先,我想指出标题 ( Git confusion (“Update” and “Pull”)) 与您正在寻找的答案不匹配。Update不是 git 命令——update您所指的是 IntelliJ 的 git 集成提供的功能,它是更新策略(合并或变基)的快捷方式。

更新项目

选项

上面列出的每个选项对应一个更新策略:

合并

使用合并更新策略

git fetch
git merge
Run Code Online (Sandbox Code Playgroud)

或者

git pull
Run Code Online (Sandbox Code Playgroud)

变基

使用 rebase 更新策略

git fetch
git rebase
Run Code Online (Sandbox Code Playgroud)

或者

git pull --rebase
Run Code Online (Sandbox Code Playgroud)

如果您想了解合并和变基的区别,建议您阅读这篇文章:合并与变基

分支默认

使用分支默认更新策略

以上适用于您在.git/config配置文件中为指定分支设置的任何更新策略。


至于Using Stashand Using Shelve,我自己从来没有使用过搁置,但它似乎与 git 相同,stash只是它由 IntelliJ 而不是 git 管理。


注意:要指定,如果您master从远程存储库获取分支,则需要origin master在上述每个命令的末尾添加(例如git pull origin mastergit pull --rebase origin master)。


因此,要回答您的问题,根据您选择的选项,Update使用merge更新策略(git pull git fetch+ git merge)或rebase更新策略(git pull --rebase git fetch+ git rebase)。

参考