【发布时间】:2023-04-03 22:07:01
【问题描述】:
我使用git pull 来确保本地存储库是最新的。但是,git pull 有时会失败。如果您有未提交的更改,git pull 将失败。是否有 git 或 shell 选项来确保如果命令失败,脚本的其余部分会继续执行?
目前的脚本是:
if [ -d "some-repo" ]; then
cd "some-repo"
git pull
#RESCUE????
else
git clone git@github.com:USERNAME/some-repo.git
cd "some-repo"
fi
我不想结帐一个分支,我并不真正关心不同分支中正在进行的工作。我知道可以使用git reset --hard 或使用--force 命令,但我想确保它是安全的,并且该代码不会丢失。
【问题讨论】:
-
脚本的棘手之处在于:
git pull实际上是一个git fetch,后跟一个git merge,是新更新的跟踪分支到其本地分支对应项。提取可能会失败,但合并也可能会失败。所以我认为你需要考虑失败的类型。 -
您可以在每次创建
git pull之前进行预防性git stash,然后是git stash pop。请记住,当您git stash pop时可能会出现冲突。 -
@cfz42 我喜欢这个主意。如果存在冲突,pop 实际上不会弹出存储,因此您的更改是安全的。
-
我只想提一下,如果我不使用 ruby 进行编程,我可能会将其描述为 try / catch git pull。