我想写一个bash来做一个汽车制造。但我只知道如何签出分支并手动提取最新代码。我想使用bash切换到或签出(如果需要)分支,然后提取最新代码。
我的问题:
或者有更快的方式来完成更新吗?
====
对于问题1,看起来我可以直接使用git checkout
。
对于问题2,如何知道git
命令是否出错?
答案 0 :(得分:2)
看到你手动处理冲突,我会做以下事情:
git stash
保存所有更改/未跟踪文件,则继续。stash apply
应用本地更改。stash apply
导致冲突,请使用git stash --reverse
撤消应用并退出,并显示一些错误,指示需要手动合并。所有这一切都可以通过以下方式完成:
if [ -z "$(git status --porcelain)"]; then
git checkout remote/branch
else
git stash
git checkout remote/branch
git stash apply
#Check if there are any unmerged files, if there is, exit with error
if [ ! -z "$(git ls-files -u) "]; then
echo "Error: there seems to be some conflicts"
exit 1
fi
fi
** your build logic **
答案 1 :(得分:1)
如果仅用于自动构建,git fetch <remote> <branch> && git checkout -f FETCH_HEAD
就足够了。只要您确定<branch>
和<remote>
名称正确,此cmd始终会从远程服务器获取<branch>
的最新提交。在git cmd之后的bash中,跟随&#34; echo $?&#34;可以给出git cmd的退出状态。通常,如果它为0,则git cmd没有错误。如果非0,则表示错误。您可以在git <cmd> --help
中看到详细信息,其中一些可能会描述退出状态。
答案 2 :(得分:0)
见
man git-log
在获取更改后,您可以编写一些脚本来查看特定分支上的新提交
git log -n 1 origin/master