git 的新手,为什么我在开发分支上看到我的更改,即使我将它们暂存到功能分支上?
New to git, why I see my changes on develop branch even if I stage them on feature branch?
我是 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
现在我需要在开发分支上工作,所以我切换到它,我使用 Sourcetree 作为 git GUI,然后双击开发:
我原以为功能分支上隐藏文件的更改对开发不可见,但似乎这些更改也存在于开发中:
$ 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
我做错了什么?
您暂存的更改未被隐藏。他们为提交做好了准备。在分支之间切换时,任何未提交或未隐藏的更改都将保留在您的工作区域中,并且当 Git 可以执行切换到另一个分支而不覆盖您更改的文件时,它将允许您这样做。
如果您不想随身携带更改,则必须:
- 最佳选择:首先将它们提交到您的功能分支以清理您的工作区域
- 不错的选择,但有一些缺点:把它们藏起来并清理你的工作区域
- 最坏的情况:创建一个新的临时分支,在那里提交您的更改,稍后再挑选回来。
然后切换到另一个分支。
有些客户会请您代为保管。我不想这样做,因为当我切换回来时很容易忘记隐藏的更改。
我要做的不是隐藏,而是在功能分支上提交我的更改,最好有一个非常清晰的提交消息来解释这些还没有准备好,然后,当我回到那个分支时我可以或者:
- 修改提交以在推送它们之前向其添加其他更改
- 对更改进行交互式 rebase 以及其他更改,以在推送之前清理本地历史记录
- 执行
git reset --soft HEAD~1
撤消临时提交,但保留其更改,然后对其进行更多处理并稍后在新提交中再次提交。
只要您不将更改推送到远程服务器,您就可以调整本地历史记录,直到它看起来像您想要的那样。
我是 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
现在我需要在开发分支上工作,所以我切换到它,我使用 Sourcetree 作为 git GUI,然后双击开发:
我原以为功能分支上隐藏文件的更改对开发不可见,但似乎这些更改也存在于开发中:
$ 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
我做错了什么?
您暂存的更改未被隐藏。他们为提交做好了准备。在分支之间切换时,任何未提交或未隐藏的更改都将保留在您的工作区域中,并且当 Git 可以执行切换到另一个分支而不覆盖您更改的文件时,它将允许您这样做。
如果您不想随身携带更改,则必须:
- 最佳选择:首先将它们提交到您的功能分支以清理您的工作区域
- 不错的选择,但有一些缺点:把它们藏起来并清理你的工作区域
- 最坏的情况:创建一个新的临时分支,在那里提交您的更改,稍后再挑选回来。
然后切换到另一个分支。
有些客户会请您代为保管。我不想这样做,因为当我切换回来时很容易忘记隐藏的更改。
我要做的不是隐藏,而是在功能分支上提交我的更改,最好有一个非常清晰的提交消息来解释这些还没有准备好,然后,当我回到那个分支时我可以或者:
- 修改提交以在推送它们之前向其添加其他更改
- 对更改进行交互式 rebase 以及其他更改,以在推送之前清理本地历史记录
- 执行
git reset --soft HEAD~1
撤消临时提交,但保留其更改,然后对其进行更多处理并稍后在新提交中再次提交。
只要您不将更改推送到远程服务器,您就可以调整本地历史记录,直到它看起来像您想要的那样。