如何获取分支的最新代码?

时间:2016-06-26 14:42:24

标签: git shell

我想写一个bash来做一个汽车制造。但我只知道如何签出分支并手动提取最新代码。我想使用bash切换到或签出(如果需要)分支,然后提取最新代码。

我的问题:

  1. 如何检查分支机构是否存在于本地?
  2. 如何检查我们是否有本地更改?
  3. 或者有更快的方式来完成更新吗?

    ====

    对于问题1,看起来我可以直接使用git checkout

    对于问题2,如何知道git命令是否出错?

3 个答案:

答案 0 :(得分:2)

看到你手动处理冲突,我会做以下事情:

  1. 检查是否有任何本地更改。如果使用git stash保存所有更改/未跟踪文件,则继续。
  2. 结帐分行
  3. 如果有本地更改,请使用stash apply应用本地更改。
  4. 如果stash apply导致冲突,请使用git stash --reverse撤消应用并退出,并显示一些错误,指示需要手动合并。
  5. **构建逻辑**
  6. 所有这一切都可以通过以下方式完成:

    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