第 2 節

Git实操

0瀏覽次數0訪問次數--跳出率--平均停留

环境准备

  1. 操作系统: Linux,Windows,MacOS(本文以Linux为教程)
  2. 安装Git
sudo apt-get update
sudo apt-get install git
git --version

常用指令介绍

Linux创建目录&&并进入目录

mkdir -p hellogit
cd hellogit

设置git的用户与邮箱(必须设置!!!)

git config --global user.name "tungchiahui"
git config --global user.email tungchiahui@gmail.com

git初始化(使该文件夹被git控制)

git init

创建文件&&查看当前文件夹内的所有文件

touch test.md
ls

编辑文件文本内容

sudo apt-get update
sudo apt-get install vim
vim ./test.md

接下来按键盘上的insert按键进入编辑模式&&并输入一段文本

按ESC退出编辑模式

按shift+冒号按键,并输入wq回车进行保存退出

查询当前文件的状态

git status

On branch 分支名

Untracked是指文件在工作区

将文件提交到暂存区

git add test.md

将文件提交至本地仓库

git commit -m "version1"  
#git commit -m "提交的信息(可以理解为是注释)"

查看已经提交的项目版本

git log

这几行的意思是tungchiahui(邮箱为tungchiahui@gmail.com)用户于2023年12月30日周六00:42:47往master分支提交了注解为"version1"的项目版本

可以尝试对文件内容进行修改,并再次进行提交

vim test.md
git add test.md
git commit -m "version2"
git log

如何忽略掉不想提交的文件

  1. 首先创建一个文件.gitignore
  2. 再创建一个文件 绝密文件不想开源.py 并修改里面的内容
  3. 查看git状态
touch .gitignore
touch vinci_secret.py
vim vinci_secret.py
git status

  1. 修改.gitignore的内容,将不想被提交的文件名写入该文件
vim .gitignore
git status

分支基本操作

  1. 分支的作用:开辟项目的一个新仓库分支,与master等其他分支是独立的,可以进行独立的add、commit和diff、clone。
  2. 创建分支
git branch route2
#git branch 分支名
  1. 进入分支
git checkout route2
#git checkout 分支名
  1. 查询有多少分支,并查询目前为哪一个分支
git branch

当前分支文件会完美继承master分支的文件

  1. 删除掉该分支下的文件
ls
rm -rf test.md
rm -rf vinci_secret.py
ls

  1. 将该分支往本地仓库进行提交
git commit -a -m "删库跑路"
#该指令是把git add和git commit指令一起写

  1. 查看分支是否对其他分支有影响(切换到其他分支查看影响)
git checkout master
ls

可以发现,在route2分支中被删掉的test.md文件回来了,但是同样被删掉的vinci_sercet.py文件没回来,是因为该文件在提交时被.gitignore文件屏蔽了,不会被提交到本地仓库

  1. 删除分支
git branch -D route2
#git branch -D 分支名

  1. 创建分支并立马切换到分支
git checkout -b route3

分支的合并

  1. 在route3分支中修改文件内容并提交
vim test.md
git commit -am "route3 version3"
#-a -m也可以被省略成-am

  1. 切换到master分支
git checkout master
vim test.md

  1. 将route3分支合并到当前分支上
git merge route3
#git merge 被合并的分支名
vim test.md

分支合并的冲突

  1. 为master添加一行内容,并提交
vim test.md
git commit -am "master version4"

  1. 切换到route3分支,并添加内容并提交
git checkout route3
vim test.md
git commit -am "route3 version4"

  1. 合并分支
git merge master

发生了内容冲突,需要手动修改文本冲突才可以!或者其他办法也可以解决,可以查询百度。

远程仓库Github

  1. 打开github官网:https://github.com(如果你打不开,请自己找办法打开)
  2. 注册并登录账号

  1. 新建远程仓库

这个界面建议详细设置一下,但这里是演示,所以只设置了仓库名称,其他选项为默认操作。

如果上图出现,则说明已经创建成功了

  1. 进行创建文件并提交

填写好文件名,文件内容,就可以点绿色按钮进行提交了。然后也可以填写提交的注释信息。

  1. 克隆远程仓库到本地

cd
mkdir repo_floder
cd repo_floder
git clone https://github.com/tungchiahui/test_repo.git

