我试图找出如何在许多未提交的更改中存储两个特定文件.
这个非常有前途的答案,Stash只有一个文件中的多个文件已经改变了Git?,没有显示用法,我遇到了麻烦.
以下不起作用,手册页不是很有帮助(它似乎谈论终端输出,而不是实际存储).我想隐藏application.conf,plugins.sbt然后提交其他所有内容.
app (master)$ git status
On branch master
Your branch is ahead of 'origin/master' by 29 commits.
(use "git push" to publish your local commits)
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: views/mobile/blog.scala.html
modified: views/mobile/slideshow.scala.html
modified: ../public/css/mobile/styles.css
Unmerged paths:
(use "git reset HEAD <file>..." to unstage)
(use "git add <file>..." to mark resolution)
both modified: ../conf/application.conf
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: ../project/plugins.sbt
app (master)$ git stash -p ../conf/application.conf ../project/plugins.sbt
usage: git stash list [<options>]
or: git stash show [<stash>]
or: git stash drop [-q|--quiet] [<stash>]
or: git stash ( pop | apply ) [--index] [-q|--quiet] [<stash>]
or: git stash branch <branchname> [<stash>]
or: git stash [save [--patch] [-k|--[no-]keep-index] [-q|--quiet]
[-u|--include-untracked] [-a|--all] [<message>]]
or: git stash clear
Run Code Online (Sandbox Code Playgroud)
Flo*_*sch 26
使用
git stash --patch
Run Code Online (Sandbox Code Playgroud)
然后git将为您可能提交的每个块显示如下对话框:
diff --git files over files
index e69de29..ac4f3b3 100644
--- a/file.txt
+++ b/file.txt
@@ -0,0 +1 @@
+you did awesome stuff!
Stash this hunk [y,n,q,a,d,/,e,?]?
Run Code Online (Sandbox Code Playgroud)
大块是线条的连贯差异,因为git-diff产生它.要选择一个文件d,只要你到达那个文件就必须加密,然后你可以a从该文件中添加ll hunks.
你也可以通过用yes 回答问题来选择一个大块头.如果大块似乎太大了,你甚至可能会s抓住它.也可以e改变当前的大块头.
--patch可以在不同的git命令(fe stash,commitand add)上使用-option .
这是--patch函数的详细解释,我从开发人员文档中获取了这些函数:
This lets you choose one path out of a 'status' like selection.
After choosing the path, it presents the diff between the index
and the working tree file and asks you if you want to stage
the change of each hunk. You can select one of the following
options and type return:
y - stage this hunk
n - do not stage this hunk
q - quit; do not stage this hunk or any of the remaining ones
a - stage this hunk and all later hunks in the file
d - do not stage this hunk or any of the later hunks in the file
g - select a hunk to go to
/ - search for a hunk matching the given regex
j - leave this hunk undecided, see next undecided hunk
J - leave this hunk undecided, see next hunk
k - leave this hunk undecided, see previous undecided hunk
K - leave this hunk undecided, see previous hunk
s - split the current hunk into smaller hunks
e - manually edit the current hunk
? - print help
Run Code Online (Sandbox Code Playgroud)
在最新版本的Git (> v2.13) 中,您可以使用暂存要存储的特定文件
git stash push -- <pathspec>
Run Code Online (Sandbox Code Playgroud)
例如,如果您暂存要存储的特定文件,则可以使用此命令专门仅存储这些文件:
git stash push -- example/file/path/and/file.html
Run Code Online (Sandbox Code Playgroud)
您可以通过使用通配模式将特定文件存储在路径中来节省一些输入
git stash push -- **/path/**
Run Code Online (Sandbox Code Playgroud)
您只希望暂存您想要暂存的文件,因为任何其他暂存文件都将与特定文件一起暂存,但也会在暂存后保持暂存状态,以免git stash pop发生冲突。
git stash -p不带参数使用.然后,您将能够以交互方式选择要隐藏的更改:
diff --git a/test b/test
index acbd8ae..662d47a 100644
--- a/test
+++ b/test
@@ -10,6 +10,7 @@ test
(...)
+ test
(...)
Stash this hunk [y,n,q,a,d,/,e,?]?
Run Code Online (Sandbox Code Playgroud)
不幸的是,不可能选择文件,只有帅哥.