相关疑难解决方法(0)

如何恢复隐藏的未提交更改

我在我的开发分支中有一些未提交的更改,并且我使用它们进行了存储git stash,但是有些更改在那些被隐藏的更改中非常重要.有没有办法找回这些变化?

此外,我已经在存储的代码文件之上做了一些更改.

如果可能的话,我是否有可能检索到新分支的藏匿更改?

git git-stash

600
推荐指数
7
解决办法
49万
查看次数

"git pull"可以自动存储并弹出挂起的更改吗?

我知道如何解决这个问题:

user@host$ git pull
Updating 9386059..6e3ffde
error: Your local changes to the following files would be overwritten by merge:
    foo.bar
Please, commit your changes or stash them before you can merge.
Aborting
Run Code Online (Sandbox Code Playgroud)

但是,是不是有办法让git pullstashpop舞蹈给我吗?

如果此命令具有不同的名称,则可以.

创建shell别名git stash; git pull; git stash pop是一种解决方案,但我寻找更好的解决方案.

git git-stash git-pull

108
推荐指数
4
解决办法
3万
查看次数

git stash是特定于分支还是整个存储库?

我进了一个分店做了一些工作.我想进入另一个分支,但不想承诺,所以我做了git stash.然后我做了git checkout <otherbranch>.我在那里做了一些工作,就像在第一个分支中一样,我想在提交工作之前切换它.所以我git stash也在那里.我切换回第一个分支并尝试解除它(git stash pop)认为它将从该特定分支获取存储.我感到惊讶的是它从<otherbranch>最近的藏匿中释放了藏匿物.我的印象是存储是特定于分支的,但是这种行为表明整个本地存储库只有一个存储.

git stash分支特定的还是整个存储库?如果是整个存储库,我可以将选项传递给它以使其特定于分支吗?

git git-stash

72
推荐指数
4
解决办法
2万
查看次数

自动存储git rebase上的保存/弹出更改?

我的git工作流程经常使用rebase.我总是取上游的变化(主要回购我从分叉),然后合并到我的树枝,然后重订去除无用的(对我说:d)合并的提交和树分裂.

这个工作流程中的一件事让我烦恼的是:

$ git rebase upstream/master
Cannot rebase: You have unstaged changes.
Please commit or stash them.

$ git stash
Saved working directory and index state WIP on cc: abc1234 Merge remote-tracking branch 'upstream/master' into local_branch
HEAD is now at abc1234 Merge remote-tracking branch 'upstream/master' into local_branch

$ git rebase upstream/master
First, rewinding head to replay your work on top of it...
Applying: awesome code change

$ git stash pop
Run Code Online (Sandbox Code Playgroud)

所以这里我们有4个命令,1 =失败的rebase,2 = stash,3 = rebase,4 = stash pop.除了3之外的任何东西都是无意识的工作

所以,问题是:最推荐的自动化方法是什么?每次都运行git …

git git-stash

35
推荐指数
3
解决办法
1万
查看次数

如何在预提交钩子中正确git stash/pop以获得一个干净的工作树进行测试?

我正在尝试使用一系列单元测试进行预提交钩子,我想确保我的工作目录是干净的.编译需要很长时间,所以我希望尽可能利用重用编译的二进制文件.我的脚本遵循我在网上看到的例子:

# Stash changes
git stash -q --keep-index

# Run tests
...

# Restore changes
git stash pop -q
Run Code Online (Sandbox Code Playgroud)

这会导致问题.这是repro:

  1. 添加// Step 1a.java
  2. git add .
  3. 添加// Step 2a.java
  4. git commit
    1. git stash -q --keep-index #存储更改
    2. 运行测试
    3. git stash pop -q #恢复更改

此时我遇到了问题.该git stash pop -q显然有冲突,a.java我有

// Step 1
<<<<<<< Updated upstream
=======
// Step 2
>>>>>>> Stashed changes
Run Code Online (Sandbox Code Playgroud)

有没有办法让这个流畅干净?

git git-stash githooks