如果出错,请检查是否能正常访问github!

  1. 对文件内容进行修改
cd test_repo
vim test1.md

  1. 查看该本地仓库与哪些远程仓库有联系
git remote -v

  1. 将本地仓库push到远程仓库
git push

这里需要你输入github的用户名与密码,用户名则为github用户名,但是密码则为github用户token,生成token的步骤如下:

Note随便填,有效日期选择没有截止时间。

下面能勾的勾全勾上,这是权限。

复制token并填入password中(token在终端中输入会被隐藏,输完直接回车即可)

  1. 查看远程仓库

发现文件已经被修改了!

  1. 对远程仓库内容进行修改

  1. 将远程仓库内容拉到本地仓库
git fetch

  1. 查看本地与远程仓库区别
git diff origin/main
#git diff 远程仓库名/分支名

  1. 如果发现内容没问题,就可以将远程仓库内容同步到工作区
git pull

  1. 查看项目修改历史
git log

使用Pull Request合并代码

Pull Request简称PR,用于请求将一个分支中的修改合并到另一个分支。PR可以让项目成员在合并前查看代码变化、留言讨论和进行审查,因此团队协作时通常不会直接将未审查的代码push到main分支。

  1. 从main分支创建并进入一个功能分支
git checkout main
git pull origin main
git checkout -b feature/pr-demo

feature/pr-demo是本次示例的分支名,实际开发时应使用能表达修改内容的名称。

  1. 修改文件并提交到本地仓库
vim test1.md

按下insert按键,然后随便输入点正文.

例如

TEST11111

然后按下ESC,再输入:wq进行保存.

git add test1.md
git commit -m "修改test1文件"
  1. 将功能分支推送到Github
git push -u origin feature/pr-demo

-u会建立本地分支与远程分支的跟踪关系,之后在该分支上可以直接使用git push

  1. 在Github仓库页面创建PR

推送新分支后,Github仓库页面通常会显示Compare & pull request按钮,点击该按钮。如果没有显示,也可以进入仓库的Pull requests页面,点击New pull request

确认两个分支选择正确:

  • base: main:修改最终要合并到的目标分支。
  • compare: feature/pr-demo:包含本次修改的来源分支。

PR只能在两个不同的分支之间创建。确认下方显示的提交和文件变化没有问题后,填写PR标题和说明,再点击Create pull request

  1. 审查并继续修改PR

创建PR后,可以在Files changed页面查看本次修改,也可以邀请其他项目成员进行Review。

如果审查后需要继续修改,不需要重新创建PR。只需在同一个功能分支上继续提交并push,新的提交会自动加入当前PR。

vim test1.md

按下insert按键,然后修改下正文.

例如

TEST222

然后按下ESC,再输入:wq进行保存.

git add test1.md
git commit -m "根据Review意见修改"
git push

你会发现又多了一个commit如下图.

点击Files changed页面查看本次修改:

  1. 合并PR

审查通过且代码没有冲突时,拥有仓库写入权限的成员可以点击Merge pull request,再点击Confirm merge完成合并。仓库如果设置了审查或自动测试规则,需要先满足这些条件才能合并。

  1. 同步main分支并删除已合并的分支

合并成功后,可以在PR页面点击Delete branch删除Github上的功能分支。然后返回终端,更新本地main分支并删除本地功能分支。

git checkout main
git pull origin main
git branch -d feature/pr-demo

向没有写入权限的仓库提交PR

如果想向其他人的开源项目贡献代码,通常没有权限直接将分支push到对方的仓库。此时需要先在Github上点击Fork,将该仓库复制到自己的账号下。

Fork完成后,克隆自己的仓库并记录原仓库地址:

git clone https://github.com/你的Github用户名/仓库名.git
cd 仓库名
git remote add upstream https://github.com/原仓库用户名/仓库名.git
git remote -v

其中origin指向自己Fork出来的仓库,upstream指向原仓库。接下来仍然需要创建功能分支,不要直接在main分支上修改。

git checkout -b feature/pr-demo
# 修改文件后提交
git add .
git commit -m "添加示例功能"
git push -u origin feature/pr-demo

