如何方便地更改远程服务器

时间:2013-11-06 13:34:15

标签: git

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

git diff master

提交后更改 &&推送前

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

我想要的是:

  1. git克隆远程服务器的最新版本,例如,本地版本为 v1
  2. 从另一侧更改远程服务器,例如,远程版本 v2 ,(本地版本仍为v1
  3. 与远程服务器不同
  4. 并且,我知道如何通过以下步骤在远程服务器中进行更改:

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

    但是,我想使用一个命令来检查远程服务器中的更改,例如:

    git rdiff master
    or something else
    

    可以通过一条评论来获取远程服务器的更改吗?感谢。


    顺便说一句,我发现在本地仓库中有一个来源 抓取,如何在不再获取它的情况下使用它?

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

2 个答案:

答案 0 :(得分: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 diff,而master会使用您所在的当前分支获取差异,但不一定是git diff master foo/master
  • 您可以简单地编写(如果没有本地更改)git diff foo/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 是克隆存储库时自动创建的远程数据库。同时,您还可以与您创建的另一个名为{{1}}的遥控器进行交互。所以在同一个存储库中,您可以这样做:

    {{1}}

答案 1 :(得分:0)

感谢@Shahbaz。

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

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'"

它将显示:
rlogs