Git
一、Git概述
1、什么是Git
Git是一个开源的分布式版本控制系统(Disributed Version Control System,简称DVCS)。可以有效、高速地 处理从小到非常大的项目版本管理。
版本控制
协同开发
2、什么是版本控制系统
版本控制系统能追踪项目,从开始到结束的整个过程。对编程人员而言,版本控制技术是团队协作 开发的桥梁,助力于多人协作同步进行大型项目开发。软件版本控制系统的核心任务:查阅项目历史操作 记录、实现协同开发。
3、常见的版本控制系统
① 集中式版本控制工具 svn
集中式版本控制工具,版本仓库是集中存放在中央服务器的,team里每个人工作时,从中央 服务 器下载代码。每个人个人修改后,提交到中央版本仓库。提交(commit)代码需要联网。如:svn 这会造成一个明显的问题:单点故障
② 分布式版本控制工具 git
分布式版本控制系统可以没有 “中央服务器”,每个人的电脑上都是一个完整的版本仓库,这样工 作的时候,不需要联网。因为版本仓库就在你自己的电脑上。多人协作只需要各自修改,开发完成即 可,推送给对方【联网】,推送的时候是将整个版本仓库推过去。如:Git
4、Git的特点
① 速度、简单的设计
② 对非线性开发模式的强力支持(允许成千上万个并行开发的分支)
③ 完全分布式
④ 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)
⑤ 协同开发
Clone:克隆,从远程仓库中克隆代码到本地仓库,第一次操作
Push:推送,代码完成后,需要和团队成员共享代码时,将代码推送到远程仓库。
Pull:拉取,从远程库拉代码到本地库,自动进行合并(merge),最后放到工作区。
5、基本概念
本地仓库: 在本地主机上的一个代码库,可以独立存在,也可以与远程仓库进行关联
工作区:对任何文件的修订(增删改),都先放在工作区,工作区不与任何仓库分支进行关联
暂存区:把修订的文件,从工作区经过add(添加)后与某一个仓库分支进行关联,只有进 入缓存区的文 件才能commit(提交)到本地仓库。
远程仓库 : 在局域网或互联网上的一个主机,存放代码库的主机或平台,比如GitHub、 Gitee.com(码云)
分支:代码存放在仓库,默认是主分支(master),可以在主分支基础上创建很多子分支,比如 develop(开发)、bugfix(bug修复)等。
二、Git的下载和安装
三、Git的基本配置总结
1.安装完成 Git 后,正式使用git前,是需要进行一些全局设置的,如用户名、邮箱。
设置全局用户名
git config --global user.name “your name”
设置邮箱
git config --global user.email “your email”
邮箱不要乱写 用自己的邮箱 写完检查一下
git config --list 查看配置列表
以上配置信息默认存储在用户目录下,如果设置错误,可以删除以下如图文件,重新操作以上命令 即 可
2.查看配置信息:git config --list
3.构建本地仓库:要使用Git对我们的代码进行版本控制,首先需要构建本地仓库
① 在本地初始化一个Git仓库
② 从远程仓库克隆一个仓库
linux常用命令
1、touch 文件 创建文件
2、cat 文件 查看文件
3、vim 文件 编辑文件
1、默认是查看模式
2、按i进入编辑模式
3、编辑完成之后 按esc 退出编辑模式
4、:wq 保存退出 :q! 强制退出
4、清屏 clear
5、粘贴和复制 不是ctrl + c 和ctrl + v 可以使用右键粘贴复制
粘贴 shift + insert
复制 ctrl + insert
本地仓库的相关操作
1.在本地初始化一个Git仓库:
在电脑的任意位置创建一个空目录作为我们的本地Git仓库
进入这个目录中,点击右键打开Git bash窗口
执行命令Git init 如果在当前目录中看到.git文件夹(此文件夹为隐藏文件夹)则说明Git仓库创建成功
2.查看文件状态: git status [-s]
3.将文件添加(修改)到版本库
要将一个文件纳入到版本库管理,首先要将其添加到暂存区,然后才能提交到仓库中。
#创建文件 Readme.txt # 添加单个文件到暂存区 git add Readme.txt # 将当前目录下所有修改添加到暂存区,除按照规则忽略的之外 git add .
4.将暂存区中的文件,提交到仓库中 # 带评论提交,用于说明提交内容、变更、作用等 git commit -m ‘your comments’ Readme.txt
5.查看提交历史记录 有的时候,是会需要查看自己做过哪些提交,来回顾自己完成的部分。或者需要寻找某个具体的提 交来 查看当时的代码。
git log # 显示所有提交的历史记录
a.txt commit 本地仓库 1234
b.txt commit 本地仓库 2345
git log
git reset --hard ‘1234’
6.版本回退 有了 git log 来查看提交的历史记录,我们就可以通过 git reset --hard 来回退到我们需要 的特定版本,然后使用当时的代码进行各种操作。
#回退到 commit_id 指定的提交版本
git reset --hard ‘commit_id’
7.回到未来的某个提交
当退回到某个提交的版本以后,再通过 git log 是无法显示在这之后的提交信息的。但是,通过 git reflog 可以获取到操作命令的历史。因此,想要回到未来的某个提交,先通过 git reflog 从 历史命令中找到想要回到的提交版本的 ID, 然后通过 git reset --hard 来切换。
git reflog
git reset --hard ‘commit_id’
总结
1、本地工作区 到暂存区
git add 指定的文件 git add .
没有添加暂存区 文件未被跟踪的 红色
git status 查询文件的状态
2、暂存区到本地仓库
git commit -m ‘备注信息’ 提交 所有的
git commit -m ‘备注信息’ 指定文件
在暂存区文件的颜色 是绿色 可以commit
3、查看提交的历史
git log 查看详细的
git reflog 查看简洁的
4、版本回退
git reset --hard 'commit_id'
四、分支管理
1、查看分支
查看本地分支信息 git branch
查看相对详细的本地分支信息 git branch -v
查看包括远程仓库在内的分支信息 git branch -av
注意:前面带有*号,这标识我们当前所在的分支
2、创建分支
新建一个名称为 dev 的分支
git branch dev
3、切换分支
新建完 dev 分支以后,通过该命令切换到 dev 分支
git checkout dev
注意:当我们创建完分支以后,我们需要切换到新建的分支,否则,所有的修改,还是在原来的分支 上。事实上,所有的改动,只能影响到当前所在的分支。
4、创建并切换分支
新建 dev 分支,并切换到该分支上
git checkout -b dev
5、合并分支
切换回 master 分支 git checkout master
将 dev 分支中的修改合并回 master 分支 git merge dev
注意:分支修改文件中如果有换行的话会报错
解决:Git默认配置替换回车换行成统一的CRLF,我们只需要修改配置禁用该功能即可。 git config --global core.autocrlf false
6、删除分支
当之前创建的分支,完成了它的使命,如 Bug 修复完,分支合并以后,这个分支就不在需要了, 就可 以删除它。
删除dev分支
git branch -d dev
7、合并冲突
1、构建一个本地仓库 git init
2、创建a.txt 书写代码 hello git1 hello git2 hello git3
3、在主分支master 将a.txt 添加到暂存区 git add .
4、在主分支master 将暂存区的a.txt 提交到本次仓库 git commit -m ‘1 commit a.txt’ a.txt
5、创建并切换到bugfix分支 git checkout -b bugfix
6、在bugfix分支中修改了a.txt 第一行代码 hello git1 bugfix的代码
7、在bugfix需要将修改的a.txt ---- add ---- commit 本地仓库
8、切换到master分支 git checkout master
9、在master主分支也修改a.txt的第一行代码
hello git1 master的代码
10、在master需要将修改的a.txt ---- add ---- commit 本地仓库
11、在master分支中合并bugfix分支 git merge bugfix 会出现合并冲突:在master和bugfix分支都修改了a.txt的第一行代码,不知道保留谁的,需要自己手 动合并
12、手动合并
在master分支去编辑a.txt
vi a.txt 手动保留需要的代码
13、将合并完的a.txt添加到暂存区 git add .
14、将合并完的暂存区a.txt 提交到本地仓库
git commmit -m 'merge a.txt'
总结
1、查看分支信息
git branch -v
2、创建分支
git branch 分支名称
3、切换分支
git checkout 分支名称
4、创建并切换分支
git checkout -b 分支名称
5、合并分支
git merge 分支 切换主分支进行合并
注意合并冲突
6、删除分支
git branch -d 分支名称
注意事项 vim修改了文件 一定要记着添加到本地仓库 add - commit
五、关联远程仓库
https关联的方式
1、在gitee上创建一个远程仓库
2、在本地初始化一个本地仓库
git init
3、粘贴远程仓库的http地址
4、查看本地仓库是否关联了远程仓库
git remote -v
5、本地仓库关联远程仓库
git remote add 别名 https地址
别名自己可以随便取 可以用origin
git remote -v 查看是否关联上
6、编写代码 将代码提交到本地仓库
add ----commit
7、将本地仓库的内容提交到远程仓库
git push 远程仓库的别名 master
ssh配置方式 比https更加安全和快速
配置ssh公钥 git clone ssh地址
其他的操作方式跟https一样
8、克隆
git clone https地址
六、本地仓库和远程仓库的版本不一致如何解决
1、拉取远程仓库 git pull 远程仓库别名 master
2、暴力拉取远程仓库 git pull --rebase 远程仓库别名 master
1、在找到已有代码的远程仓库,复制ssh地址
2、在本地构建本地仓库,并且编写代码 提交到本地仓库
git init
编写 a.txt
git add .
git commit -m 'commit a.txt'
3、关联远程仓库
git remote -v 查看
git remote add 别名 ssh的地址
4、push本地仓库的内容肯定是push不上的,会出现错误
原因是因为本地仓库和远程仓库版本不一致
image-20230517094007101
5、使用强制拉取在提交
git pull --rebase origin master 强制拉取
再push就可以成功
七、多人协同开发
1、组长创建一个远程仓库
2、添加小组成员
3、组长和组员都在操作同一个远程仓库
4、构建本地仓库 去提交代码
连接远程仓库 选择克隆的方式 clone
git clone ssh地址
5、原则: 现在远程仓库不是一个人在用 在push代码的时候,一定要先pull拉取再push
拉取: git pull origin master
提交: git push origin master
八、远程分支操作
1、到目前为止,操作的都是主分支master
2、可以创建其他分支来操作
3、现在本地创建day01分支 提交当前的作业到本地仓库 (默认提交到的分支是day01分支)
4、提交到远程仓库 git push 远程仓库的别名 day01