推送后在Github上创建PR,并特别确认:

  • base repository是对方的原仓库,base是对方要接收修改的分支。
  • head repository是自己Fork的仓库,compare是自己刚刚推送的功能分支。

之后填写标题和修改说明,点击Create pull request即可向原项目提交PR。

VScode + Git

VScode是什么?

VScode是一个文本编辑器,类似于Vim等编辑器,但是他有图形界面,有非常多的好用的插件,而且可以集成编译器环境,最终也可以被用户自定义配置成Visual Studio那样的IDE。

VScode官网:

https://code.visualstudio.com/

创建文件夹并在该文件夹下打开VScode

新建文件

初始化Git(类似于git init命令)

U是指未追踪状态,也就是文件还在工作区

将文件提交到暂存区(类似git add)

取消提交到暂存区点减号(这里不取消)

A是added表示在暂存区

进行提交(类似于commit)

输入提交信息,并点对号进行commit

创建新分支,并进入新分支

修改内容

显示M为修改状态

查看历史版本对比(点击文件)

提交

切换回main分支

合并分支

Push到Github远程仓库

  1. 在下面这个界面找到 Publish to Github,可能会弹出来点击Sign In,然后按提示在浏览器中完成Github授权。

  1. 输入仓库名

  1. 打开github仓库查看

使用VScode图形化提交Pull Request

本节演示如何使用VScode创建、审查和合并Pull Request,整个过程不需要在终端输入Git指令。

注意:如果要使用Pull Request,功能分支提交完成后不要执行上文的“切换回main分支”和“合并分支”操作。应当将功能分支保持独立,通过PR审查后再合并到main分支。

  1. 安装Github Pull Requests扩展

打开VScode左侧的扩展页面,搜索GitHub Pull Requests,安装由Github发布的GitHub Pull Requests扩展。

  1. 从main创建功能分支

先点击VScode左下角的当前分支名,切换到main分支。在源代码管理页面点击选择Pull,保证本地main分支与Github上的内容一致。

再次点击左下角的分支名,选择Create new branch from...,选择main作为起点,然后输入一个能表达修改内容的分支名,例如feature/pr-demo。创建后VScode会自动切换到该分支。

  1. 修改文件并提交

在功能分支中修改文件并保存,然后打开源代码管理页面:

  • 点击文件右侧的+,将修改加入暂存区。
  • 在上方输入提交信息,例如Add PR demo
  • 点击Commit完成本地提交。

commit后变为

  1. 在VScode中创建PR

打开左侧的Github Pull Requests页面,点击Create Pull Request。也可以按Ctrl+Shift+P打开命令面板,执行GitHub Pull Requests: Create Pull Request

  1. 填写PR信息

在Create Pull Request页面中检查以下内容:

  • Base Repository:接收修改的Github仓库。
  • Base Branch:要合并进入的目标分支,通常为main。
  • 来源分支:当前的功能分支,例如feature/pr-demo
  • Title:简洁描述本次修改。
  • Description:说明修改原因、主要内容和验证方法。

也可以根据需要添加Reviewers、Assignees和Labels。检查无误后点击Create提交PR;如果修改还没有完成,可以选择Create Draft创建草稿PR。

如果当前分支还没有推送到Github,VScode会提示发布分支。选择publish branch即可将当前功能分支推送到远程仓库。

  1. 审查并修改PR

创建成功后,VScode会进入PR的Review Mode。在这里可以查看提交记录和文件差异、留言、邀请审查,也可以继续修改代码。

可以查看合并差异:

如果需要根据审查意见修改代码,保持在当前功能分支上,然后继续使用源代码管理页面进行Commit.也就是可以继续修改.

同样先add再commit本次修改,可以命名为Add PR demo2.

最后Push。新的提交会自动加入当前PR,不需要重新创建PR。

可以看到如图,两次commit都被PR包含了.

也可以看到文件差异里,两次提交都被可以被合并到main了.

  1. 合并PR并清理分支

审查通过且自动检查完成后,拥有仓库写入权限的成员可以在PR详情页点击Merge完成合并。

合并完成后,VScode会提示删除远程和本地的功能分支。确认PR已经正确合并后再进行删除,最后切换回main分支并点击Pull获取最新代码。

紧接着PR会被自动关闭.

音乐页