Git中分支机构之间未跟踪的文件

eoigrqb6  于 2022-09-21  发布在  Git
关注(0)|答案(3)|浏览(189)

我一直在这里寻找答案,似乎我只是对git分支机构的运作方式做出了错误的假设。

我有我的master分支,我已经创建了一个名为profiles的功能分支,在其中我正在对配置文件进行一些特定的工作。在处理配置文件时,我更改了5或6个文件,并添加了另外5或6个新文件。我需要切换回master分支来修复一个快速的错误,并注意到所有的新文件和修改后的文件也在那里。我想这是有道理的,因为git不会从master分支中删除未跟踪的文件,并将它们带回profiles分支,因为它们实际上是未跟踪的。但对现有文件的更改又如何呢?为什么他们会出现在主分支机构中。

这里最好的做法是什么?我还没有准备好在本地提交更改。我是否应该隐藏所有这些更改,切换到master,进行小修改,切换回profiles,然后重新应用存储?

如有任何帮助,我们不胜感激。谢谢

ccrfmcuu

ccrfmcuu1#

“我还没有准备好在本地提交这些变化。”

GIT中的承诺是可以随意撤消、重做和重做的本地事务。只有当你把承诺推到某个地方时,你才需要注意。

此外,提交对于gitk这样的本地工具是可见的,可以对它们进行不同的处理,并可以重新基于其他提交,等等。这是一个非常强大的工具。学会使用它。

我经常这样做:

git add .; git commit -a -m 'WIP'

如果我认为我可能会被打断,我只是想把当前工作树中的所有东西都藏起来。如果我再做一些更改,我会使用:

git add .; git commit --amend

更新我的“WIP”原地承诺。当我最终准备好真正的承诺时,我只是:

git reset --soft HEAD~; git reset

现在我可以小心地控制最终提交的内容了。

gab6jxml

gab6jxml2#

它们不会出现在主分支中-如果您进行了硬重置和清理,它们就会消失。当您切换分支时,Git只是保留您的本地修改。

这通常很有用;您可能已经意识到,您希望将这些修改提交到与您当前所在分支不同的分支。如果修改与两家分支机构之间的差异相冲突,Git将拒绝切换分支机构。

不过,您对最佳方法的看法是正确的--在我的经验中,干净地切换分支是git stash最常见的用法之一。

tzxcd3kk

tzxcd3kk3#

听起来像是您使用git branch profiles创建了分支,但没有切换到它,所以您保留在master中,当您执行提交时,它会获得文件更改。

在创建分支之后,您需要使用git checkout显式地切换到它(或者您可以只使用git checkout -b动态创建新的分支并在一个步骤中切换到它)。

如果您有不想丢失的更改(或提交到当前分支),而是放入另一个分支,请执行以下操作:

git add -A
git stash
git checkout <other branch>
git stash pop

有关git stash的更多信息,请访问git-scm.com

相关问题