git,github入门,工作和协作必备技术,github提交pr - pull request

你可能会遇到这样的情况,你给同事或者甲方发一个文件,他说再改一下,你就改了再发过去,然后再改再发,等10个版本以后,他回复你一句,“还是第一版吧”.然后你已经忘了第一版是怎么样的,于是你养成了一个习惯

image-20250312191358871.png

如果几百个文件呢?

于是git就出现了,一个开源的分布式版本控制系统

当你每次修改很多文件提交后,它都会自动创建一个项目版本,你可以通过它看到不同版本文件的不同差异,也可以随时回退到某个提交时的状态,最大的好处是其他人也可以同时修改,别人复制一份过去,改完发给你,会自动合并修改的部分文件.演示一下:

image-20250312191902622.png

1
2
git config --global user.name "用户名"
git config --global user.email "xxx@qq.com"
1
2
3
4
5
git init
git add test.txt
# 文件多 就git add .添加全部
git commit -m "第一次提交"# 把刚刚暂时的提交固定成一个版本
git log # 看看信息

$ git log
commit 515aea2366acff1df4d0fd0912a6e66f66be9ff5 (HEAD -> master)
Author: yjyrichard richardyangjiayu@qq.com
Date: Wed Mar 12 19:25:11 2025 +0800

如果你这个时候改文件内容 改成0.2,vscode新增一个文件会显示绿色,修改一个文件会显示橙色

1
2
3
4
5
6
7
8
9
10
11
12
13
Lenovo@yangjiayu MINGW64 ~/Desktop/git演示 (master)
$ git log
commit e1dd9c0f268c36bfc3eec0a2e382a3aa86c13d56 (HEAD -> master)
Author: yjyrichard <richardyangjiayu@qq.com>
Date: Wed Mar 12 19:27:59 2025 +0800

第二次提交

commit 515aea2366acff1df4d0fd0912a6e66f66be9ff5
Author: yjyrichard <richardyangjiayu@qq.com>
Date: Wed Mar 12 19:25:11 2025 +0800

第一次提交

git commit -m “fix(test) : change content” 规范词

可以在vscode下载一个插件Git history Diff 可以看到所有历史提交

git有很多功能,但是都要遇到具体问题才能学会

怎么回退到某个版本?

Lenovo@yangjiayu MINGW64 ~/Desktop/git演示 (master)
$ git reset --hard 515aea2366acff1df4d0fd0912a6e66f66be9ff5
HEAD is now at 515aea2 第一次提交

还有soft模式和mixed模式

reset不仅回退了也把后面的清空了

我们想要在不同版本中切换怎么办?

这时候可以用到分支: branch

分支就是把当前版本复制一份 你可以在第二次提交的时候后git branch 0.2 命令创建一个0.2分支,(0.2为分支名)

git commit 第三次的时候创建0.3 分支,第四次在主分支上

git branch -a 查看所有分支

然后你可以用git checkout命令不断切换分支

不仅仅是可以切换版本,更重要的是你可以继续在主流上继续写代码,也可以在支流上同时写,然后某一天那这两条分支用用git merge [某一分支]合并在一起,这主要是用于团队协作 ,假设在1.0版本的项目中要做五个功能,然后分发给5个小伙伴,他们就在1.0版本上branch出去一个自己的版本,分支就是命令为功能xxx,然后五个人同时开发,到时间后我在主分支上把他们5个人的5个分支都merge过来合并在一起,再提交并使用git tag (tag命令创建固定版本)

打标签生成1.1版本,团队开发互不影响又可以同时协作.

我们不可能在一台电脑上进行开发,所以就有基于GitLab开源git仓库自己搭建,或者用gitee,或者github

github上的Fork相当于把别人的代码库复制到自己的账号中类似于branch,

git remote add upstream 网址 就是添加上游代码库的命令

再用git remote -v

如果你要给别人加功能你可以先创建一个分支

git checkout -b yjy来创建并切换进入yjy的分支

git add .

git commit -m “xxx”

git push -u origin yjy

这个时候我们就来到Pull requests 拉取请求 简称pr

新建pr base就是根源 选择main分支 compare就是比较,选择自己刚刚创建的分支,选择后如果显示绿色对号able to merge是可以合并的意思,那么你就填写pr信息 创建内容然后pr.可以在评论区

如果没有显示绿色对号那就是在你写代码的时候我提交了新的commit,导致版本不一致,这个时候你就需要先更新一下本地版本执行git fetch upstream 从上游更新一下最新代码,然后执行git merge upstream/main,把远程的最新代码合并到自己的分支中,再执行git push推送上去,这个时候快点去pr就行了.

实践是唯一的真理.