我一直在这里寻找答案,似乎我只是对git分支机构的运作方式做出了错误的假设。
我有我的master
分支,我已经创建了一个名为profiles
的功能分支,在其中我正在对配置文件进行一些特定的工作。在处理配置文件时,我更改了5或6个文件,并添加了另外5或6个新文件。我需要切换回master
分支来修复一个快速的错误,并注意到所有的新文件和修改后的文件也在那里。我想这是有道理的,因为git不会从master
分支中删除未跟踪的文件,并将它们带回profiles
分支,因为它们实际上是未跟踪的。但对现有文件的更改又如何呢?为什么他们会出现在主分支机构中。
这里最好的做法是什么?我还没有准备好在本地提交更改。我是否应该隐藏所有这些更改,切换到master
,进行小修改,切换回profiles
,然后重新应用存储?
如有任何帮助,我们不胜感激。谢谢
3条答案
按热度按时间ccrfmcuu1#
“我还没有准备好在本地提交这些变化。”
GIT中的承诺是可以随意撤消、重做和重做的本地事务。只有当你把承诺推到某个地方时,你才需要注意。
此外,提交对于
gitk
这样的本地工具是可见的,可以对它们进行不同的处理,并可以重新基于其他提交,等等。这是一个非常强大的工具。学会使用它。我经常这样做:
如果我认为我可能会被打断,我只是想把当前工作树中的所有东西都藏起来。如果我再做一些更改,我会使用:
更新我的“WIP”原地承诺。当我最终准备好真正的承诺时,我只是:
现在我可以小心地控制最终提交的内容了。
gab6jxml2#
它们不会出现在主分支中-如果您进行了硬重置和清理,它们就会消失。当您切换分支时,Git只是保留您的本地修改。
这通常很有用;您可能已经意识到,您希望将这些修改提交到与您当前所在分支不同的分支。如果修改与两家分支机构之间的差异相冲突,Git将拒绝切换分支机构。
不过,您对最佳方法的看法是正确的--在我的经验中,干净地切换分支是
git stash
最常见的用法之一。tzxcd3kk3#
听起来像是您使用
git branch profiles
创建了分支,但没有切换到它,所以您保留在master
中,当您执行提交时,它会获得文件更改。在创建分支之后,您需要使用
git checkout
显式地切换到它(或者您可以只使用git checkout -b
动态创建新的分支并在一个步骤中切换到它)。如果您有不想丢失的更改(或提交到当前分支),而是放入另一个分支,请执行以下操作:
有关
git stash
的更多信息,请访问git-scm.com