我想脚本,最好在瑞克,下面的行动纳入一个单一命令:

  1. 得到版本的我当地的仓库的内容。
  2. 文件的最新编码。
  3. 内设的比较从我提取的步骤#1什么现在是在我的地方储存库。

换句话说,我希望得到最新的码形式的中央储存库,并立即产生的差异有什么变化,因为我最后一次拉。

有帮助吗?

解决方案

你可以做这种相当简单有refspecs.

git pull origin
git diff @{1}..

这会给你一个比较的目前的分支,因为它之前和其后存在的拉。请注意,如果拉实际上并没有更新目前的分支,差异会让你误的结果。另一个选择是明确记录当前版本:

current=`git rev-parse HEAD`
git pull origin
git diff $current..

我个人使用的别名,简单地表示了我一个日志,在相反的顺序(即最早到最新的),无合并的所有提交自我上次拉。我跑来这每次我取更新的分支机构:

git config --global alias.lcrev 'log --reverse --no-merges --stat @{1}..

其他提示

格雷格的 应工作(不是我,其他Greg:P)。关于你的评论,起源是一个结构可变的,是通过Git当你的克隆的中央储存库以当地机。从本质上讲,个混库记得它是从哪里来的。你可以,但是,设定这些变量的手如果你需要使用混帐配置。

git config remote.origin.url <url>

其中url是远道路中央储存库。

这里是一个例子批文件,应工作(我没有测试过它)。

@ECHO off

:: Retrieve the changes, but don't merge them.
git fetch

:: Look at the new changes
git diff ...origin

:: Ask if you want to merge the new changes into HEAD
set /p PULL=Do you wish to pull the changes? (Y/N)
IF /I %PULL%==Y git pull

这是非常相似的一个问题我问了一下 如何获得的变化在一个分支.注意,该行为的内部差异与件的提交是不一致地同时采用两点与三个点。但是,为应用程序可以使用:

git fetch
git diff ...origin

在这之后, git pull 将合并改变到你的头上。

如果你放弃这为你庆典档案你就可以运行的grin(git远程传入)和水泥浆(git远程传出的)以看到的差异的承诺,进入和出去为产地的主人。

function parse_git_branch {
  git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'
}
function gd2 { 
 echo branch \($1\) has these commits and \($2\) does not 
 git log $2..$1 --no-merges --format='%h | Author:%an | Date:%ad | %s' --date=local
}
function grin {
 git fetch origin master
 gd2 FETCH_HEAD $(parse_git_branch)
}
function grout {
 git fetch origin master
 gd2 $(parse_git_branch) FETCH_HEAD
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top