尝试签出一个新分支,而不是实际签出
Try to checkout a new branch, without actually checking it out
我有一个 bash 脚本,我通过检查一个新分支来测试 git 状态是否干净,如果我不能这样做,我知道状态是不干净。然而,方便的是只尝试签出一个新分支而不是实际执行它,例如:
git checkout --dry -b temp
或者,如果有一种方法可以使用 git 状态来获取非零退出代码(如果它不干净),那也可以。
你需要更明确地表达你的意思。
即使您有未提交的修改(有时)也可以切换分支:参见 Checkout another branch when there are uncommitted changes on the current branch。
总是可以创建新分支而不更改提交,这就是git checkout -b <em>name</em>
会(除非 name
命名一个现有分支,在这种情况下检出失败)。
您可以有一个处于未合并状态的索引。对此的测试是使用git write-tree
:如果失败,则索引处于未合并状态。
您可以拥有一个包含与 HEAD
提交不同的文件但未处于未合并状态的索引,并且您可以拥有一个包含与其 [=15] 不同的文件的工作树=] and/or 索引副本。测试这些更复杂。
您可以拥有状态有趣的子模块。
在 git-sh-setup
中有针对其中几个条件的测试,可在 git --exec-path
:
所在的 git-core 目录中找到
. $(git --exec-path)/git-sh-setup
require_clean_work_tree "$action"
这将打印:
Cannot $action: You have unstaged changes.
或:
Cannot $action: Your index contains uncommitted changes.
(或两者,以更明智的方式)和 return 一个非零错误代码,视情况而定。
我有一个 bash 脚本,我通过检查一个新分支来测试 git 状态是否干净,如果我不能这样做,我知道状态是不干净。然而,方便的是只尝试签出一个新分支而不是实际执行它,例如:
git checkout --dry -b temp
或者,如果有一种方法可以使用 git 状态来获取非零退出代码(如果它不干净),那也可以。
你需要更明确地表达你的意思。
即使您有未提交的修改(有时)也可以切换分支:参见 Checkout another branch when there are uncommitted changes on the current branch。
总是可以创建新分支而不更改提交,这就是git checkout -b <em>name</em>
会(除非 name
命名一个现有分支,在这种情况下检出失败)。
您可以有一个处于未合并状态的索引。对此的测试是使用git write-tree
:如果失败,则索引处于未合并状态。
您可以拥有一个包含与 HEAD
提交不同的文件但未处于未合并状态的索引,并且您可以拥有一个包含与其 [=15] 不同的文件的工作树=] and/or 索引副本。测试这些更复杂。
您可以拥有状态有趣的子模块。
在 git-sh-setup
中有针对其中几个条件的测试,可在 git --exec-path
:
. $(git --exec-path)/git-sh-setup
require_clean_work_tree "$action"
这将打印:
Cannot $action: You have unstaged changes.
或:
Cannot $action: Your index contains uncommitted changes.
(或两者,以更明智的方式)和 return 一个非零错误代码,视情况而定。