Git基本使用场景

软件工程课程作业:学会使用git的几种基本用法。

参考自孟宁老师文章:https://mp.weixin.qq.com/s/Km5KuXPETvG0wCGHrvj9Vg

Git简介:
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

使用vscode或git bash操作。

下面这张图可以帮助理解git各个阶段的对应分区:
git分区

场景一:Git 本地版本库的基本用法

1.初始化一个本地版本库

①使用vscode打开一个文件夹,若当前文件夹下没有本地repository,那么可以直接点开vscode的源代码管理,点击初始化存储库按钮直接建立一个本地repo。
使用vscode创建本地repository

②除了这种方法以外,还可以使用命令行git init在vscode终端中或者Git bash中创建新的本地repo。
Git bash命令行创建本地repo
③使用上述方法创建好本地库之后可以发现文件夹中多了一个.git文件(文件默认是隐藏的需要将隐藏文件显示)
.git文件

④使用vscode创建了readme.md文件和test文件test2文件,文件readme.md后的M表示之前创建过,目前已经修改但没有提交,U表示未跟踪的。
更改文件
使用git add [FILES] #可以把文件添加到暂存区,或者点击加号也可以将更改过的文件暂存起来,文件会出现在暂存的更改中。

如果想取消本次更改可以点击文件后的减号取消该次修改,提交时可以点击上方的对号√直接提交至仓库。
在这里插入图片描述

⑤一些常用命令(在git bash与vscode终端使用方式相同):

git status(查看当前状态)
git status

git log(查看提交日志)
git log

git commit -m “提交信息”
将暂存区的内容提交到仓库。

git reset —hard HEAD^^
版本回退功能,回到当前head前两个版本,也可以回退至更老的版本。

如果回退到较老版本后还想再回到最新版本则需要使用git reset —hard。

场景二:Git 远程版本库的基本用法

先在github上new一个repository
在github新建一个repository
可以看到repository中看到新建的空白仓库
repositories

创建仓库后打开仓库看到仓库url链接,使用git clone命令行可以将远端库克隆到本地。
克隆github上的空白库

(注意需要提前将本地git与远程github账号绑定,绑定账号和邮箱)

查看克隆后本地仓库

将本地更改push至github需要登陆github账号并提供权限。
github需要登陆

在github上creat一个新文件命名第一个文件,然后使用vscode拉取文件,拉取后文件已存在于.git文件所在的路径下,直接打开即可。
使用vscode同步文件
以上操作同样可以在gitbash中使用git pull和git push命令行完成,除了分别使用pull和push以外,在vscode中还可以同样使用“同步”直接完成拉取和推送两个操作。

BUT,以上操作均为假定只有一个人对数据库进行串行的更新,孟宁老师的博客中描写了当多人并行对库进行修改操作的时候会出现多个不同的版本同时push的情况,在这种情况下,需要理解合并的背后原理。假设目前有两个对A版本的更新,以下内容来自孟宁老师博客:

简要总结一下,合并操作可以用一个公式来表示:H = (F - A)+ (G - A),即F版本与A版本的差异,以及G版本与A版本的差异,合并起来形成一个新的版本H。
孟老师图:合并原理

场景三:团队项目中的分叉合并

就像上一个场景中最后所说的,当两人以上的团队合作开发时,需要考虑将每个人的工作流程合并时的冲突问题。

每一位成员进行开发时需要为自己的工作创建一个分支,该分支只作为自己工作内容的模块。

使用命令行或vscode下的终端输入git branch查看当前分支,只有一个master。
在这里插入图片描述
创建新分支,并且将当前工作区切换为新建立的分支,此时再查看分支会发现星号*转到了mybranch前面,表示当前工作分支是mybranch,如果要切换回master分支则直接使用git checkout master即可,或则直接使用vscode提供的“签出到”选项。
建立新分支

如果要保存自己的工作,将mybranch合并到master分支,那么首先确保当期工作区处于master分支,然后可以使用git merge mybranch命令行,或者也可以使用vscode中的合并分支选项:

