代码之家  ›  专栏  ›  技术社区  ›  Benjol

是否可以预览git中的存储内容?

  •  449
  • Benjol  · 技术社区  · 14 年前

    我经常把工作放在后面,然后其他的东西就来了,几个星期后,我想检查一下藏起来的东西,看看如果我把它应用到工作树的当前状态会有什么变化。

    我该怎么做?

    13 回复  |  直到 8 年前
        1
  •  844
  •   Wayne Conrad    8 年前

    git stash show 将向您显示在最近的存储中更改的文件。您可以添加 -p 显示差异的选项。

    git stash show -p
    

    git stash show -p stash@{2}
    
        2
  •  95
  •   mfaani    5 年前

    要查看当前存储列表,请执行以下操作:

    git stash list
    

    您将看到如下列表:

    stash@{0}: WIP on ...
    stash@{1}: ...
    stash@{2}: ...
    ...
    

    要查看这些存储上的差异:

    git stash show -p stash@{n}
    
        3
  •  42
  •   Jeff Ward    9 年前

    gitk 的图形用户界面来可视化git回购。您可以查看保存的最后一项:

    gitk stash
    

    您还可以使用查看任何隐藏的更改(如 git stash list ). 例如:

    gitk stash@{2}
    

    gitk viewing a stash

        4
  •  25
  •   Vadim Kotov First Zero    7 年前

    要查看未弹出存储中的所有更改,请执行以下操作:

    git stash show -p stash@{0}
    

    要查看未弹出存储中某个特定文件的更改,请执行以下操作:

    git diff HEAD stash@{0} -- path/to/filename.php
    
        5
  •  6
  •   Community SqlRyan    7 年前

    Is it possible to preview stash contents in git? tig 打电话给我 tig stash . 这是免费的/开放的 慰问 程序还允许您选择要比较的存储

        6
  •  6
  •   hlongmore    6 年前

    UnStash Changes 工具(VCS->Git->取消搁置更改…)。这允许您查看隐藏更改的列表,以及弹出、删除、清除或应用(如果需要,可应用到新分支中):

    Unstash Changes Window

    并查看每个存储的更改文件:

    Paths Affected Window

    以及每个文件的差异。在diffs中,您可以选择要从隐藏的更改应用到工作分支的单个更改(使用左尖V形):

    enter image description here

        7
  •  4
  •   Community SqlRyan    7 年前

    我用它来查看我所有的带有色差突出显示的藏品(在Fedora 21上):

    git stash list | 
      awk -F: '{ print "\n\n\n\n"; print $0; print "\n\n"; 
      system("git -c color.ui=always stash show -p " $1); }' | 
      less -R
    

    (改编自 Git: see what's in a stash without applying stash )

        8
  •  3
  •   Vadim Kotov First Zero    7 年前

    您可以通过以下命令查看所有存储列表:

    $ git stash list
    
    stash@{0}: WIP on dev: ddd4d75 spelling fix
    
    stash@{1}: WIP on dev: 40e65a8 setting width for messages
    
    ......
    
    ......
    
    ......
    
    
    stash@{12}: WIP on dev: 264fdab added token based auth
    

    最新的藏品是第一个。

    您只需选择索引即可 n

    git stash show -p stash@{3}
    

    同样地,

    git stash show -p stash@{n}
    

    也可以使用以下命令检查差异:

    git diff HEAD stash@{n} -- /path/to/file
    
        9
  •  3
  •   Bharat Pahalwani    6 年前

    git stash list
    

    git stash show -p stash@{0} --name-only
    

    用于查看存储中的特定文件

    git show stash@{0} path/to/file
    
        10
  •  3
  •   Walterwhites    6 年前

    是的,查看修改内容的最佳方法是这样保存在文件中:

    git stash show -p stash@{0} > stash.txt
    
        11
  •  2
  •   akhil_mittal    8 年前

    首先,我们可以使用git stash list来获取所有存储项:

    $git stash list
    stash@{0}: WIP on ...
    stash@{1}: WIP on ....
    stash@{2}: WIP on ...
    

    那我们就可以利用 git stash show stash@{N} 检查特定藏匿处的文件 N

    $ git stash show stash@{2}
    fatal: ambiguous argument 'stash@2': unknown revision or path not in the working tree.
    Use '--' to separate paths from revisions, like this:
    'git <command> [<revision>...] -- [<file>...]'
    

    stash@2 而不是 stash@{2} . 为了解决这个问题,我们需要使用大括号的单引号:

    git stash show stash@'{2'}
    com/java/myproject/my-xml-impl.xml                     | 16 ++++++++--------
    com/java/myproject/MyJavaClass.java                    | 16 ++++++++--------
    etc.
    
        12
  •  2
  •   user202729 Nati Keidar    6 年前

    git stash show -p stash@{2}
    

    注意,在 git-stash documentation ,上面写着

    也可以通过仅指定存储索引(例如整数)来引用存储 n 相当于 stash@{n} ).

    因此也可以使用(这相当于上面的命令)

    git stash show -p 2
    

    some Powershell issues .

        13
  •  2
  •   JBert    5 年前

    我喜欢这样 gitk 可以准确地显示索引中未跟踪或存放的内容,但默认情况下,它将显示当前分支上所有其他提交中间的那些“提交”。

    诀窍是按如下方式运行gitk:

    gitk "stash@{0}^!"
    

    如果你在 gitrevisions help page 您将发现:

    这个 r1^! r1级 r1级

    这显然会使gitk处于这样一种模式,即只显示所选提交的直接父级,这正是我喜欢的。


    gitk `git stash list '--pretty=format:%gd^!'`
    

    (后面的单引号是安抚Bash所必需的,否则它会抱怨感叹号)

    如果您在Windows上使用cmd或Powershell:

    gitk "--argscmd=git stash list --pretty=format:%gd^!"
    
        14
  •  1
  •   ccpizza    7 年前

    显示所有存储

    仅文件名:

    for i in $(git stash list --format="%gd") ; do echo "======$i======"; git stash show $i; done
    

    for i in $(git stash list --format="%gd") ; do echo "======$i======"; git stash show -p $i; done
    

    空间 ( 向前地 )以及 ( 向后的 ),和 q > stashes.diff

        15
  •  0
  •   hxysayhi    5 年前

    下面的命令可用于提取与任何其他存储、提交、分支或头的差异。

    git stash show
    git show
    git diff
    git difftool
    

    1. git藏匿秀

    简单的命令git stash show提供了非常简短的更改摘要 但不会显示更改与当前头的差异。

    1. git show

    gitshow命令用于查看各种类型的对象。

    gitshow命令不仅用于可视化存储更改,而且 也用于查看一个或多个对象,如水滴、树、标记和 提交。

    1. git diff

    git diff命令也是用于

    默认情况下,git diff将显示所选存储的diff 针对(已修改文件)存储库的当前状态,除非其他存储

    要获取最顶层存储@{0}和主分支之间的差异,请执行以下操作:

    $git diff存储@{0}主控形状

    $git diff—仅名称存储@{0}主机

    请参见选定文件的选定存储之间的差异:

    1. git difftool工具

    git difftool命令也可用于查找 选定的存储和选定的提交或分支或存储

    git difftool—dir diff stash@{0}存储@{0}^1

    总结:

    用于从选定的stash git stash show、git show、git diff、git difftool中提取差异的命令。

    使用git stash show命令查看差异,

    git stash show-p stash@{0}

    git show stash@{1}

    使用git diff命令查看最新存储和选定提交之间的区别,

    git diff存储@{0}

    https://howto.lintel.in/how-to-see-stashed-changes-using-git-stash/

    https://git-scm.com/docs/git-show

    https://git-scm.com/docs/git-stash

        16
  •  0
  •   Wong Devrsion    4 年前
        17
  •  0
  •   Nick F    3 年前

    有几个答案提到了 -p (或 --patch )标志打开 git stash show

    不过,还值得一提的是,您可以在显示Git存储时将此作为默认行为(即。 git stash show stash@{0} git config :

    git config --global stash.showPatch true
    

    …或在.gitconfig文件中:

    [stash]
      showPatch = true
    

    这使得 表现得像 git show 默认情况下。如果您只想查看diffstat(即添加/删除行的摘要),您仍然可以通过 --stat 旗子(同样,像 git秀

    git stash show --stat stash@{0}