在拉之前得到最后一次提交的sha

时间:2013-07-08 09:47:53

标签: git bash

拔出后,git会列出自上次拉动以来修改过的文件。

问题是,如何在本地回购上完成更多工作后获取此列表。

e.g。

$ git checkout feature/default2
$ git pull
Updating 5420c70..b8eec49
Fast-forward
 application/configs/application.ini                                 |   1 +
 application/modules/product/forms/Search.php                        |   3 ++
 public/themes/default/bootstrap/buttons.less                        |  25 -----------
 public/themes/default/css/cmspanel.css                              | 234 ++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------------
 public/themes/default/css/products.css                              |  57 ++++++++++++++++++++----
 public/themes/default/css/style.css                                 | 270 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------
 public/themes/default/gfx/icons/menu-drop-dark.png                  | Bin 0 -> 160 bytes
 public/themes/default/gfx/icons/more.png                            | Bin 0 -> 120 bytes
 public/themes/default/layouts/scripts/footer.phtml                  |  26 ++++++++++-
 public/themes/default/layouts/scripts/gallery.phtml                 |   2 +
 public/themes/default/layouts/scripts/home.phtml                    |   2 +
 public/themes/default/layouts/scripts/layout.phtml                  |   2 +
 public/themes/default/layouts/scripts/products.phtml                |  22 ++++-----
 public/themes/default/less/cmspanel.less                            |  26 +++++++++++
 public/themes/default/less/nav.less                                 |   4 +-
 public/themes/default/less/products.less                            |  61 +++++++++++++++++++++----
 public/themes/default/less/style.less                               |  59 ++++++++++++++++++++++---
 public/themes/default/less/widgets.less                             |  37 +++++++++++++++-
 public/themes/default/modules/cms/scripts/widgets/random.phtml      |   6 +--
 public/themes/default/modules/default/scripts/widgets/submenu.phtml |   2 +-
 public/themes/default/modules/product/scripts/index/view.phtml      |  44 +++++++++---------
 public/themes/default/modules/product/scripts/widgets/search.phtml  |  16 +++++++
 22 files changed, 584 insertions(+), 315 deletions(-)
 create mode 100644 public/themes/default/gfx/icons/menu-drop-dark.png
 create mode 100644 public/themes/default/gfx/icons/more.png

5420c70是拉前的状态 如何确定5420c70 sha?

如果我是正确的,ORIG_HEAD是最后一次拉动之前的状态(任何拉动,而不是引入一些变化的拉力)。

我正在寻找像git checkout SOME_HEAD这样的魔术别名来为我做git checkout 5420c70

我正在尝试设置git review别名,该别名应该区分自上次拉动以来修改过的所有文件,这些文件不是最新的。

在基本情况下,这样的事情有效:

git pull
# lists some chanes file
git diff --name-status ORIG_HEAD..
# diffs them

但我正在寻找类似的东西:

git pull
# lists some chanes file
git pull
# up-to-date, no changes
git diff --name-status ORIG_HEAD..
# diffs the files since the last pull which was not up-to-date

4 个答案:

答案 0 :(得分:4)

我认为您可以查看reflog,即HEAD@{1},例如它diff --name-only ..HEAD@{1}

作为另一种选择,您可以git fetch然后执行git log -p ..@{upstream}查看即将发生的更改,然后git merge FETCH_HEAD将更改带入您的工作副本。

答案 1 :(得分:3)

查看reflog后,我发现这就是我要找的东西:

git reflog --oneline | grep -m 1 "pull " | cut -d' ' -f1)

这将只返回上一次成功提取的一个sha,可以在showlogdiff等中使用。

答案 2 :(得分:0)

如果我明白你想要什么,git pull不是你需要的命令,你应该看看git fetch

完成后你可以做到

git diff HEAD...origin请注意,您需要3个点而不是通常的2个点

这将给出所有变化的单一差异。如果您满意,可以使用git mergegit cherry-pick仅使用{{1}}合并它们

答案 3 :(得分:0)

git log -n 1 --pretty=format:%H