执行 git stash 、 git checkout mybranch 、 git stash pop 的管道命令是什么?

CLS

我想创建一个执行以下操作的脚本:1) git stash 2) git checkout myBranch 3) git stash pop

有哪些 git 管道命令可以替代上述 git 瓷器命令?

编辑:

基于 Mark Adelsberger 和 Torek 非常详细和冗长(谢谢你们)的回答,我将坚持使用瓷器命令。我还要注意以下声明,我发现它对何时使用瓷器与管道命令非常有帮助。

引自 Mark Adelsberger 的回答:

“由于您使用的命令不会产生驱动脚本的输出,因此我不会太担心寻找管道等效项。”

周二

首先,值得快速提醒的git stash save是,它的工作方式是进行一次新的提交——或者实际上,至少有两次提交,但其中一个是主要提交,这是从那时起用来处理它的哈希 ID上。所以我们可以将其称为“存储提交”:它就像任何其他提交一样,除了(a)它不在分支上,并且(b)它看起来像一个合并提交,但永远不应该用作合并提交。

git stash命令本身是一个非常有没有直接的管道相当于复杂的脚本。但是,它确实(自 Git 1.8.4 起)有自己的方式用作管道,通过git stash create(可选地,后跟git stash store以分配存储提交名称)。

create 步骤使 stash 提交git stash save,但不会为其分配条目,因此所有现有的 stash 都以通常的方式命名。请注意,就像如果没有任何东西可以隐藏,它什么都不做。的输出是新的主存储提交的哈希 ID,如果没有新提交,则根本没有。stash@{number}git stash savegit stash save

如果这会创建一个存储提交,您有 14 天(默认情况下)为其命名或完成使用。如果您预计您的命令序列需要超过 14 天,您可能希望使用git stash store它作为 将其推入存储堆栈stash@{0},将所有其他人重新编号为一个。如果您认为您的脚本将在 14 天的宽限期内完成,您甚至不需要发明一个名称:您只需将存储提交哈希传递给git stash apply.

因此:

commit=$(git stash create)
... do your thing here ...
if [ "$commit" != "" ]; then git stash apply $commit; fi

(正如Mark Adelsberger 指出的,您应该检查是否apply成功,如果没有,您可能应该给存储提交一个名称)。

至于git checkout,管道相当于是一个有点复杂(它由原子决定结账是否会成功,然后如果是这样,使用git symbolic-ref重新绑定HEAD,同时使用git read-treegit checkout-index更新索引和工作树以匹配新的HEAD承诺,维护可以保留的索引和工作树修改)。如果您刚刚完成了成功git stash save或等效的操作,则仅在以下情况下会发生剩余的失败案例:

  • 有未跟踪的文件(在工作树中但不在索引中的文件)将通过切换提交被跟踪,或者
  • 索引中的文件带有--skip-worktree--assume-unchanged设置,将通过切换提交在索引中更改(因此在工作树中)

所以几乎可以将其简化为一些简单的管道命令。无论如何可以用作管道。你可能还不如直接使用它。git checkout branchname

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

丢弃Git Stash Pop

来自分类Dev

为什么 git stash pop 作为应用

来自分类Dev

为什么git stash导致冲突后立即出现git stash pop?

来自分类Dev

git stash创建和git stash存储的目的是什么?

来自分类Dev

由于冲突而无法“ git stash pop”

来自分类Dev

撤消git reset-在git stash pop之后很难

来自分类Dev

git reset stash的语义是什么?

来自分类Dev

git-stash和git-checkout有什么区别?

来自分类Dev

“ git stash apply”或“ git stash pop”是否还会添加修改后的文件以进行提交?

来自分类Dev

如何在git stash -k和git stash pop弹出之前返回?

来自分类Dev

偶然跑了git stash pop两次

来自分类Dev

git stash pop:放弃单个文件中的本地更改

来自分类Dev

Git stash pop 错误:无法创建文件权限被拒绝

来自分类Dev

git remove file from stash

来自分类Dev

git stash恢复被忽略的文件

来自分类Dev

git stash在Windows上很慢

来自分类Dev

git stash恢复被忽略的文件

来自分类Dev

Git 不断失去对 stash 的引用

来自分类Dev

如何撤消 git stash --all

来自分类Dev

git stash show和git show有什么区别?

来自分类Dev

执行git stash --include-untracked时丢失跟踪文件

来自分类Dev

git stash save 和 git stash store 有什么区别?

来自分类Dev

如何解决`git stash pop`子模块上的git merge冲突

来自分类Dev

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

来自分类Dev

使用git stash分支时找不到stash

来自分类Dev

别名:`git pop last`,代表`git stash pop [列表中的最后一个藏匿处”`

来自分类Dev

为什么git stash创建两个提交

来自分类Dev

为什么git-stash选项不带破折号?

来自分类Dev

git stash save 做什么 git stash 不做什么,你会在什么情况下使用它?

Related 相关文章

热门标签

归档