利用Git构建云服务器实现多台电脑同步工作

入职之后公司里发了电脑,跟随自己闯荡多年的电脑就赋闲在家了。有时候在公司小小地摸个鱼写的jupyternotebook文件,想要回家用自己的电脑接着写,但是文件同步是一个大问题。为了不天天背着重重的书包挤地铁,决定探索一下两台电脑的无缝协作模式,要求就是:两台电脑里的一个文件夹里的内容可以互相同步。
尝试了用有道云笔记等云笔记软件进行云同步,每次拖拽到本地电脑更新,但是上传到云笔记的文件只能单个另存到本地,不能批量操作,而且文件一多也并不知道修改了哪个文件,只能都同步一次。这样严重阻碍了工作效率,最后还是拿起了git这个利器。果然,懒惰是人类的第一生产力。基于以上需求,基本走通了通过git同步两台电脑文件夹的需求,具体实现步骤如下:

一、安装git

首先安装git,下载网址在这里:git
直接一路点下一步安装即可。

二、构建本地仓库

在你的本地建立一个目录。以后在这里放置需要同步的文件,git就同步这个目录里的文件。

1、建立一个文件夹

随便,我主要同步jupyter文件,所以在D盘新建了一个名字为jupyter_project的文件夹。

2、在当前文件夹下打开git控制台

进入这个目录,点击鼠标右键,在弹出框里点击“Git Bash here”,在当前文件夹打开git控制台。
在这里插入图片描述
界面如下:
在这里插入图片描述

3、初始化仓库

接下来,git要宣告系统:这个文件夹我征用了。代码很简单:

$ git init

输出:

Initialized empty Git repository in /Users/***/jupyter_project/.git/ (***是你中间的文件路径)

这样瞬间Git就把仓库建好了,而且告诉你这是一个空的仓库(empty Git repository)。当你添加了文件之后,再执行这个命令的时候,会显示:

Reinitialized existing Git repository in D:/jupyter_project/.git/

4、添加文件

当然,在这个文件夹里的文件并不是全部受git监控。你得把需要git监控的文件添加进去。
比如:我们把一个名字为test.ipynb的文件复制进来,为了让git时刻监视他,我们在git命令行中执行:

git add test.ipynb

如果没有报错,现在这个文件就已经在git的监控范围之内了。

你可以按照这种方法添加多个文件。

5、提交

 git commit -m "20191022 first backup"

其中, -m 后边后面输入的是本次提交的说明,可以输入任意内容。最好写一个说明,主要目的是留个案底以备以后自己回忆。万一以后想恢复文件死活想不起这是什么时候提交的就糟糕了,这里我前边写了一串提交日期,建议你也加上。

简单来说,add是给文件添加监控,commit是生成截止目前监控到的文件状态,类似于生成一个游戏存档,便于以后恢复。

三、将本地仓库推送到github

单纯地在本机上建立git版本管理器,并没有使用到git的精髓,也并没有得到我们的目标。接下来,我们将本地文件备份到github上。

1、在github上新建项目

登录自己的github(没有账号需要先注册账号),点击“新建项目”,按照图示进行操作:
在这里插入图片描述

2、将本地仓库与远程github仓库关联

创建好仓库之后,github会跳转到一个提示页面,分别对应的不同情况下的命令行操作,当然你也可以直接一键复制代码操作。
在这里插入图片描述
因为我们已经建好了本地的仓库,直接按照第二种方法提示就好。具体步骤如下:
1)添加远程仓库:

git remote add origin <你的项目地址> //注:

这里项目地址形式为:https://gitee.com/xxx/xxx.git,为了防止出错,最好直接复制提示页面的代码。

你可以通过以下代码查看关联的远程仓库:

git remote -v

输出如下;

origin https://github.com/boyliwensheng/jupyter_project.git (fetch)
origin https://github.com/boyliwensheng/jupyter_project.git (push)

