在创建原始结帐时,“git clean”后跟“git stash clear”多余吗?

时间:2014-05-06 12:20:30

标签: git git-stash git-reset git-clean

我想编写一个脚本,保证Git结帐成功,而无需用户干预。我不介意在没有用户干预的情况下倾倒任何无法解决的问题:例如,未提交的更改。我确实希望保留明确忽略的文件(我认为这些是"在版本控制下#34;)。

我根据How do you discard unstaged changes in Git?答案的聚宝盆制作了一个脚本,并修复了我遇到的错误(与Unstaged changes left after git --reset hardIgnoring “Your local changes to the following files would be overwritten by merge” on pull类似但不完全相同)。

我现在担心我的零碎脚本包含冗余,或者可能会缩短。以下任何一个呼叫都是多余的吗?

cd /SOME/FOLDER
git clean -df & git checkout .
git stash
git stash clear
git checkout SOME-BRANCH # or git checkout -B SOME-REMOTE SOME-BRANCH [1]
# possibly followed by a manual call to: git pull --rebase SOME-REMOTE

[1]这些来电可以是git checkout -fgit checkout -fB吗?

1 个答案:

答案 0 :(得分:1)

这是我在我的一个构建脚本中使用的,以创建HEAD的干净签出(用您想要的任何分支或提交替换HEAD,或使用shell变量) :

if [ $(git status --porcelain -uall | wc -l) -gt 0 ]; then
  echo "Creating pristine checkout of HEAD."
  git reset --quiet --hard HEAD
  git clean --quiet -fd
fi

if子句检查是否有任何事情要做。如果你不关心它可能(甚至可能不会)带来的效率略有提高,你可以把它留下来。

如果您还要删除忽略规则(.gitignore文件)中的文件,则需要将-x选项提供给git-clean,以及--ignored的{​​{1}}选项;你提到你希望这种情况发生。

我不认为你做的任何其他电话都是必要的。清除藏匿物不是必要的(但它也没有伤害)。