如果我切换到新分支并提交文件(并推送到GitHub作为备份),我发现一旦切换回旧分支,文件全部变为未修改 - 好像它们从未被修改过自上次提交以来。
在这种情况下,我可以像以前一样修改文件吗?
我可以
git rebase tmp-branch
并获取这些更改,但此操作也将提交应用于我当前的分支。有没有办法不进行提交,只是让文件被修改并保持未提交?
答案 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时,您的工作目录必须是干净的(即需要添加所有更改)。