上下文:我正在为master添加一个简单的功能.几分钟后,我意识到这不是那么简单,应该更好地进入一个新的分支.
这总是发生在我身上,我不知道如何切换到另一个分支并采取所有这些未经修改的更改与我离开主分支清洁.我想git stash && git stash branch new_branch
应该只是完成它,但这就是我得到的:
~/test $ git status
# On branch master
nothing to commit (working directory clean)
~/test $ echo "hello!" > testing
~/test $ git status
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: testing
#
no changes added to commit (use "git add" and/or …
Run Code Online (Sandbox Code Playgroud) 我想做以下工作流程:
有没有办法做第2步?
例
echo "123" > foo
git add foo # Assumes this is a git directory
echo "456" >> foo
git stash
cat foo # Should yield 123
Run Code Online (Sandbox Code Playgroud) 假设在由git版本化的项目中进行了两组更改.一套是上演的,另一套则没有.
我想通过在此状态下运行我的项目(在提交之前)来重新检查暂存的更改.什么是简单的方法来收起所有未分阶段的变化并且只留下上演?所以我需要从我的项目中消失的非分段更改,但是要存储在某个地方以便进一步工作.
这听起来非常像git stash
命令.但是git stash
会将未分阶段和分阶段的更改从我的项目中移除.我找不到类似的东西git stash uncached
.
我刚刚使用"git add -p"为索引添加了一堆更改,我才意识到我错过了一个应该进入上一次提交的更改.
我现在不能提交--amend因为我已经将所有这些新的更改添加到索引中,并且我不想使用'git reset'将它们全部从索引中删除,因为它需要很长时间才能添加它们又回来了.
我需要的是像'git stash'这样只会隐藏索引的东西 - 它应该只保留工作文件.然后我可以存储索引,添加缺少的更改,提交它,然后弹出存储并使我的索引恢复原样.
它看起来不像'git stash'能够做到这一点,但我错过了什么吗?谢谢!
例如,a git status
给出以下内容:
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: app/src/[....]
modified: app/src/[....]
new file: app/src/[....]
deleted: app/src/[....]
modified: app/src/[....]
modified: test/unit/[....]
modified: test/unit/[....]
new file: test/unit/[....]
deleted: test/unit/[....]
modified: test/unit/[....]
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: test/unit/[....]
Untracked files:
(use "git add <file>..." to include in what will be committed)
app/src/[....]/
app/src/[....]/ …
Run Code Online (Sandbox Code Playgroud) 首先,我确实知道--keep-index
. 这不是我想要的,因为它仍然隐藏所有更改,但将暂存的更改留在工作树中。如果可能的话,我只想存储未暂存的文件,而不用git stash --patch
.
我正在寻找一种解决方案,将功能分支应用到 git 中的开发分支,而无需实际移动分支指针。本质上,我想从功能分支创建一个提交,并确保它以某种方式指向原始分支(在日志中提及可能就足够了)。
我知道堆叠的 git 应该提供类似的东西,尽管这会为我宁愿避免的标准工作流程引入新的命令。
我想要实现的是某种功能管理,它允许我们应用/删除整个功能,同时保持补丁分支本身的可见性。如果我确实合并了分支,则大多数尝试区分更改的命令都不会执行我想要的操作,因为该分支已经合并到开发中。
我无法真正遵循上游 - 有时通过获取新标签并仅重新应用需要的功能而不是解决冲突和恢复冗余功能来更容易纠正并发更改 - 所以这种工作方式是不可能的。另一方面,我确实希望看到更改,以便我可以对其进行修改以匹配新版本,或者稍后向上游提交。