有没有图形方式来git stash/unstash个别文件?

Cha*_*nce 9 git git-stash

我正在寻找一个用于存储和存储git弹出文件的GUI,能够对单个修改过的文件执行此操作.我知道有一个命令行方式可以这样做,在这里看到,但我正在寻找一种图形方式.我不太关心存储单个文件,而是关于弹出/应用的更多信息.我在Windows 7上运行.

Bre*_*mir 10

我在这里看到了一个建议,将Stash命令作为菜单添加到你的"Git GUI"中<USER HOME directory>\.gitconfig.

[guitool "Stash/show"]
  cmd = git stash show -p
[guitool "Stash/list"]
  cmd = git stash list
[guitool "Stash/pop"]
  cmd = git stash pop
[guitool "Stash/drop"]
  cmd = git stash drop
  confirm = yes
Run Code Online (Sandbox Code Playgroud)

我还添加了一个命令来进行存储(要使用,你必须先进行 - 但不要提交 - 你希望存储的文件,以便Git执行所需的"添加"):

[guitool "Stash"]
  cmd = git stash
Run Code Online (Sandbox Code Playgroud)

(请注意,我选择"存储"不会显示为子菜单,但您可以这样做.)

您还可以通过工具 - >添加通过Git GUI本身添加命令.

如果您只是想快速将文件放在心上而不必考虑分支名称,则存储可能会有所帮助.


axi*_*iac 6

的文档git stash说:

使用git stash时要录制工作目录和索引的当前状态,但想回到干净的工作目录。该命令保存您的本地修改并恢复工作目录以匹配HEAD提交。

它提供很少的支持1来处理单个文件,因为它的目的是安全地存储您当前的更改并快速使您的工作树进入干净的状态(即,就像您在当前分支上最后一次提交之后一样)。

如果您创建一个新分支并提交对它的更改(以您想要的任何数量或组合),您可以做您想做的事情(并且以比 stashing 更灵活的方式),直到达到您想要的状态。然后只需签出上一个分支即可完成。

这种方法允许您稍后将更改合并到当前分支中,只挑选一些提交甚至一些文件。


1 git stash save提供了--patch允许用户从HEAD要隐藏的工作树之间的差异中交互式选择大块的选项。它允许对添加到存储中的内容进行精细控制。

额外讨论

你说:

我正在使用git来自 from Perforce,所以我试图让 stash 适合“搁置”模具,但我认为分支是更好的方法。与此相关的是gitextensions那种从我的藏匿处创建一个分支,所以我可能能够藏匿但在抓取单个文件时将其视为一个分支。

在内部,每个 stash 都存储为一个提交,链接到HEAD创建 stash 时的提交,但不链接到前一个 stash(如果有)。存储列表存储为元数据;该窝点都没有联系的(隐藏)分支。

更多,git stash create允许在不将其添加到存储列表中的情况下创建存储。它是为脚本和“可能不是您想要使用的命令”提供的(我从文档中引用)。


Ans*_*ngi 5

您是否尝试过 Sourcetree: http: //www.sourcetreeapp.com/

它可能会解决你的问题。

  • SourceTree 是一个很好的“Git” GUI 客户端,但它无法存储单个文件。也许这是因为“stash”命令不是设计成这样工作的? (3认同)