我正在一个分支上工作,突然我不得不切换到另一个分支来修复一个紧急错误。问题是我对当前分支所做的更改仍然一团糟,我不想提交并留下一些杂乱无章的提交消息。
有什么方法可以在不提交的情况下保存当前更改?
Dan*_*owe 15
是的,您可以使用 stash。
git stash
Run Code Online (Sandbox Code Playgroud)
它会将任何未提交的内容保存在一个特殊区域中,您可以稍后使用
git stash apply
Run Code Online (Sandbox Code Playgroud)
你可以看到什么在藏匿处
git stash list
Run Code Online (Sandbox Code Playgroud)
Stash 显然有效。我只是想提出,它也是一个可行的选择,如果不是更好的话,只需提交您所拥有的任何内容,原因如下:
这是我受@jingx 的回答启发而设置的一个简洁的小 bash 函数:
gcl() {
echo "### Adding any wip files";
git add .;
echo "### Committing files with a temporary commit";
git commit --no-verify -am 'local commit - work in progress';
echo "### Checking out branch";
git checkout "$1";
x="$(git log -1 --pretty=%B)"
if [ "$x" = "local commit - work in progress" ]; then
echo "### Undoing last commit";
git reset --soft HEAD^
else
echo "### Not undoing last commit"
fi
echo "gcl complete"
}
Run Code Online (Sandbox Code Playgroud)
将其添加到您的 .bashrc 或 .profile 中,然后用于gcl my-branch切换分支并将您的工作保存为本地提交,同时在更改时解压缩本地提交。
例如,假设您branch1已开启并有未提交的更改。做一个
gcl urgent-fix
做任何你需要做的事,然后跳回去
gcl branch1
您未提交的更改将像您离开它们一样存在。
尽管确实发生了提交,但它不会远程推送,因此可以在本地撤消而不会产生任何后果。