我一直在这里寻找答案,似乎我可能只是对git分支应该如何工作做出错误的假设.
我有我的master
分支,我已经创建了一个功能分支profiles
,我正在为配置文件做一些特定的工作.在处理配置文件时,我更改了5或6个文件,并添加了另外5或6个新文件.我需要切换回master
分支来修复快速错误,并注意到所有新文件和修改过的文件.我想这是有道理的,因为git不会从master
分支中删除未跟踪的文件并将它们带回我的profiles
分支,因为它们实际上是未跟踪的.但是对现有文件的更改又如何呢?它们为什么出现在主分支中.
这是什么最好的做法.我还没准备好在本地提交更改.我应该只是隐藏所有这些更改,切换到master
,进行小修复,切换回profiles
然后重新应用存储?
任何帮助表示赞赏.谢谢
Ran*_*rtz 36
"我还没准备好在本地提交更改."
git中的提交是本地的东西,可以撤消,重做和重新重做.只有当您将提交推送到需要注意的地方时才会这样.
此外,提交对于本地工具是可见的gitk
,并且可以对它们进行差异处理,并且可以重新定位到其他提交等.这是一个非常强大的工具.学会使用它.
我经常这样做:
git add .; git commit -a -m 'WIP'
Run Code Online (Sandbox Code Playgroud)
如果我认为我可能会被打断,只是为了隐藏当前工作树中的所有内容.如果我做了一些更改,我使用:
git add .; git commit --amend
Run Code Online (Sandbox Code Playgroud)
就地更新我的"WIP"提交.当我终于为真正的提交做好准备时,我只是:
git reset --soft HEAD~; git reset
Run Code Online (Sandbox Code Playgroud)
现在我可以小心地控制最终提交的内容.
它们没有出现在主分支中 - 如果你进行了硬重置和干净,它们就会消失.当你切换分支时,Git只是保留你的本地修改.
这通常很有用; 您可能已经意识到要将这些修改提交到与您当前所在分支不同的分支.如果修改与两个分支之间的差异冲突,git将拒绝切换分支.
不过你对最好的方法是正确的 - 根据我的经验,干净地转换分支是最常见的用途之一git stash
.
听起来您使用 创建了分支git branch profiles
,但没有切换到它,所以您留在了master
,并且在您提交时它得到了文件更改。
创建分支后,您需要使用 显式切换到该分支git checkout
(或者您可以即时创建新分支并使用 一步切换到该分支git checkout -b
)。
如果您不想丢失更改(或提交到当前分支),而是将其放入另一个分支,请执行以下操作:
git add -A
git stash
git checkout <other branch>
git stash pop
Run Code Online (Sandbox Code Playgroud)
有关更多信息git stash
,请访问git-scm.com