我在Github上克隆了一个特定的仓库到我的本地计算机。
我使用git clone <repo url>
在自己的github上创建了一个新存储库,然后对复制的存储库进行了更改,并通过git push和commit将其上传到了新的存储库中。
然后,仓库的所有者添加了新文件。如果我克隆了该特定存储库,它可能会覆盖我的本地副本?
如何更新我的本地文件而又不影响到目前为止所做的更改? 我可以使用哪些命令?
答案 0 :(得分:1)
我的git工作流程如下:从主分支开始(在我的情况下,通常是“开发”之类的东西):
git branch -b 'NameOfFeatureImAdding
git checkout NameOfFeatureImAdding'
这将创建一个新分支并切换到该分支,因此所有更改都记录在该分支中。
当有新的代码要开发时,我切换到分支,输入代码,然后,如果代码很小(应该是这样),则将其合并到功能分支中。
git checkout development
git pull
git checkout NameOfFeatureImAdding
git merge development
这样,我的功能分支就可以跟上开发的步伐,使将来的合并变得更加容易。
GitHub有一个方便的指南: https://guides.github.com/introduction/flow/
答案 1 :(得分:1)
您可以通过将原始存储库中的新更改作为附加远程存储添加到存储库中来合并新的更改
git remote add upstream <url-of-original-repo>
这将创建一个名为upstream
的新遥控器。然后从新的遥控器获取:
git fetch upstream
这将添加新的远程跟踪分支,这些分支的前缀为新的远程名称(例如upstream/master
)。通过将新的远程跟踪分支之一合并到您的当前分支中,将原始存储库中的更改纳入其中:
git merge upstream/master
您不会丢失任何更改。您将需要解决更改与原始存储库之间可能存在的任何冲突。
一旦您确信如何从备用远程工作中进行取回和合并,就可以将它们组合成一个等效的拉取命令:
git pull upstream master
答案 2 :(得分:1)
如果您克隆了一个项目,但URL只是测试而没有改变
git remote show origin
,您就可以连接。如果未知origin
,则必须git remote add origin
;如果原点已更改,则可以使用git remote add origin_new
。然后,您继续进行
git branch -av # list all existing branches
git fetch origin # update all refs
git checkout -b localbranch origin/remotebranch # create new branch (-b) and checkout.
然后,您可以像以前一样使用合并在本地工作。
如果要检查更改的影响,请查看git merge --no-ff --no-commit