gpt4 book ai didi

git - 如何正确切换 GIT 分支并返回到以后的工作。

转载 作者:太空狗 更新时间:2023-10-29 14:31:06 26 4
gpt4 key购买 nike

我仍在尝试在我的本地机器上处理多个分支并能够来回切换。

我正在处理 Branch X,更新了 4 个文件。现在,我被要求换档并在分支 Y 上工作。我还没准备好 push 分支 X 中的更改。我该怎么办?

过去,我认为这就是 stash 的用途。 git stash,检查分支 Y,然后返回分支 X 和 git stash apply,我应该回到开始的地方。

但是,我最近这样做了,结果搞砸了:

  • git stash 分支 X
  • check out 分支Y,修改文件
  • git stash 分支 Y
  • 检查了分支 X
  • git stash apply 在分支 X 上……据我所知,我在分支 Y 的存储已应用到分支 X。

所以我很困惑。上面发生的事情是应该发生的吗?我应该在这个过程中做一些提交吗?

最佳答案

请记住,使用 Git,您的更改和分支都是您的,直到您将它们推送到其他地方。因此,在完成大量工作后立即提交本地更改是绝对安全的,甚至是一个好主意(您始终可以rebase 并稍后压缩它们)。

在你的情况下,这是你可以做的(即使分支 X 没有“准备好”):

git add .
git commit -a -M'WIP: (describe where you are)'
git checkout Y

分支 X 在您的 Remote 上保持原样,但您的本地工作是安全的。除非您将其推送到远程,否则没有其他人会看到它。

如果你想让 X 保持在它的 last-clean 状态,只需检查一个新分支并向它添加你的提交:

git checkout -b pick-a-descriptive-name-for-the-branch
git commit ... # commits land on this new branch
git checkout Y

现在 X 与您开始进行最新的一组更改之前一样,pick-a-descriptive-name-for-the-branch 具有您所做的更改位于中间,Y 不受影响。

当您准备好时,您可以轻松地cherry-pick pick-a-descriptive... 上的最后一次提交到X继续工作:

git checkout pick-a-descriptive-name-for-the-branch
git log -1 # Note the SHA1 of the commit, which is your work in progress
git checkout X
git cherry-pick -n SHA1

这将获取上次在 pick-a-descriptive-name-for-the-branch 上提交的更改,并将它们添加到 X 而不提交它们。

关于git - 如何正确切换 GIT 分支并返回到以后的工作。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53787293/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com