引言:

github可以让我们在不同设备间同步代码,但是我在用的时候出现了很多问题,就弃用了。最近由于需要重新整理了下这方面内容,也成功实现了使用github同步代码的全过程,于是记录详细步骤,以便后续查阅。

博主默认读者具有基础的命令行使用知识,文中关于命令行的开启、文件夹定位等步骤将不作介绍。


目录

引言:

1. 环境配置

1.1. git 下载

1.2. git 配置

2. 创建本地存储库

3. 创建远程存储库

4. 关联本地存储库与远程存储库

4.1 获取远程存储库网址

4.2. 执行关联

4.3. 同步忽略设置

5. 推送本地文件到远程存储库

5.1. 将所有文件添加到暂存区

5.2. 将数据同步信息暂存到本地仓库

5.3. 确认关联的分支正确

5.4. 推送数据

6. 后期使用过程中的同步过程

6.1. 将本地修改推送到远程存储库

6.2. 将远程存储库的内容同步到本地

6.2.1. 同步到旧电脑

6.2.2. 同步到新电脑

7. 冲突解决

7.1. 从云端同步代码到本地时,本地存在未同步到云端的更改

7.2. 从本地推送代码到云端时,云端存在未同步到本地的更改

7.3. 已建好云端存储库后,更改.gitignore

8. 使用分支

8.1. 创建分支

8.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

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