gpt4 book ai didi

git - git 的新手,为什么我在开发分支上看到我的更改,即使我在功能分支上暂存它们?

转载 作者:行者123 更新时间:2023-12-01 21:26:19 24 4
gpt4 key购买 nike

我是 git 的新手。

我遵循 git-flow 分支模型,所以我有分支 master 和 develop ,每次我需要一个新功能时,我都会打开一个新功能分支。

我对功能分支中的几个文件进行了一些更改并暂存了它们,但尚未提交,因为更改尚未经过测试:

$ git status
On branch feature/ParamConfigFaultCollection
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: IOLSE_User_Objs.h
modified: data.c

现在我需要在分支 develop 上工作,所以我切换到它,我使用 Sourcetree 作为 git GUI 并双击 develop: enter image description here

我原以为功能分支上的 stash 文件中的更改对开发不可见,但似乎这些更改也存在于开发中:

$ git status
On branch develop
Your branch is up to date with 'origin/develop'.

Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: IOLSE_User_Objs.h
modified: data.c

我做错了什么?

最佳答案

您暂存的更改不会被 stash 。他们为提交做好了准备。在分支之间切换时,任何未提交或未 stash 的更改都将保留在您的工作区域中,并且当 Git 可以执行切换到另一个分支而不覆盖您更改的文件时,它将允许您这样做。

如果您不想随身携带更改,则必须:

  • 最佳选择:首先将它们提交到您的功能分支以清理您的工作区域
  • 不错的选择,但有一些缺点:将它们藏起来并清洁您的工作区域
  • 最坏的情况:创建一个新的临时分支,在那里提交您的更改,稍后再挑选回来。

然后切换到另一个分支。

有些客户会请您代为保管。我不想这样做,因为当我切换回来时很容易忘记 stash 的更改。

我要做的不是 stash ,而是在功能分支上提交我的更改,最好有一个非常清晰的提交消息来解释这些还没有准备好,然后,当我回到那个分支时,我可以:

  • 修改提交以在推送之前向其添加其他更改
  • 对更改进行交互式 rebase 以及其他更改,以在推送之前清理本地历史记录
  • 执行 git reset --soft HEAD~1 撤消临时提交,但保留更改,然后对其进行更多处理,稍后在新提交中再次提交。

只要您不将更改推送到远程服务器,您就可以调整本地历史记录,直到它看起来像您想要的那样。

关于git - git 的新手,为什么我在开发分支上看到我的更改,即使我在功能分支上暂存它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63129442/

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