Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git使用分支保存快照_Git - Fatal编程技术网

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

我对如何使用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 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