从零开始使用github同步代码
引言:
github可以让我们在不同设备间同步代码,但是我在用的时候出现了很多问题,就弃用了。最近由于需要重新整理了下这方面内容,也成功实现了使用github同步代码的全过程,于是记录详细步骤,以便后续查阅。
博主默认读者具有基础的命令行使用知识,文中关于命令行的开启、文件夹定位等步骤将不作介绍。
目录
7.1. 从云端同步代码到本地时,本地存在未同步到云端的更改
7.2. 从本地推送代码到云端时,云端存在未同步到本地的更改
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. 同步到新电脑
对于一台新电脑,我们同步数据需要使用如下步骤:
这里推荐使用 git clone,会自动关联到对应分支,后续直接使用 git pull 即可拉取代码。下载 .zip 时需要手动关联分支。
# 下载数据,需要将 ${url} 替换为存储库网址
git clone ${url}
# 切换到存储库文件夹,需要将 ${folder} 替换为存储库文件夹
cd ${folder}
# 同步代码
git pull
后续按 “同步到旧电脑” 步骤同步即可
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}
之后正常同步即可。
8. 使用分支
8.1. 创建分支
构建新分支(branch)后可以轻松在几个版本之间切换代码
假设现在已经在本地建立好与云端同步的仓库,需要在本地命令行输入如下命名
# 1. 查看当前分支
git branch
# 2. 基于当前分支创建新分支
git branch $(NEW_BRANCH_NAME)
# 3. 切换到新分支
git checkout $(NEW_BRANCH_NAME)
# 4. 将本地分支关联到远程分支,并推送新分支到远程仓库
git push -u origin $(NEW_BRANCH_NAME)
# 5. 后续只需使用如下命令推送
git push
注意在使用 git checkout new_branch 切换分支时,如果切换前所处的分支有未提交的更改,Git 会尽量“带着”这些修改进入新分支,因此在切换后会看到代码没变。因此在切换分支前,应尽量先提交更改。
8.2. 删除分支
# 1️⃣ 切换回主分支(通常是 main 或 master)
git checkout main
# 若提示分支不存在,可用:
# git checkout master
# 2️⃣ 删除本地分支(安全删除:仅在已合并的情况下)
git branch -d $(BRANCH_NAME)
# 如果未合并但你确定要删除,改用:
# git branch -D $(BRANCH_NAME)
# 3️⃣ 删除远程分支(GitHub 上的)
git push origin --delete $(BRANCH_NAME)
# 4️⃣ 同步远程分支列表,清除本地对已删除远程分支的引用
git fetch -p
# 5️⃣ 验证结果:
# 查看本地分支
git branch
# 查看远程分支(-r 表示 remote)
git branch -r
更多推荐
所有评论(0)