相关疑难解决方法(0)

仅对分阶段文件运行测试:`git stash -k -u`和`git stash pop`将引发部分分段文件的冲突

TL;博士

我想在提交之前仅使用暂存文件运行测试:

  1. git stash save -k -u 在测试之前存储未分级/未跟踪的文件/更改
  2. 使用分阶段文件运行测试
  3. git stash pop 在步骤1恢复更改/文件.

问题是使用git stash pop会在部分暂存的文件上引发冲突.解决冲突将导致丢失部分暂存/未暂停的更改(您需要选择部分行再次暂存).

更新:如果您想知道运行此过程的shell脚本,请跳到上一节以获取更多信息.

注意:只有部分暂存的相邻行(或足够接近)才会导致此问题.例如,如果文件中有6个新的行更改:

1 +| a     (add to staged)
2 +| b     (add to staged)
3 +| c     (add to staged)
4  | d     (keep unstaged)
5  | e     (keep unstaged)
6  | f     (keep unstaged)
Run Code Online (Sandbox Code Playgroud)

现在使用git stash -k -u然后git stash pop会引发冲突.

证明这个问题

,Git提供了三个阶段更改之前提交:staged,unstageduntracked.

任何更改都将添加到unstaged.之前提交,你可以挑选一些线条或文件,并将它们添加到staged通过git add. …

git git-stash

5
推荐指数
1
解决办法
314
查看次数

为什么git stash会创建2个提交对象?似乎1就足够了

git stash创建2个提交时.一个由stash引用引用并具有2个父提交.一位家长是我们保管藏身处的索引.另一方父母有我们藏匿的实际内容.
为什么存储需要2次提交?在我看来,只有1就足够了.即只是stash引用具有实际内容的提交.
这不行吗?

git git-stash git-commit

5
推荐指数
1
解决办法
64
查看次数

在存储库副本之间传输存储的更改

我有一个仓库的两个副本,每个副本都带着几十藏匿状态的(stash@{0},stash@{1},...).

我需要删除其中一个副本,并且我想将所有隐藏的更改从我要删除的副本传输到我将保留的副本.我想保留关于所有藏匿状态的父母和日期的所有信息,以及索引的状态.

我一直在阅读文档,我找不到任何简单/直接的方法来做到这一点.有可能吗?


更新1:我希望将更改保持为存储状态而不是提交的原因之一是,通过使用--index标志,我可以检索为提交和工作目录中的更改而暂存的更改.如果我创建一个提交,我也将破坏隐藏状态的信息,其中父,索引和工作副本彼此不同.我隐藏的状态通常对应于初步测试工作,这些工作远非可编译,没有准备好承诺,而且目前我没有时间经历数十个整理它们.


更新2:我想我知道如何查看我要备份的信息,例如,

$ git show stash{5}
commit eb5731e828f467dbe9214d0e6a350f33898c1363
Merge: c9608582 1d6cb78d
Author: Author <author@example.com>
Date:   Wed Sep 20 18:54:51 2017 +0100
Run Code Online (Sandbox Code Playgroud)

清楚地产生工作目录状态(commit行)和日期的id,并且Merge:行中的id是父提交id和索引的id.

我不知道的是如何将所有这些信息转移到存储库的第二个副本,作为它的新存储状态.


更新3:澄清:存储库的两个副本已经存储了状态.

git git-stash

4
推荐指数
1
解决办法
838
查看次数

检查Git是否以编程方式进行了更改

我想编写一个脚本,允许我轻松更改分支,保持当前的更改.

git stash
go checkout main
git stash pop
Run Code Online (Sandbox Code Playgroud)

问题是如果存储库中当前没有更改.然后stash pop会弹出以前的藏匿处.检查pop是否有变化的最简单方法是什么?

git bash

2
推荐指数
2
解决办法
2166
查看次数

当我隐藏更改时,如何判断我所处的分支?

我知道git stash show -p stash@{0}将保存的更改日志保存到该存储条目中,但我想知道在进行这些更改时我所处的分支.这对于许多场景非常有用:

  • 清理我的藏匿栈
  • 当我回到旧的问题(以及旧的分支)时,我把这些变化藏起来,当时我想我可以很快回到问题并解开,但最终被拉到其他一些问题上很长时间.我发现自己在想"我认为我为此隐藏了变化,但我不确定,如果是这样,他们会在藏匿堆栈中输入哪些内容."

git git-stash

2
推荐指数
1
解决办法
57
查看次数

Git 存储失败

我在 Windows 中使用 SmartGit。今天我需要硬重置一些提交。SmartGit 自动为我保存了我修改过的文件。

重置后,它尝试应用存储:

$ git.exe stash apply --index stash@{0}

但它给了我:

Apply Stash: stash failed (return code 1).

我可以查看存储内容并查看我的所有代码,但我无法应用存储。我该如何解决?

git git-stash smartgit

2
推荐指数
1
解决办法
7691
查看次数

删除超过X天的隐藏更改

我如何删除所有早于X天的藏匿处?

git stash在日常工作流程中都会使用,这意味着我将不得不花费数月的时间。

git

2
推荐指数
1
解决办法
258
查看次数

在拉取我的项目表单 GIT 的新版本后,如何检索特定隐藏文件的内容?

我不太喜欢 GIT,我有以下问题。

我的项目中有一些未提交的文件,我已经通过此声明隐藏了这些文件:

git stash
Run Code Online (Sandbox Code Playgroud)

然后我拉取了一个coolegue的工作的存储库,这似乎正确地覆盖了我的隐藏文件的更改。

现在我想在不丢失同事修改的情况下检索特定隐藏文件的内容。

我不想覆盖拉取的版本,而只想访问特定文件的隐藏版本的代码。

执行git stash list我获得:

$ git stash list
stash@{0}: WIP on master: fd2a59b First version of iterate/aggregate for data received from dataservice
stash@{1}: WIP on master: 4910263 DSS project added
Run Code Online (Sandbox Code Playgroud)

我怎样才能从外壳做到这一点?

git version-control git-stash git-pull

0
推荐指数
1
解决办法
3157
查看次数

标签 统计

git ×8

git-stash ×6

bash ×1

git-commit ×1

git-pull ×1

smartgit ×1

version-control ×1