如果地址输入错误,你也可以删除与远程仓库的关联:

git remote rm origin

删除之后,重新执行上述操作。

2)推送

 git push origin master

会弹出一个窗口,提示你输入github账号和密码,接着等待程序执行完毕
,之后刷新github网页,可以看到,我在本地仓库commit的一个csv文件和一个ipynb文件已经推送到我的远程github仓库了。
在这里插入图片描述

四、将远程项目clone到本地

在另一台安装好了git的电脑上,只需要在某个文件夹下打开git控制台。输入如下代码:

git clone git@github.com:你的账户名/jupyter_project.git

很不幸,第一次尝试并没有成功,输出如下:

git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

如果是公有仓库,这时应该就成功下载下来了。但因为我远程建了一个私密仓库,这样不加验证是没有办法从我的私密仓库clone文件到本地的,我们需要生成一个sshkey,告诉远程仓库:是我们自己人在下载代码,请放行。

在这里插入图片描述

生成公匙代码:

ssh-keygen.exe -t rsa -C "xxx@163.com"

三次回车后,在/c/Users/你的电脑名/.ssh这个文件夹中找到名字为id_rsa.pub的文件,打开并复制里边的代码,并按照 这篇文章 在github上配置sshkey。

接着进行clone操作,出现以下提示,说明clone成功了,在当前文件夹就可以找到远程备份的文件了。
在这里插入图片描述

五、更新本地代码

这样,两台电脑的jupyter_project这个文件夹就通过git远程连通起来了。这里需要注意的是:新建一个文件后,还是需要手动把这个文件add一下,以后在公司随便修改这个文件夹里的文件,只需要下班之前commit+push一下就好。回到家,冲一杯咖啡,只需要执行以下几个操作:

git fetch origin master //从远程的origin仓库的master分支下载代码到本地的origin master
 
git log -p master.. origin/master//比较本地的仓库和远程参考的区别
 
git merge origin/master//把远程下载下来的代码合并到本地仓库,远程的和本地的合并

在公司同步上云端的文件此刻就同步到你的电脑里了,接着干活!

值得一提的是,git对文件格式没有要求,几乎可以备份所有文件,不限于图片、word文档,实现了简单的多台电脑无缝办公。当然,以上只是git的一个小应用,git的作用远远不止这些,你也可以利用git进行远程团队协作等,更多功能等待你自己去挖掘。

最后,云电脑绝对是未来啊。华为云电脑、google云游戏都是在不断探索这种云端办公的未来形态,当前主要受限于网速,不能实时把云端的计算结果返回客户端,相信随着5G的成熟,这种云办公的方式必定会逐渐成熟,成为未来办公的主流趋势。拭目以待!

六、配置过程中的常见报错以及解决方案

1、git报错:Please make sure you have the correct access rights and the repository exists

由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以必须要让github仓库认证你SSH key,在此之前,必须要生成SSH key,发生这个错误同样是因为没有和远程GitHub验证SSH key。参考第四步的解决方案。

2、git报错:refusing to merge unrelated histories

在使用git pull origin master这个语句push到远程github上的时候,产生了这个错误。

翻译过来就是:拒绝合并不相关的历史。其实原因也很好理解,我这个远程仓库里已经放了一个和本地重名的文件,推送的时候git无法判断保留哪个文件。
只需要执行以下命令:

git pull origin master --allow-unrelated-histories

如果成功合并,接着,再进行推送,就可以成功推送了。

3、git推送到远程的时候报错:Updates were rejected because the tip of your current branch is behind

解决方案:
1)使用强制push的方法:

git push -u origin master -f 

这样会使远程修改丢失,一般是不可取的,尤其是多人协作开发的时候。

2)push前先将远程repository修改pull下来

git pull origin master
git push -u origin master
  1. 若不想merge远程和本地修改,可以先创建新的分支,然后push:
git branch [name]
git push -u origin [name]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值