更改存储库时git

时间:2009-09-16 19:05:40

标签: git repository

我习惯从某人的git存储库中提取。今天他将他的存储库移到另一个地址。我想知道是否有一些方法让我从新地址中取出并获取他在移动前最后一次所做的更改的信息?

我所做的是从他的旧存储库中取出的“git clone newaddress”。输出如下:

  

得到xxx

     

走xxx

     

得到xxx

     

得到xxx

     

走xxx

     

获取newaddress的替换列表

     

获取新地址的包装清单

     

获取pack xxx的索引

     

获取包xxx

     

包含xxx

     

得到xxx

     

得到xxx

     

走xxx

     

...

然后我“git pull”并得到以下消息,我不明白:

  

你让我拉而不告诉我你是哪个分支   想要合并,和'branch.master.merge'在   你的配置文件也没告诉我。请   在命令行中命名要合并的分支   再试一次(例如'git pull')。   有关refspec的详细信息,请参阅git-pull(1)。

     

如果您经常与同一分支合并,则可能需要   在配置中配置以下变量   文件:

branch.master.remote = <nickname>
branch.master.merge = <remote-ref>
remote.<nickname>.url = <url>
remote.<nickname>.fetch = <refspec>
     

有关详细信息,请参阅git-config(1)。

现在我能做些什么才能获得他在移动前最后一次所做的更改?

谢谢和问候!

2 个答案:

答案 0 :(得分:23)

如果我正确理解您的问题,您要做的是用新的远程原点替换您当前的远程原点。我不知道你是否可以从命令行替换它,但你可以在.git/config中更改它(这在你的项目目录中)

OLD

[remote "origin"]
  url = git+ssh://original_repository.com/my_project.git
  ...

NEW

[remote "origin"]
  url = git+ssh://new_repository.com/my_project.git
  ...

git+ssh部分可能类似于git@(这就是你使用github时的情况),或者我确定其他各种事情。这可能有助于澄清一些我遗漏或不能很好解释的事情:Changing Your Origin

希望这有助于回答您的问题。欢呼声。

答案 1 :(得分:1)

在克隆的git存储库中运行它:

 git config branch.master.remote origin

照顾“你让我拉而不告诉我”......消息。

然后,如果您知道远程仓库的移动位置,那么您可以在新的克隆本地仓库中执行git diff此日期。

$ git diff "@{yesterday}"
$ git whatchanged --since="2 weeks ago"

注意:即将到来的git1.6.5 mentions

  

人类可写日期格式与各种选项,例如“--since=yesterday”,“master@{2000.09.17}”被教导正确地推断出一些省略的输入。

另见SO问题“How do you get git to always pull from a specific branch?