如何在bash脚本中检出特定远程的最新提交

时间:2015-11-12 15:31:30

标签: git bash

我在本地有一个克隆的git存储库,想要检查最新的提交(远程 origin ),无论我目前检查的是什么分支,最新提交的分支是什么或者如果我在本地检查了最新提交的分支。

有没有办法使用git 2.4.9(在bash脚本中)进入独立于本地状态的最新(最后)源提交?

2 个答案:

答案 0 :(得分:3)

git log --branches的第一行将显示来自任何分支的最新提交。同样,git log --remotes的顶行将显示来自任何远程分支的最新提交。

首先,请确保您与来源保持同步:

git fetch origin

我习惯一次更新所有遥控器,但这不是必需的:

git remote update

如果要查看来自任何分支的最新提交,您可以执行以下操作:

git checkout `git log --remotes -1 --format=%H`

答案 1 :(得分:2)

git fetch origin
git branch --remotes                             |\
grep origin/                                     |\
grep -v origin/HEAD                              |\
xargs -n 1 git log -1 --format='format:%ct %h%n' |\
sort -n                                          |\
tail -1                                          |\
cut -d' ' -f2

一次一件:

  • git fetch只是确保您了解最新动态。
  • git branch --remote列出所有远程分支

    origin/HEAD -> origin/master
    origin/do_a_thing
    origin/master
    
  • grep origin/仅选择origin上的分支(如果您有多个遥控器)

  • grep -v origin/HEAD删除了将会阻碍的origin/HEAD -> origin/master
  • xargs -n 1一次将分支名称传递给...
  • git log

    • -1只接受分支上的最后一次提交
    • --format='format:%ct %h%n'打印UNIX提交时间(整数),SHA和换行符

      1446771676 5cac5ed
      1443639221 001a41a
      1426461600 ac41d80
      
  • sort -n提交时间为数字

  • tail -1最后一行(最晚时间)
  • cut -d' ' -f2拆分空间并拉出SHA