0

我想编写一个脚本来保证在没有用户干预的情况下成功检出 Git。我不介意在没有用户干预的情况下转储任何无法解决的问题:例如,未提交的更改。我确实想保留明确忽略的文件(我认为这些文件“受版本控制”)。

我根据如何在 Git 中丢弃未分级更改的答案的聚宝盆制作了一个脚本?并修复我随着时间的推移遇到的错误(类似于但不完全相同git --reset hard和Ignoring “Your local changes to the following files will be overwritten by merge” on pull之后留下的 Unstaged changes left)。

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

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 -fandgit checkout -fB吗?

4

1 回答 1

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选项 togit-clean--ignored选项 to git-status; 你提到你希望这种情况发生。

我认为您拨打的其他任何电话都没有必要。清除存储是不必要的(但它也没有伤害)。

于 2014-05-06T12:34:51.847 回答