24
推荐指数
1
解决办法
5577
查看次数

git stash报告:''不是藏匿参考

不太确定发生了什么,但是git stash似乎处于一个不好的地方.

% git stash list
stash@{0}: filter-branch: rewrite
stash@{1}: filter-branch: rewrite
stash@{2}: On mysolr: start mysolr stuff
Run Code Online (Sandbox Code Playgroud)

没关系,并且git show stash@{0}工作正常.但:

% git stash drop
'' is not a stash reference
% git stash pop
'' is not a stash reference
% git stash drop stash@{0}
'stash@{0}' is not a stash reference
Run Code Online (Sandbox Code Playgroud)

我过去常常使用git stash而不是碰到这个.我最近重写了历史记录,以便在发布到github之前从历史记录中删除文件.我跑的命令是

git filter-branch --force --index-filter \
  'git rm --cached --ignore-unmatch FILENAME' \
  --prune-empty --tag-name-filter cat -- --all
Run Code Online (Sandbox Code Playgroud)

任何想法如何修复藏匿?

git git-stash

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

列出git存储库中的修改文件名

我可以在没有内容的情况下在藏匿处列出修改过的文件的名称吗?

在搜索时,我只发现打印整个差异的人,无法仅查看文件名.

git git-stash

17
推荐指数
1
解决办法
7912
查看次数

为什么存储表示为2次提交?

当存储一些更改时,Git会创建两个单独的提交,"分支上的WIP"和"分支上的索引":

$ git log --graph --all 

*   commit 98aac13303ca086580c1ec9ccba5fe26c2a8ef3c
|\  Merge: 7d99786 82c5c76
| | Author: Tieme <my@email.com>
| | Date:   Wed Nov 19 09:58:35 2014 +0100
| |
| |     WIP on development: 7d99786 Last real commit
| |
| * commit 82c5c763357c401135675a39bfabf9b7f6805815
|/  Author: Tieme <my@email.com>
|   Date:   Wed Nov 19 09:58:35 2014 +0100
|
|       index on development: 7d99786 Last real commit
|
|
| * commit 7d9978637a0e1ef92f2432189bdebf2317f0b2f0
| Author: Tieme <my@email.com>
| Date:   Tue Nov 18 …
Run Code Online (Sandbox Code Playgroud)

git git-stash git-log

16
推荐指数
1
解决办法
693
查看次数

如何从"git stash save --all"中恢复?

我想隐藏未跟踪的文件,但我继续传递错​​误的选项.对我来说这听起来是对的:

git stash save [-a|--all]
Run Code Online (Sandbox Code Playgroud)

但实际上这也隐藏了文件.正确的是:

git stash save [-u|--include-untracked]
Run Code Online (Sandbox Code Playgroud)

当我运行git stash save -a并尝试git stash pop它时,我得到所有被忽略文件的无数错误:

path/to/file1.ext already exists, no checkout
path/to/file1.ext already exists, no checkout
path/to/file1.ext already exists, no checkout
...
Could not restore untracked files from stash
Run Code Online (Sandbox Code Playgroud)

所以命令失败了.

如何恢复跟踪和未跟踪的更改?git reflog不存储存储命令.

git git-stash

13
推荐指数
1
解决办法
3905
查看次数

`git stash show -p stash @ {N}`和`git show stash @ {N}`之间的区别?

我认为他们应该基本相同,但是当我尝试时

$ git stash show -p stash@{N}
Run Code Online (Sandbox Code Playgroud)

$ git show stash@{N}
Run Code Online (Sandbox Code Playgroud)

后者显示了一些额外的提交信息,但实际的差异要短得多.(前者显示了大约十二个文件,但后者只有一个.)

那么,两者之间究竟有什么区别,为什么它们不同?

我还可以依赖于git diff stash@{M} stash@{N}正确的事情吗?

git git-stash git-show

11
推荐指数
1
解决办法
1901
查看次数

标签 统计

git ×10

git-stash ×10

git-log ×1

git-pull ×1

git-show ×1

githooks ×1