使用功能分支会使工作树变脏

问题描述 投票:0回答:1

我有一个“FeatureSubmission”分支,我应该在其中为我的存储库添加并提交最新功能。

                   --- Feature 2
                   |
---- master        |
 \                 |
  \..........................> FeatureSubmission.
              \
               \
                \--- Feature 1

我在黑白导航这些分支时遇到麻烦。

例如经过以下一系列事件后,

   git branch Feature1 FeatureSubmission
   git checkout Feature1
   # .. add some new files
   git add .
   git commit -m 'Feature1'
   git push origin Feature1

现在,在开始处理“Feature2”之前,我切换回提交分支

git checkout FeatureSubmission
,我明白了,

# git status

On branch FeatureSubmission
Your branch is up to date with 'origin/FeatureSubmission'.

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        ./

nothing added to commit but untracked files present (use "git add" to track)

我做错了什么?

我做了更改并将它们推送到Feature1,为什么它们在“FeatureSubmission”分支中显示为“Untracked”文件?

在这种情况下导航黑白分支的正确方法是什么,即FeatureSubmissionFeature1

git github branching-and-merging
1个回答
0
投票

您似乎对 Git 的分支导航以及未跟踪的文件在分支之间的行为方式遇到了常见的误解。让我们解决您的疑虑并概述管理工作流程的正确方法:

了解未跟踪的文件

未跟踪文件:这些文件位于工作目录中,但不在上次快照(提交)中,也不在暂存区域中。 Git 看到了它们,但尚未收到跟踪它们的指示。重要的是,未跟踪的文件不是特定于分支的。如果您在一个分支中创建一个新文件,然后切换到另一个分支而不提交它,该文件仍将作为未跟踪文件存在于工作目录中。

为什么分支切换后会出现未跟踪的文件

当您从Feature1切换到FeatureSubmission时,未跟踪的文件仍保留在您的工作目录中,因为Git在切换分支时不会自动删除或隐藏它们。这是因为这些文件尚未在任何分支中被 Git 跟踪。

管理分支和变更的正确工作流程

切换分支之前提交或存储:切换分支之前,请确保所有更改均已提交或存储。这种做法可以保持您的工作目录干净,并防止与跨分支的未跟踪文件发生混淆。

使用 Stash:如果您在切换分支之前尚未准备好提交更改,则可以使用 git stash 命令暂时搁置更改。您可以稍后在切换回来后使用 git stash pop 或 git stash apply 重新应用这些更改。

git stash push -m "Work in progress on Feature 1"

git checkout 功能提交

在功能提交中工作

git checkout 功能1 git stash pop

干净的工作目录:在切换分支之前,最好有一个干净的工作目录。您可以检查未跟踪的文件,然后决定使用 git add 跟踪它们并提交它们,或者在不需要时删除/删除它们。

分支导航:完成一个分支中的更改并提交后,您可以使用 git checkoutbranch_name(对于 Git 版本 2.23 及更高版本,使用 git switchbranch_name)切换到另一个分支。

git checkout FeatureSubmission # Switch to FeatureSubmission

工作然后提交任何更改

git checkout Feature1 # 切换回Feature1 保持分支更新:如果您想将功能提交中的更改合并到功能1中,您可以合并或变基:

将FeatureSubmission合并到Feature1中:

git checkout Feature1

git merge 功能提交

在FeatureSubmission之上重新调整Feature1(以获得更清晰的历史记录):

git checkout Feature1

git rebase 功能提交

为了避免在切换分支时出现未跟踪文件的问题,请始终确保您的工作目录是干净的 - 通过提交更改、隐藏它们或删除未跟踪的文件。这种方法将帮助您保持分支之间的变更清晰分离并避免混淆。

© www.soinside.com 2019 - 2024. All rights reserved.