【Git】将本地工程推送至 GitHub 仓库的基本流程

1 Prerequisite

1.1 Git 更新

参考文档: Link

sudo add-apt-repository ppa:git-core/ppa
sudo apt update
sudo apt install git

在这里插入图片描述

1.2 Git 设置

  • 设置 Git 的用户名和邮箱
git config --global user.name "username"
git config --global user.email "email"

如果不设置用户名和邮箱,就无法执行 git commit,报错如下: *** Please tell me who you are.

在这里插入图片描述

  • 设置 Git 的默认文本编辑器 (VSCode or Vim)
git config --global core.editor "code --wait --new-window"

git config --global core.editor "vim"
  • 设置 Git 的默认分支名为 main

在 Git 2.28 及以上版本才会生效

git config --global init.defaultBranch main
  • 查看设置信息
git config --global --list

1.3 GitHub 身份验证

配置 GitHub 对本机的身份验证,参考我的这篇文章: Link

2 基本流程

2.1 在 GitHub 上创建一个新的仓库

在这里插入图片描述

2.2 初始化本地仓库

  1. 在工作目录初始化
git init
  1. 将文件添加到暂存区
  • 可以用 .gitignore 文件来忽略某些文件或目录,书写格式参考文档: Link
  • .gitkeep 文件来跟踪空文件夹以保持目录结构
git add .
  1. 提交文件到本地仓库

简单的信息用 -m 参数,复杂的信息建议使用 git commit 打开文本编辑器

git commit -m "Initialize repository"
# or
git commit

如果在 git push 之前要修改本次提交的信息,可以用下面的命令,参考文档: Link

git commit --amend
  1. 查看本地分支
git branch

在这里插入图片描述

2.3 添加远程仓库引用

origin 设置为远程仓库的引用(别名),通常使用 origin 作为默认远程仓库的名字,也可以用其他自定义的名称

git remote add origin [ssh url]
# 查看信息
git remote -v 

在这里插入图片描述

如果报错如下: fatal: remote origin already exists.,则先删除原有的远程仓库配置,再进行关联

git remote rm origin

如果远程仓库是新建的空仓库,可以直接将本地分支推送至远程仓库,无需后面的步骤

git push -u origin main
  • -u: 设置本地分支与远程分支的上游(upstream)相关联,后面可以只使用 git push 或 git pull,Git 会知道将本地的 main 分支与远程的 main 分支进行同步

2.4 更新远程仓库状态

从远程仓库中获取最新的提交和数据,并将其下载到本地仓库,但它并不会合并这些提交到当前的工作分支,即不会改变工作区文件内容。

  1. 获取远程仓库的最新状态
git fetch origin
  1. 查看本地分支和远程跟踪分支
git branch -a

在这里插入图片描述

2.5 关联本地分支与远程分支

设置了分支关联,就可以轻松地使用 git pullgit push 等命令,而不需要每次都指定分支的名称。

在这里插入图片描述

git branch -u origin/main main

在这里插入图片描述

  • 查看本地分支与远程分支之间的关联信息
git branch -vv 

在这里插入图片描述

2.6 合并本地分支与远程分支

将远程分支合并入当前本地分支

git merge origin/main

若执行后报错: fatal: refusing to merge unrelated histories,则加参数 --allow-unrelated-histories

git merge origin/main --allow-unrelated-histories

2.7 处理合并冲突

参考文档: Link

合并时可能会有文件存在冲突,如下图:

在这里插入图片描述

输出信息中提示 fix conflicts and then commit the result:

  1. 打开存在冲突的文件

冲突的地方会以普通文本的方式标注出来:

  • ===== 为分割线
  • <<<<< 为当前分支内容
  • >>>>> 为合并进来的分支内容
<<<<<<< HEAD
....
=======
....
>>>>>>> xxx
  1. 自行对冲突的地方进行修改,VSCode 上比较容易操作

  2. 处理完冲突后,重新 commit

git add .
git commit -m "Resolved merge conflicts"
  1. 再次合并,查看是否还存在问题
git merge origin/main
# 输出 Already up to date.

2.8 推送至远程仓库

如果当前分支关与远程分支进行了关联,这里就不用写分支名了,直接 git push

git push origin main

在这里插入图片描述

如果想要删除 GitHub 仓库中已 push 的某文件或目录,并且在工作区保留,以 .vscode 文件夹为例:

  1. 在暂存区中删除
git rm --cached -r .vscode/
  1. .vscode/ 写入 .gitignore 文件,确保之后不会再跟踪

  2. commit & push

git commit -m "Update .gitignore to ignore .vscode folder"

git push origin main

3 在新的分支中继续开发

建立新的分支,在其中实现新的功能或是完善之前的工程,这样在开发过程中就不会影响到之前完整的工程代码,待完成后,可以向 main 分支发起合并请求。

  1. 创建、切换到本地新分支
git branch develop
git checkout develop

上面的可以用一条命令代替

git checkout -b develop
  1. 创建远程新分支
git push origin develop:develop
# 查看所有分支
git branch -a
  1. 远程分支与本地分支关联
git branch --set-upstream-to=origin/develop develop
# 查看信息
git branch -vv

在这里插入图片描述
4. push & pull 测试

进行了上一步的关联,如果只对 origin/develop 进行操作,就不用加分支名

git pull
git push

但如果没有进行关联,就要加上分支名

git pull origin develop:develop
git push origin develop:develop

4 删除远程分支

  1. 删除 GitHub 仓库的分支
git push origin -d <remote-branch-name> 
  1. 删除本地存储的远程分支

git branch -r 中仍存在该远程分支名,可以用下面的命令删除

git branch -d -r origin/<remote-branch-name>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

G.Chenhui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值