将Git克隆到新PC的当前目录中,其本地文件与远程存储库相同

时间:2017-07-14 11:28:58

标签: git bash

我在本地(在新PC上)和github存储库上都有文件,我想在该PC上克隆/创建本地存储库。

我已经完成了以下步骤:

$ git init
Initialized empty Git repository in /home/sebastien/.git/
$ git remote add origin https://github.com/xxxxx/yyyyyyyy
$ git pull origin master
remote: Counting objects: 791, done.
remote: Compressing objects: 100% (615/615), done.
remote: Total 791 (delta 148), reused 743 (delta 102), pack-reused 0
Receiving objects: 100% (791/791), 2.04 MiB | 323.00 KiB/s, done.
Resolving deltas: 100% (148/148), done.
From https://github.com/xxxxx/yyyyyyyy
 * [new branch]      master     -> origin/master
 * branch            master     -> FETCH_HEAD
error: Untracked working tree file '.initBash/.AV_functions' would be overwritten by merge.
$ echo $?
128
$ git branch --set-upstream-to=origin/master master
fatal: branch 'master' does not exist
$ echo $?
128

编辑1:本地文件可以与远程存储库上的文件相同或更旧。

你能帮忙吗?

2 个答案:

答案 0 :(得分:1)

  

错误:未经跟踪的工作树文件'.initBash / .AV_functions'将被合并覆盖。

您的本地文件将被覆盖。因此,要解决此问题,您可以在提取远程master之前提交本地文件。

  

致命:分支'主'不存在

您没有本地master所以,此错误。

按照说明操作:

首先,清理你的git历史。我更喜欢删除.git文件夹,然后再次生成。

$ rm -rf .git
$ git init

提交本地文件/更改。

$ git add -A
$ git commit -m 'message'

使用远程repo的URL添加新的远程origin

$ git remote add origin https://github.com/xxxxx/yyyyyyyy

拉远程master分支更改。

$ git pull origin master

如果发生冲突,则解决它。完成。

替代:如果新PC的本地更改不重要,并且您希望重置您的本地远程master,请关注它:

$ git init
$ git remote add origin https://github.com/xxxxx/yyyyyyyy

$ git fetch
$ git reset --hard origin/master      # local changes = origin/master changes 

答案 1 :(得分:0)

问题是,文件的本地副本是否与远程仓库中的版本不同?如果是这样,你想用它们做什么?

如果它们没有区别,您可以删除它们并克隆回购。 (无论如何克隆repo都必须从远程复制文件。)

git clone url/of/remote/repo

如果本地文件不同,并且您不想丢弃差异,则需要确定它们所属的历史记录。这可能取决于这个版本的文件是如何出现的。

最简单的示例:文件是repo中最新版本(在某些分支上)的副本。那么也许他们只是表示要推送到该分支的更新。因此,如上所述克隆repo,然后通过工作树复制本地文件,并将其用作新提交的基础。

或者他们可能是repo中提交的修改版本?然后你可以创建一个新的分支,从那个旧的提交开始,然后从那里开始。 (通过回购,检查旧提交,创建并签出新分支,然后在工作树上复制本地版本。)

可以首先提交本地副本(如另一个答案所示),但根据你的git版本,你可能需要提供特殊选项让git接受不相关的历史记录,当你您是否可能会在几乎所有内容上发生冲突bc git会看到两个不相关的更改行独立创建了每个相关文件。