可能重复:
如何仅存储已更改的多个文件中的一个文件
如何保存特定文件,将当前已修改的其他文件保存在我要保存的存储区中?
例如,如果git status给我这个:
younker % gst
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: app/controllers/cart_controller.php
# modified: app/views/cart/welcome.thtml
#
no changes added to commit (use "git add" and/or "git commit -a")
Run Code Online (Sandbox Code Playgroud)
我只想藏匿app/views/cart/welcome.thtml,我该怎么做?有点像(但当然这不起作用):
git stash save welcome_cart app/views/cart/welcome.thtml
Run Code Online (Sandbox Code Playgroud)
svi*_*ick 2183
编辑:从git 2.13开始,有一个命令可以保存存储的特定路径:git stash push <path>.例如:
git stash push -m welcome_cart app/views/cart/welcome.thtml
Run Code Online (Sandbox Code Playgroud)
老答案:
您可以使用git stash --patch(或git stash -p)执行此操作- 您将进入交互模式,在该模式下,您将看到每个已更改的块.使用n跳过你不想藏匿,文件y当你遇到要藏匿之一,q退出并离开unstashed剩余的帅哥. a将隐藏显示的大块和其余的帅哥藏在那个文件中.
这不是最用户友好的方法,但如果你真的需要它,它可以完成工作.
ska*_*lee 301
我通常添加索引更改,我不想隐藏,然后使用--keep-index选项存储.
git add app/controllers/cart_controller.php
git stash --keep-index
git reset
Run Code Online (Sandbox Code Playgroud)
最后一步是可选的,但通常你想要它.它从索引中删除更改.
警告 正如评论中所述,这会将所有内容放入存储中,无论是暂存还是非暂存.在保存完成后,--keep-index只保留索引.以后弹出存储时,这可能会导致合并冲突.
Hon*_*ang 275
对于隐藏一个文件:
\ngit stash -- filename.txt\nRun Code Online (Sandbox Code Playgroud)\n要在命令中给出消息而不是在提示时输入消息,请在文件部分之前添加 -m,例如git stash -m "stash-message" -- filename1.txt
对于存储多个文件:
\ngit stash -m "stash-message" -- filename1.txt filename2.txt\xe2\x80\xa6\nRun Code Online (Sandbox Code Playgroud)\n
qiu*_*qiu 78
要添加到 svick 的答案中,该-m选项只是将一条消息添加到您的存储中,并且完全是可选的。因此,命令
git stash push [paths you wish to stash]
Run Code Online (Sandbox Code Playgroud)
是完全有效的。因此,例如,如果我只想存储src/目录中的更改,我可以运行
git stash push src/
Run Code Online (Sandbox Code Playgroud)
Vic*_*y P 23
简短而简单的解决方案:
git stash -- filename.ext
Run Code Online (Sandbox Code Playgroud)
在你的情况下git stash -- app/views/cart/welcome.thtml
Omk*_*war 13
src/config/bl.go
src/config/dl.go
如果你只想存储 dl.go
显示您的藏匿清单
然后检查您的分支机构并应用隐藏
如果您可以使用 GIT GUI 客户端,那么自 2020 年 5 月起,Fork可以非常无缝地完成此操作。部分存储功能的 GIF 将比任何文字更好地展示这一点:
请注意,Fork(这对 Google 来说是一个很难取的名字!)不是免费软件,评估期后的费用为 50 美元,但您可以像对待 WinRAR 或 WinZip 一样忽略弹出窗口。
小智 5
@svick 发布了一个很好的答案。我想隐藏所有 .java 文件并保持 build.gradle 不变,所以我运行:
git stash push *.java
Run Code Online (Sandbox Code Playgroud)
由于 git,2.35.0您可以使用标志来存储分阶段的更改--staged | -S。
例如:
git stash --staged
Run Code Online (Sandbox Code Playgroud)
——上演的
该选项仅对推送和保存命令有效。
仅存储当前正在进行的更改。这与基本的 git commit 类似,只是状态被提交到存储而不是当前分支。
--patch 选项优先于该选项。
https://git-scm.com/docs/git-stash/2.35.0#Documentation/git-stash.txt---暂存
这个新功能的好处在于,不仅可以存储特定的未跟踪文件,还可以存储跟踪文件中代码更改的特定部分;当您使用--patch | -p标志将它们添加到舞台时。
| 归档时间: |
|
| 查看次数: |
569938 次 |
| 最近记录: |