git使用分支保存快照
我对如何使用git中的分支来节省临时工作感到困惑 这就是我所尝试的:git使用分支保存快照,git,Git,我对如何使用git中的分支来节省临时工作感到困惑 这就是我所尝试的: /tmp/gt > git init Initialized empty Git repository in .git/ /tmp/gt > date > t /tmp/gt > git add t /tmp/gt > git commit -m 'initial' Created initial commit b722fde: initial 1 files changed, 1 insert
/tmp/gt > git init
Initialized empty Git repository in .git/
/tmp/gt > date > t
/tmp/gt > git add t
/tmp/gt > git commit -m 'initial'
Created initial commit b722fde: initial
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 t
现在我把那份工作存到b分部去了
并继续在总支工作
/tmp/gt > date >> t
/tmp/gt > cat t
Di 18 Aug 2009 08:52:43 CEST
Di 18 Aug 2009 08:53:13 CEST
令我惊讶的是:
/tmp/gt > git checkout b
M t
Switched to branch "b"
/tmp/gt > cat t
Di 18 Aug 2009 08:52:43 CEST
Di 18 Aug 2009 08:53:13 CEST
我希望在分支“b”中,文件“t”在运行时仍处于相同的状态
分支已创建(即仅包含一个日期行)
我可以避免这种自动合并吗?或者这是一个概念性的问题
谢谢你的指导,
Axel.这是有意的:您当前对工作副本所做的所有更改都将被合并。如果在master上执行另一个commit,然后签出b,那么您将拥有一个oneliner文件 另一个解决方案是
git checkout-f b
,但这将覆盖您通常不想要的更改
git reset --hard
将恢复Git存储的状态,因此,如果在“
Git签出b
”行之后调用它,则t
将恢复到原始状态。基本原理是,您的未老化更改(尚未)在任何分支上。如果您的更改与您请求的分支开关不冲突,那么您可以将它们转移到新分支上
如果您想返回到分支b,那么您需要通过提交挂起的更改、隐藏挂起的更改或重置挂起的更改,然后更改分支来确保有一个干净的工作树
这种行为的原因是为了支持非常常见的工作流:开始黑客攻击,意识到黑客攻击应该在替代(或新)分支上,(创建并)签出分支,继续黑客攻击。但是如果我再次返回“主”分支,修改将丢失。我想我必须始终意识到这一点,并在签出分支之前进行提交。
git reset --hard