从零开始使用GitHub同步代码
从零开始使用GitHub同步代码
GitHub可以让我们在不同设备间同步代码,但是我在用的时候出现了很多问题,就弃用了。最近由于需要重新整理了下这方面内容,也成功实现了使用GitHub同步代码的全过程,于是记录详细步骤,以便后续查阅。
博主默认读者具有基础的命令行使用知识,文中关于命令行的开启、文件夹定位等步骤将不作介绍。
1. 环境配置
1.1. Git 下载
电脑上需要下载Git(Git - Downloads)
也可以下载Git Desktop(https://github.com/apps/desktop)
两个版本差别不大,desktop版本的可以直接在图形界面登录,普通版首次使用会提示输入邮箱和秘钥(非密码)。
秘钥获取方式:
选择失效日期(Expiration),以及权限(可以全部勾选上),然后点击Generate Token即可。
1.2. Git 配置
安装好之后需要将Git的路径添加到环境变量,不会的可以参考这篇博客:windows中添加环境变量_windows添加环境变量-CSDN博客。
环境变量配置好后,按win+R,输入cmd打开命令行,输入git version,能够显示git版本即配置成功。如下图所示。
2. 创建本地存储库
打开我们需要同步的文件夹,例如我在桌面创建了一个文件夹,里面有2个文件和一个文件夹,如下图所示:
使用命令行定位到文件夹,输入如下命令将该文件夹创建为本地存储库:
git init
运行完毕后会给出如下提示:
3. 创建远程存储库
登录GitHub,并创建一个存储库同步代码。
输入存储库名,之后创建即可。
4. 关联本地存储库与远程存储库
4.1 获取远程存储库网址
对于空的存储库,可通过下图获取网址(其实对于空存储库,GitHub已经给出了同步命令)。
非空存储可可通过下图获取网址。
4.2. 执行关联
使用命令行定位到本地存储库,输入如下命令:
# 需要将 ${url} 替换为远程存储库网址
git remote add origin ${url}
之后使用如下命令查看是否配置成功:
git remote -v
如果关联成功,应有如下提示:
4.3. 同步忽略设置
一般来说我们只有代码需要同步,对于一些log文件或者权重文件不需要同步,因此需要设置忽略这些项。此外Git同步一般有大小限制,大文件最好不要通过Git同步。
需要创建一个文本文件,并将文件名改为.gitignore,这里实际上是把文件名删除了,将后缀由.txt改为了.gitignore。
这里需要忽略fold文件夹里的全部内容以及useles.txt文件,需要在.gitignore输入如下命令:
可见对于文件是输入文件路径及文件名(包含后缀),对于文件夹,在后面加上斜杠即可。
5. 推送本地文件到远程存储库
5.1. 将所有文件添加到暂存区
使用命令行定位到本地存储库,输入如下命令
git add .
5.2. 将数据同步信息暂存到本地仓库
使用命令行定位到本地存储库,输入如下命令
git commit -m "Initial commit"
输入后将提示暂存到本地的同步信息:
5.3. 确认关联的分支正确
先输入如下命令查看关联的分支:
git branch
可见我这里关联的是master分支
但是远程分支为main,我们需要切换分支(这里实际是重命名分支,但对于新存储库,效果一致)
git branch -M main
如下图即切换成功
5.4. 推送数据
使用命令行定位到本地存储库,输入如下命令
git push -u origin main
有如下提示即推送成功:
我们查看远程存储库,可见数据同步无误:
6. 后期使用过程中的同步过程
通过以上方式我们成功将本地存储库与远程存储库同步,在后期使用过程中只需要简单步骤即可实现代码同步。
6.1. 将本地修改推送到远程存储库
例如这里我们修改atex.txt的内容后,将其同步到远程存储库。
# 查看当前状态
git status
# 将修改添加到暂存区
git add .
# 设置当前提交的提示信息
git commit -m "change"
# 推送到远程仓库
git push origin main
以上四行代码可整合到如下一行执行,执行效果与单独输入每行并执行效果相同:
git status && git add . && git commit -m "change" && git push origin main
如下提示则表示推送成功。
6.2. 将远程存储库的内容同步到本地
6.2.1. 同步到旧电脑
对于我们创建存储库的电脑,将远程存储库的内容同步到本地使用如下命令:
git pull origin main
同步成功会出现如下提示:
6.2.2. 同步到新电脑
对于一台新电脑,我们同步数据需要使用如下步骤:
# 下载数据,需要将 ${url} 替换为存储库网址
git clone ${url}
# 切换到存储库文件夹,需要将 ${folder} 替换为存储库文件夹
cd ${folder}
# 设置远程存储库地址,需要将 ${url} 替换为存储库网址
git remote set-url origin ${url}
# 同步代码
git pull origin main
后续按 “同步到旧电脑” 步骤同步即可
7. 冲突解决
在同步时最容易出的错误就是本地和远程存在冲突,以下介绍两种冲突解决方案。
7.1. 从云端同步代码到本地时,本地存在未同步到云端的更改
例如你现在在本地做了一些更改,但是没有同步到云端,此时将云端代码同步到本地会导致本地更改丢失,因此是不安全的,会报错。
此时我一般选择强制放弃本地更改,让本地和云端保持一致,这会丢失本地所有未提交的更改
一般是报如下错:
Please commit your changes or stash them before you merge.
Aborting
强制同步代码为:
git reset --hard
git pull origin main
7.2. 从本地推送代码到云端时,云端存在未同步到本地的更改
例如现在有两个人在维护一个远程存储库,在12:00时两个程序员同时把云端代码同步到本地。程序员A把手里的代码作了修改,在13:00把代码上传到云端,此时程序员B手里的代码还是12:00时同步下来的,程序员B将手里的代码修改后准备上传到云端,发现不能上传,因为上传后就把程序员A的修改覆盖了,所以该上传是不安全的。
这种情况我一般会忽视云端未同步的更改,强制将本地的代码同步到云端,注意这会丢失所有云端未同步的更改。
git add .
git commit -m "Your commit message"
git push -f origin main
7.3. 已建好云端存储库后,更改.gitignore
首先需要更改 .gitignore 文件。
其次需要清除已经被 Git 跟踪的文件,如果不清除,即使在 .gitignore 中标记了,仍会继续同步。
# 对于目录
# 需要将 ${directory} 更换为已被Git同步但是需要解除同步的文件夹
git rm --cached -r ${directory}
# 对于文件
# 需要将 ${file} 更换为已被Git同步但是需要解除同步的文件
git rm --cached ${file}
之后正常同步即可。