我在git上有一个存储库,我将其克隆到一个编译并运行它的服务器中。
由于该服务器在我的网络上是本地服务器,我可以进一步克隆可以通过samba访问的项目,甚至可以在我喜欢的编辑器上打开它,然后从那里开始工作,进行我需要的更改或其他任何内容。
这是事情变得复杂的地方,我希望能够保留我在服务器上的克隆,与git存储库同步(最新)(我无法推送),同时保留我在本地更改到我的服务器存储库。
最常见的做法是,如果针对此特定情况有一个或者应该建议的路线应该遵循什么?
如果我必须描述我现在的流程,它看起来像这样:
我认为,在任何一种情况下我都需要步骤1和2,因为如果我提交git会抱怨更改的文件不允许简单git pull
。
上述的替代方案,我认为会是这样的:
再次重复我的问题:
我不是git的专家,我知道如何使用它,但上面的场景对我来说是新的。
答案 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 add
和git 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?。