文章目录
1.背景
git相当于是一个你的文件备份库,只不过是存在.git文件里,git会帮我们管理,我们不需要不断另存为备份,而通过执行相应命令而已
2.安装与配置
直接在官网下载git,一路默认安装即可
打开终端
查看是否安装成功
git --version
配置
git config --global user.name "Wilson79"
git config --global user.email "xxxxxx"
查看当前已经设置的配置
git config --list
3.创建仓库
创建git仓库(文件夹)
法一:
cd到你要创建git的文件夹
git init
git init 文件名
法二:
cd到某个文件夹,然后直接克隆远端github项目地址
git clone https://github....
4.图例
5.基本用法 (commit相当于用来创建结点)
查看状态
git status
5.1 git log
查看历史记录,jk上下移动,退出按q
git log
查看历史记录和具体干了什么
git log -p
缩写历史记录
git log --oneline
显示所有缩写历史记录(针对退回时,快速找ID)
git log --oneline --all
modified // 表示此文件已经存在,但是被修改了
untracked // 表示此文件还从来没有被保存到暂存区过
staged // 表示暂存区,防止你提交错误文件进去,如1G的视频
git add .
后所有文件被加到了暂存区中
git commit -m "备注"
可以“造一颗后悔药”
git commit -m '备注'
也可以
3472f9b是“后悔药”的ID 7位
5.2 退回版本举例
我对问题.txt文件分别添加了问题6和问题7
那么我想退回到添加了问题6的状态要如何做呢
git checkout XXX
穿越到指定的历史结点(前7位ID就可以了)
git checkout master
回到主分支
git checkout -
回到前一个版本
6.标签tag
比如你要出一本书,出很多版本
你在时间轴上就可以用tag标记出来
git tag -a 标签名 -m "备注"
// 默认在最前的结点打标签
git tag -a 标签名 -m "备注" 950a5cb
// 在id为950a5cb的结点打标签
git tag
查看所有标签
git show tag名称
可以查看这个tag的信息,以及当时添加的备注
git checkout 标签名
回溯至标签所在的提交
这个真的太方便了,特别是退回到书的不同版本
7.分支branch
git init的时候会创建一个默认分支master
如果你退回到了某个结点,然后对这个结点进行了另外的操作,这时你最好创建一个新分支(不然虽然系统会帮你建一个结点,但是后续无法保存下来)
退回到某个结点,然后直接创建新分支名(相当于多了个箭头
),然后切换到这个分支上,最后在这个分支上进行后续操作(修改文件,然后git add,git commit)
git branch 分支名
git checkout 分支名
或一步到位
git checkout -b 分支名 // 创建并切换至分支
git log --oneline --all --graph
// 图示全部历史记录
类似地可以创建三个分支
删除分支
8.合并分支merge
- 将当前HEAD指向的结点和分支名X合并
HEAD如果指向分支名,则也指向最近的结点
git merge 分支名X
一般会有冲突,需要手动fix冲突,因为git不知道你想保留什么,解决冲突后commit一下结果
=======
是两个分支的分界线
- 手动修改
- 修改完后记得要 git add 和 git commit一次
- 可以看到两个分支已经合并在一起了
9.远程分支
前面提到的所有操作都是在本地进行的(包括你创建的所有分支,所有提交记录),但如果发生意外你的本地电脑的信息丢失了,那怎么办呢?如何解决这种潜在风险呢
解决方法:每次做完一个代码,我在本地仓库保存一份,在远程仓库也保存一份
远程代码管理服务有很多:比如github,码云等,随便用哪种都行
法一:(已经在本地写过git记录了)
在github新建一个仓库,注意不要点创建Readme.txt
git remote // 查看当前仓库链接的远程
git remote -v // 显示详细信息
git remote add 远程名称 远程地址 // 添加远程仓库
git remote add mytestt [email protected]:WeiSenhui/Test.git
// 最好用ssh,用http会要求输账号密码
git push -u 远程名 分支名
// -u是为了方便以后从远端获取代码时,告诉git往哪个分支合并
第一次要用-u,以后git push就不需要加上-u了
法二:(git clone)
直接把地址克隆下来,然后就可以常用操作了
git clone https://github.com/WeiSenhui/Test.git 新文件名
10.多人合作
- 核心:每次要git pull获得最新的远端代码(更新结点)
10.1本地包含远端结点则可以往上git push
- 记忆技巧:本地包含远端结点则可以往上git push,如果本地结点和远端结点有不同,则要先git pull解决冲突
如果两个人间隔很短,都自己的更新push到了远端,那后push的人会被reject,他需要先git pull最最新的远端代码,这是可能会有,那你就要手动合并一下,这样在git push就可以了
- 如果你本地的分支结点不变,然后远端的结点数增加了(进行了commit),那你git pull是不会有冲突的,因为,远端的结点数比你多
但是如果远端结点数增加后,你同时也在本地分支增加了新结点(你commit后的想git push,有人比你更快一步更新了远端结点数),那你git pull就会有冲突,此时需要手动合并
手动修改冲突后,再add commit,最后git push就可以了
结点变化记录
11.删除本地git库
rm -rf .git
12.git流程图
一图胜千言——转载自 biaoyansu.com