【发布时间】:2021-12-23 06:42:10
【问题描述】:
在几年前的上一份工作中,我们使用 git 和一个(旧)插件,称为“git up”。
https://github.com/aanand/git-up
“不再维护或支持此插件。”
更新您的工作区曾经非常容易:
只需输入“git up”,查看哪些文件有冲突,编辑这些文件以解决冲突,执行“git add”,就完成了。
我现在在另一家公司工作。他们今年早些时候开始使用 git。 我们没有一个清晰而简单的方法让每个人都可以更新我们的工作空间。 我想介绍一种非常简单的方法来更新您的工作区。 尽可能简单。没有提交,没有合并。
似乎最简单的方法是使用带有 --rebase 和 --autostash 标志的“git pull”。 您可以通过在 .gitconfig 文件中设置这些值来执行相同操作。 或使用别名:
git config --global alias.up '!git fetch && git rebase --autostash origin'
这有点工作。 当没有冲突时,存储会自动弹出。 除了输入“git up”或“git pull --rebase --autostash”之外,我不需要做任何事情。
有一个问题。 当发生冲突时,git 拒绝将存储应用回我的工作区。 它说:
Applying autostash resulted in conflicts.
Your changes are safe in the stash.
You can run "git stash pop" or "git stash drop" at any time.
Successfully rebased and updated refs/heads/main.
$ git stash list
stash@{0}: autostash
$
当我然后键入“git stash pop”时,存储会弹出,我的本地更改会自动再次编辑到我的工作区中(使用通常的 >>>> 和
注意,当我更改了远程存储库上也更改的文件时,git 总是拒绝自动弹出存储。不仅存在真正的冲突(在同一行上进行更改)。但是,当我的更改远不及远程存储库的更改时。这让我怀疑我看到的行为真的不是故意的。
但是为什么 --autostash 不会自动弹出存储? 我与公司的 git 支持人员进行了交谈。 他们还希望存储自动弹出。 即使有冲突。 我做了一些谷歌搜索。我发现没有任何迹象表明存储不应自动弹出。
所以我的问题: 我能期待什么? 当我使用 --autostash 时,stash 是否应该总是自动弹出? 还是我看到的行为正常? 这是一个错误吗? 我们本地的 git 团队是否更改了可执行文件或全局配置中的某些内容? (他们说他们没有)。
行为与 2.26.2 和 2.33 相同。谢谢。
【问题讨论】: