使用git,有没有办法重新应用更改但不提交更改?

时间:2017-06-23 21:03:56

标签: git

如果我切换到新分支并提交文件(并推送到GitHub作为备份),我发现一旦切换回旧分支,文件全部变为未修改 - 好像它们从未被修改过自上次提交以来。

在这种情况下,我可以像以前一样修改文件吗?

我可以

git rebase tmp-branch

并获取这些更改,但此操作也将提交应用于我当前的分支。有没有办法不进行提交,只是让文件被修改并保持未提交?

3 个答案:

答案 0 :(得分:2)

编辑:显然Git人已经想到了这一点 您可以将-n标记传递给cherry-pick以应用其他提交的更改,并在创建新提交之前停止。

git checkout old-branch       # Go back to the old branch, files are unmodified

git cherry-pick -n tmp-branch # Apply the changes from tmp-branch's tip

答案 1 :(得分:0)

我认为你正在寻找stash git命令系列

https://git-scm.com/docs/git-stash

它允许您存储更改而不提交它们,切换到其他分支,以及" pop"你回来时的藏匿处。

以下是其使用的一些基本示例

http://gitready.com/beginner/2009/01/10/stashing-your-changes.html

从该页面

使用

将更改添加到索引中
git add .

或者将单个文件添加到您的选择索引中。使用以下方式存储您的更改:

git stash

繁荣!你回到了原来的工作状态。修复了那个错误?将您的工作带回来:

git stash apply

你也可以做多层藏匿,所以一定要使用

git stash list

检查所有当前的。如果您需要从堆栈中的较深处应用存储,那也很容易。以下是如何应用您获得的第二个存储:

git stash apply stash@{1}

您还可以使用以下方法轻松地在堆栈上应用顶级存储:

git stash pop

使用此命令的注释,它会删除该存储空间,而应用则不会。您可以使用以下方式手动删除藏匿

git stash drop <id>

或删除所有存储的藏匿处:

git stash clear

答案 2 :(得分:0)

Git:存储非分段更改

这将隐藏您未添加的所有修改:

git stash -k

请注意,除非您还使用-u开关,否则新创建的(和未添加的)文件将保留在您的工作目录中。

git stash -k -u

此外,当您稍后使用git stash pop时,您的工作目录必须是干净的(即需要添加所有更改)。