git - 使用 git 制作工作目录的快照

标签 git git-branch git-merge git-stash

有时我需要为当前(可能是脏的)工作目录做一个快照。 git stash save -u 和我需要的非常相似但是有两个问题:

  1. 我希望我的工作目录保持相同状态(保持未跟踪的文件未跟踪)
  2. 万一我需要回到保存的状态(可能一个月后),git stash apply 并不容易,因为我首先需要找到 git 之前的状态藏起来

我目前有以下适合我的命令序列,但我想知道是否有更优雅的方法。

# on branch master
git add .
git commit -m "Temporary commit on the original branch"
git checkout -b snapshot_of_master_yyyy-mm-dd-hh-mm-ss HEAD~
git merge master
git checkout master
git reset HEAD^

谢谢大家的解答和解释!我将主要根据@XavierGuihot 的回答做类似的事情

git stash -u # -u to include untracked files
git checkout -b snapshot_of_master_yyyy-mm-dd-hh-mm-ss
git stash apply
git add --all
git commit -m "Snapshot"
git checkout master
git stash pop --index # --index to recover the state of indexed files

最佳答案

您可以存储您的更改,创建一个新分支,应用您的更改,仅在新分支上执行提交,然后在最终再次应用您的更改之前再次检查 master。

git stash
git checkout -b snapshot_of_master_yyyy-mm-dd-hh-mm-ss
git stash apply
git add --all
git commit -m "Snapshot"
git checkout master
git stash pop

关于git - 使用 git 制作工作目录的快照,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48856649/

相关文章:

git - 提交前显示 git 的压缩提交大小

git - 在 git-svn 中克隆主干后克隆分支的最佳方法是什么?

git - 如何 git stash pop 在当前分支上创建的最后一个存储?

几天前创建的分支的 Git rebase

GitHub - merge 请求 - merge

php : The term 'php' is not recognized as the name of a cmdlet, 函数、脚本文件或可运行程序

java - java 的 gitignore 文件示例

git 在移动项目文件夹后显示存储库中的许多更改

仅在当前树中的所有分支的 Git 日志

git - 如何在 git 中对当前头部的提交之间应用差异?