1

我知道如何检查本地更改:在提交之前
获取更改:

git diff master

在提交后&&在 push 之前获取更改:

git diff origin/master
or
git diff remotes/origin/master 

我想要的是:

  1. git 从远程服务器克隆最新版本,例如本地版本为v1
  2. 从另一端更改远程服务器,例如远程版本为v2,(本地版本仍为 v1
  3. 与远程服务器不同

而且,我知道如何通过以下步骤在远程服务器中进行更改:

git remote foo git@github.com:user/foo.git
git fetch foo
git diff master foo/master

但是,我想为一个命令设置别名来检查远程服务器中的更改,例如:

git rdiff master
or something else

是否可以通过一条评论在远程服务器中进行更改?谢谢。


对了,我发现,在本地repo中已经获取了一个origin,不重新获取怎么使用呢?

$ git remote -v
origin  git@github.com:Marslo/VimConfig.git (fetch)
origin  git@github.com:Marslo/VimConfig.git (push)
4

2 回答 2

1

首先,这有一个逻辑问题:

git rdiff master

您要与哪个遥控器进行比较?所以在这个列表中,它应该是这样的:

git rdiff remote_name branch_name

应扩展为:

git fetch remote_name && git diff remote_name/branch_name

您可以准确地创建该别名(例如在 ~/.gitconfig 中):

[alias]
    rdiff = "!sh -c 'git fetch \"$0\" && git diff \"$0\"/\"$1\"'"

它告诉 shell 使用给定的参数运行上述命令。


其他一些注意事项:

  • 取而代之的是git diff master,您可以简单地编写git diffwhich 与您所在的当前分支取得差异,而不必master
  • 而不是git diff master foo/master,您可以简单地编写(如果没有本地更改)git diff foo/master执行相同的操作。由于您不重复 master 两次,因此打字更容易。
  • 您无需每次都更换遥控器。您可以在同一个存储库中拥有多个遥控器。因此,您可以这样做(注意您错过了add):

    git remote add foo git@github.com:user/foo.git
    

    并将其永久保存在您的存储库中。现在您仍然可以与 进行交互origin,这是您克隆存储库时自动创建的远程。同时,您还可以与您创建的另一个遥控器进行交互,名为foo. 因此,在同一个存储库中,您可以执行以下操作:

    # get updates from origin
    git fetch origin
    git merge origin/master
    
    # check them against foo
    git rdiff foo master
    
于 2013-11-06T13:49:50.483 回答
0

感谢@Shahbaz。

rdiff用于获取本地 repo 和远程服务器之间的差异,别名是:

rdiff = "!bash -c 'git fetch && git diff master remotes/origin/master'"

它看起来像
rdiff

而且,我还制作了“ rlog ”和“ rlogs ”,它从远程服务器获取日志:

plog = log --max-count=3 --color --graph\n --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C( blue)<%an>%Creset'\n --abbrev-commit --date=relative
plogs = log --color --graph\n --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(blue)<%an>%Cr eset'\n --abbrev-commit --date=relative
rlog = "!bash -c 'git fetch && git plog remotes/origin/master'"
rlogs = "!bash -c 'git fetch && git plogs remotes/origin/master'"

它将显示:
日志

于 2013-11-07T11:57:27.170 回答