git使用终端与远程主站进行本地合并

时间:2014-09-03 16:30:19

标签: git github terminal osx-mavericks

很抱歉提出一个可能被问过一千次的问题。但我甚至不知道类似的问题可能是什么样的。

  • master(在github.com上)有我的本地仓库没有的更改
  • 我的本地仓库有主人没有的变更
  • 用于同步两者的git命令是什么?

我正在使用mac终端(osx-mavericks)

如果我理解术语很好,我的不是分支分支,它实际上只是本地副本的主人。出现分歧的原因是我在对本地回购进行一些更改之前忘了拉大师。现在我需要合并,但推送不起作用。

master :github.com上的远程仓库

本地回购:我本地计算机上的代码

3 个答案:

答案 0 :(得分:3)

这是一个三步过程:

  1. 提交本地更改
  2. 从远程拉
  3. 推送到远程
  4. 按照通常的方式行事:

    git add --all .
    git commit -m "the local changes that I have made"
    

    然后按照通常的方式拉动:

    git pull somerepo master
    

    我认为你已经知道如何提交以及如何基于对话进行提取

    为了安全起见,拉动之后,我喜欢马上推。

答案 1 :(得分:2)

首先,确保您的本地仓库知道远程仓库中的所有内容:运行

git fetch

现在,根据您的问题和评论,我猜测您的本地仓库看起来像这样:

enter image description here

生活在当地仓库中的master分支在某种程度上与居住在当地仓库中的master分支不同。在这种情况下,Git不允许您将(本地)master分支推送到远程分支。

通过"同步两个",我假设您的意思是组合master上的更改和projectname/master上的更改。 你基本上有两种方法:合并或变基。

在继续操作之前,请确保您已通过

运行master
git checkout master

(在下文中,我假设您的本地存储库知道名为projectname的远程存储库。)

选项1:合并

运行

git merge projectname/master

您的回购将如下所示:

enter image description here

之后,只需运行

git push projectname master

masterprojectname/master应该是最新的(即指向同一个提交):

enter image description here

选项2(更高级......谨慎行事):rebase

运行

git rebase projectname/master

你的回购应该是这样的:

enter image description here

之后,只需运行

git push projectname master

masterprojectname/master应该是最新的(即指向同一个提交):

enter image description here

答案 2 :(得分:-1)

我不确定您是如何创建本地GIT系统的。

根据您的描述,您创建了一个本地回购????你想与github.com上的回购同步它???同步2回购是非传统的。

但是,我正在为github.com上的repo(远程主分支指定为origin / master)提供解决方案,并在系统上指定为本地主分支的远程主分支的本地跟踪副本。

结帐输出命令 git remote show origin 。它应输出如下。

HEAD branch: master
   Remote branch:
        master tracked
   Local branch configured for 'git pull':
        master merges with remote master

如果不是,那么你会采用其他不常规的东西。

您是否使用 git clone git init 创建了本地GIT系统???

传统方式:

  1. github.com上的回购名称= myrepo
  2. git clone user@github.com/myrepo.git
  3. 以上命令会自动创建本地主分支跟踪到远程主控,这只是回购。
  4. 现在你可以在你的本地GIT系统上进行其他GIT操作,例如添加,提交,合并,推送,拉取和非常重要的分支。
  5. 希望它会有所帮助。