更新修改后的git repo?

时间:2017-03-25 10:11:38

标签: git github

我在git上有一个存储库,我将其克隆到一个编译并运行它的服务器中。

由于该服务器在我的网络上是本地服务器,我可以进一步克隆可以通过samba访问的项目,甚至可以在我喜欢的编辑器上打开它,然后从那里开始工作,进行我需要的更改或其他任何内容。

这是事情变得复杂的地方,我希望能够保留我在服务器上的克隆,与git存储库同步(最新)(我无法推送),同时保留我在本地更改到我的服务器存储库。

最常见的做法是,如果针对此特定情况有一个或者应该建议的路线应该遵循什么?

如果我必须描述我现在的流程,它看起来像这样:

  1. git reset --hard origin / master
  2. git fetch origin
  3. 重做所有更改
  4. 重复原点上的新东西...
  5. 我认为,在任何一种情况下我都需要步骤1和2,因为如果我提交git会抱怨更改的文件不允许简单git pull

    上述的替代方案,我认为会是这样的:

    1. 生成补丁
    2. git reset --hard origin / master
    3. git fetch origin
    4. 应用补丁(此处可能会失败,具体取决于文件的更改方式,因此手动更容易识别...)
    5. 重复原点上的新东西...
    6. 再次重复我的问题:

      • 对于这种特定情况,最常见的做法是什么,如果有,对于这种情况应该遵循建议的路线?

      我不是git的专家,我知道如何使用它,但上面的场景对我来说是新的。

2 个答案:

答案 0 :(得分:2)

你为什么不use a branch

当你克隆存储库时,你就得到了一个本地存储库。您可以创建分支并使用它们在本地对代码进行版本控制,而无需推送到远程。

根据主人

创建自己的分支
body {
  background-color: grey; /* This is the color in the sides */
}

#page {
  max-width: 500px; /* This is how wide you want everything to be */
  margin: 0 auto; /* And this trick centers everything horizontally */
}

.BarSize { /* this is only a placeholder, replace with you actual navbar code */
  height: 60px;
  background-color: black;
  margin-bottom: 1em;
} /* placeholder ends */

.content {
  background-color: white; /* This is the color in the middle */
  
  padding: 2em; /* This is again only an example, doesn't affect the layout */
}

继续将您的更改提交至<div id="page"> <div class="BarSize"> <!-- This is your navigation bar, replace with your code --> </div> <div class="content"> Here you can put your content </div> </div>。每当更改出现在远程存储库中时,请更新git checkout master git checkout -b mybranch 并将其合并到mybranch

如果您设置了自己的remote,也可以与他人分享您的工作。 Git允许您使用多个远程存储库。如果您无法访问用于克隆项目的项目,那么没有什么能阻止您创建自己的项目。

答案 1 :(得分:1)

首先,您应该按照GitHub帮助中的说明create a fork。执行此操作后,您将在GitHub服务器上拥有本地存储库和个人克隆(或分支)。当地的回购有两个&#34;遥控器&#34;。 origin指向您的个人GitHub回购。 upstream指向原始主回购。

现在,当您想要进行自己的更改时,您应该创建一个分支:

$ git checkout -b mybranch master

此命令将创建分支并将其签出。现在,您可以使用git addgit commit将更改提交到本地仓库。

如果您决定将更改提交到原始仓库,那么首先需要将您的分支机构推送到您的个人GitHub仓库:

$ git push origin mybranch

然后登录您的GitHub帐户并创建一个Pull Request。您的更改将由原始仓库的维护人员审核。他们很可能会在接受之前提出改进变更所需的建议。

更新原始仓库后,您可以使用

将这些更改提取到本地仓库
$ git checkout master
$ git pull upstream master

您还可以使用

更新您的个人GitHub回购
$ git push origin master

您可以使用

将更改合并到自己的工作中
$ git checkout mybranch
$ git merge master

如果原始仓库的更新与您自己的工作之间存在任何冲突的变化,那么git会告诉您。然后,您必须手动解决这些冲突。您可以直接在任何文本编辑器中执行此操作,也可以使用许多可用的可视化工具之一。有关详细信息,请参阅How to resolve merge conflicts in Git?