首先,我确实知道--keep-index. 这不是我想要的,因为它仍然隐藏所有更改,但将暂存的更改留在工作树中。如果可能的话,我只想存储未暂存的文件,而不用git stash --patch.
小智 0
您不能直接执行此操作,但您最终可以仅隔离未暂存或仅暂存的更改,或两者都隔离,甚至根本不使用任何git-stash命令:
git switch -c separated-stashes
Run Code Online (Sandbox Code Playgroud)
相当于旧的checkout -b:创建一个新分支并打开它。它不会改变你的工作树和索引,所以你基本上会得到git status与以前相同的 ' 输出,但这次是在新分支上。与简单的git switch/相反git checkout,它不会在切换分支之前警告您存储或提交更改,因为您是通过-c/显式创建一个全新的分支-b。
git commit -m "staged"
Run Code Online (Sandbox Code Playgroud)
在新分支上创建第一个提交,其中仅包含从一开始的分阶段更改。
git add -u && git commit -m "unstaged"
Run Code Online (Sandbox Code Playgroud)
从一开始就使用未暂存的更改创建第二次提交。
git switch - # == git checkout -
Run Code Online (Sandbox Code Playgroud)
返回到您之前所在的分支。
现在您已经存储了所有内容,并且可以cherry-pick随时随地存储您需要的内容(暂存/未暂存)。
这可能看起来有点麻烦,但你可以自由定义一个 git 别名来自动化它:
git config --global alias.bratisla '!git switch -c separated-stashes; git commit -m "staged changes"; git add -u; git commit -m "unstaged changes"; git switch -' # why this name ? : youtu.be/LpE1bJp8-4w
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
913 次 |
| 最近记录: |