多语言展示
当前在线:665今日阅读:75今日分享:44

GIT学习--(15) 将本地仓库内容同步到GitHub(上)

在前面的经验中,我们在 GitHub 上创建了我们第一个远程仓库,仓库名称为 LearningGit(注意是非空仓库,在创建时,我们选择了README、.gitignore和LICENSE),并且我们也了解了如何在本地配置远程仓库的相关信息(参考如下的经验引用),这篇经验我们将分享如何将本地已存在的仓库内容同步到远端仓库中。 0GIT学习--(13) 在GitHub上创建第一个仓库0GIT学习--(14) Git基本命令之remote详解
工具/原料
1

一台安装了GitHub并可以连接网络的电脑

2

一个创建了远程仓库的GitHub账号

方法/步骤
1

首先需要明确一点,我们前面经验演示的时候本地仓库的名称是 myRepo,这篇经验使用的本地仓库的名称是 LearningGit(为了和远程仓库一致),但注意这不是必要条件,你完全可以使用 myRepo 这个本地仓库进行下面的所有操作!这篇经验使用的本地仓库 LearningGit 的分支信息和 myRepo 的分支信息完全一致。     在命令行中进入本地Git仓库,确认本地仓库状态和当前的工作分支信息,并确认本地仓库已配置了远程仓库信息(图1示)。    先不管三七二十一,运行命令 git push 远程仓库别名 --all 先推送一下看看效果(图2示,--all 参数表示推送所有分支)!从反馈的信息可以看出,分支 mileStone 和 showCase 全部推送成功了,但主分支 master 推送失败!

2

我们简单翻译一下Git的报错信息:“推送操作失败,是因为远程仓库包含本地仓库没有的内容,通常是因为在这个分支上发生了另外一个push操作......”    我们知道在创建远程仓库 LearningGit 的时候,我们勾选了 README、.gitignore和LICENSE,这其实最终就是在主分支 master 上生成了3个文件(图示),而这初始的3个文件就是我们推送主分支失败的原因!(也就是说,如果当时你创建仓库时,没有勾选上述3个选项,是个裸仓库,则第一步的推送是不会报错的)。

3

我们先将错误放一放,再来看看我们本地仓库的状态,运行命令 git branch -av , 我们发现本地仓库多了两条分支信息,远程仓库的 mileStone 和 showCase 分支,继续运行命令 git log --all --oneline --graph , 我们可以更清楚得了解当前仓库的状态:本地仓库分支 mileStone、showCase 和远程仓库同名分支的状态是一致的,本地仓库的主分支 master 因为没有推送成功,所以没有和远程仓库同步分支进行对应!    从这里我们也基本可以推断出Git的工作模式:那就是我们先在本地进行修改并提交到某分支上(git add 和 git commit 操作),然后再推送到远程仓库的同名分支上(git push操作)。

4

看完本地仓库的状态,我们再看看远程仓库的状态,登陆GitHub,进入仓库 LearningGit , 我们可以看到其提示我们,最近向仓库提交了两个分支(showCase 和 mileStone, 图1示),并且告诉我们目前仓库中包含3个分支,点进去,看一下这3个分支信息(图2示)。    切换分支,我们还可以浏览不同分支下的内容(图3示)。

5

通过这篇经验,我们可以将本地仓库的分支信息推送到远程仓库中,如果你的远程仓库是一个裸仓库,则第一次推送会完全成功,但如果你的不是(和本例一样,远程仓库某分支中包含初始内容),初次推送,包含初始内容的分支会报错失败,下篇经验我们就看看如何处理这种推送错误!

注意事项
1

执行 git push 命令的本地仓库的名称可以和远程仓库不一致,我们推送的是分支信息以及分支的内容,而不是仓库本身!

2

如果远程仓库是裸仓库(没有任何内容的空仓库),则第一次push操作一定会成功,如果不是,则第一次push,远程仓库包含内容的分支会提示失败!

推荐信息