合并分支
上述合并方式为快进式合并,也就是mybranch分支与master分支会合并到一条时间线中,mybranch不再作为一个独立的分支而是只存在master,另一种合并方式是关闭快速合并的合并方式。使用命令行:git merge --no-ff mybranch。这种方式会保留原来的mybranch分支,最后在master分支上生成一个节点。
为了版本分支清晰,比较推荐使用第二种合并方式。
修改合并后push至github上并查看,可以看到mybranch合并至master分支:
分支合并记录

场景四:Git Rebase

git rebase主要功能为使本地的多次提交合并为一个,整理自己的提交记录,简化提交历史。查阅资料发现,git rebase相比git merge可以更好地给你一个清晰的代码历史,gitmerge会产生多条分支而git rebase产生的是一个漂亮的直线提交历史。

当前情况下先git pull到本地,然后切换到mybranch,然后对file1文件进行第一次修改:
第一次修改

之后再分别进行两次修改,并且每一次修改都提交,模拟一些并不需要存在的提交记录。git log查看提交记录,如下图所示:
三次修改提交记录
使用git rebase -i HEAD^^^指令对三次提交做合并操作
在这里插入图片描述
删除了前两个修改,只保留了第三次修改,然后关闭文件即可,用vscode打开冲突文件,可以直接选择采用哪种更改:

在这里插入图片描述
之后将选择了某种更改方式后的 文件存入暂存区,然后需要让rebase继续执行,使用git rebase --continue指令,然后再push至仓库,最后查看github上的network,可以看到只存在第三次修改。
network

### Git 基本命令使用指南 #### 初始化仓库 为了开始一个新的项目或是将现有项目纳入版本控制之下,可以创建一个新的空仓库或克隆现有的仓库。创建新的本地Git仓库可以通过`git init`完成。 ```bash git init ``` 对于已有远程地址的情况下,则可利用`git clone`来复制一份到本地环境[^1]。 ```bash git clone https://github.com/example/repo.git ``` #### 配置个人信息 设置提交者的用户名和邮箱,在首次配置Git时非常重要。这通常只需要做一次全局设定即可适用于所有的库;当然也可以针对特定的库单独指定不同的身份信息。 ```bash git config --global user.name "Your Name" git config --global user.email you@example.com ``` #### 添加文件至暂存区并提交更改 当有新文件加入或者是修改了某些文件之后,需要先将其添加到索引(即所谓的“暂存区域”),再通过commit指令保存这些改动作为历史记录的一部分。 ```bash git add . git commit -m "描述此次更新的内容" ``` 这里`.`表示当前目录下所有未跟踪的新文件以及已跟踪但被修改过的文件都会被打包进入即将要做的这次提交里去。而紧跟其后的参数-m后面跟的是本次提交的日志消息。 #### 查看状态与差异对比 在任何时候都可以查看工作树的状态——哪些文件处于何种状况之中。“status”子命令会告诉你关于分支切换情况、是否有待处理的变化等待着你add/commit等重要提示。 ```bash git status ``` 如果想要了解具体某次变更前后内容的不同之处,“diff”是一个非常有用的工具: ```bash git diff ``` 它能够显示出尚未staged(也就是还没有执行过add动作)的数据变动详情。一旦进行了add操作后再次运行上述命令则只会得到一片空白的结果集返回来了哦! #### 版本回退 有时候可能希望撤销最近的一次提交或者更早之前的某个时刻所做的改变。这时就可以借助于reset功能实现这一目的啦~ ```bash git reset HEAD~1 ``` 此条语句的作用就是把HEAD指针向前移动一位指向倒数第二个commit节点处,并且不会影响working directory里的实际物理文件内容本身。不过要注意这样做会使那些原本属于该节点及其后代子孙们所特有的变化丢失掉,因此务必谨慎行事!另外还有其他形式如--soft/--hard选项可供选择以满足不同场景下的需求。 #### 推送与拉取数据同步 最后一步便是如何把自己这边最新的进展分享给团队成员以及其他协作者呢?很简单只需调用push方法就能轻松搞定一切事务咯! ```bash git push origin main ``` 同样道理要想获取来自远端服务器上的最新资料也十分容易,只要简单地敲入pull就可以了。 ```bash git pull origin main ``` 以上就是一些常用的Git基础命令介绍,掌握好它们便足以应对日常开发工作中大部分情况下遇到的问题了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值