git笔记
大学期间只是简单的了解了一下git,工作之后才真正用到了git
本文仅仅是作者是刚开始学习git的笔记,只包含一些指令操作,没有更深一步了解使用
推荐一个网站,可以有效帮助熟练使用git的各种指令:https://oschina.gitee.io/learn-git-branching/
一.版本控制
1.版本控制应该有的功能
-
协同修改
多人并行修改服务器端的同一个文件
-
数据备份
不仅保存目录和文件的当前状态,还能够保存每一个提交过的历史状态
-
版本管理
在保存每一个版本的文件信息时做到不保存重复数据
svn采用的时增量式管理的方式
git采取了文件系统快照的方式
-
权限控制
对团队中参与开发的人员进行权限控制
对团队开发者贡献的代码进行审核–git独有
-
历史记录
查看修改人、修改时间、修改内容、日志信息
将本地文件恢复到某一个历史状态
-
分支管理
允许开发团队在工作过程中多条生产线同时推进任务,进一步提高效率
二.Git简介
1.git优势
- 大部分操作在本地完成,不需要联网
- 完整性保证
- 尽可能添加数据而不是删除或修改数据
- 分支操作非常快捷流畅
- 与Linux命令全面兼容
2.git安装
3.git结构
- 本地结构
4.git和代码托管中心
代码托管中心任务:维护远程库
-
局域网下
GitLab服务器
-
外网环境下
GitHub
码云(Gitee)
5.本地库和远程库
- 团队内部协作
- 跨团队协作
三.命令行操作
1.本地库初始化
-
命令:
git init
-
效果:
-
注意:./git目录中存放的时本地库相关的子目录和文件,不要对它进行操作
2.设置签名
-
形式:
用户名:***
Email地址:***@email.com
信息保存位置:
./git/config
-
作用:区分不同开发人员的身份
-
辨析:这里设置的签名和登陆远程库的账号密码没有任何关系
-
命令:
-
项目/仓库级别:仅在当前本地库范围内有效
git config
-
系统用户级别:登陆当前操作系统的用户范围
git config --global
-
-
级别优先级:
就近原则:项目级别优先于系统级别
二者必须要有一个
3.查看状态
git status
4.添加到暂存区
git add 文件名
5.提交
git commit 文件名
‘
6.查看历史记录
git log
查看版本记录
多屏显示控制方式:
- 空格向下翻页
- b向上翻页
- q退出
参数:
--pretty=oneline
:每条记录只显示一行--oneline
只显示部分hash值
git relog
除了显示记录之外,还会显示回退到当前版本的步数
7.删除文件并找回
退回到删除前的版本即可
8.前进后退
-
基于索引值操作(推荐)
git reset --hard 索引值
-
使用
^
符号只能后退
git reset --hard HEAD^
后退几个版本,就加几个^
-
使用
~
符号只能后退
gie reset --hard HEAD~回退的步长
9.比较文件
git diff 文件名
展示文件变化的内容
四.分支管理
1.优点
- 同时并行推进多个功能开发,提高效率
- 各个分支独立
2.操作
-
git branch -v
查看各分支 -
git branch 分支名
创建分支 -
git checkout 分支名
切换分支 -
合并分支
- 切换到被合并的分支上
- 执行
git merge 分支名
将其他分支内容到当前分支
-
解决冲突
- 编辑文件,删除特殊符号
- 把文件修改到满意的程度
- git add[文件名]
- git commit -m “日志信息”
-
git remote add 别名 远程仓库地址
保存远程仓库地址 -
git push 别名/地址 分支名
-
git clone 地址
- 完整的把远程库下载到本地
- 创建origin远程地址别名
- 初始化本地库
-
git pull
= fetch + mergegit fetch[远程库地址别名][远程分支名]
git merge [远程库地址别名/远程分支名]
3.协同开发时的冲突解决
-
如果不是基于最新版所作的修改,不能推送,必须要先拉取
远程仓库地址 ` 保存远程仓库地址 -
git push 别名/地址 分支名
-
git clone 地址
- 完整的把远程库下载到本地
- 创建origin远程地址别名
- 初始化本地库
-
git pull
= fetch + mergegit fetch[远程库地址别名][远程分支名]
git merge [远程库地址别名/远程分支名]
3.协同开发时的冲突解决
- 如果不是基于最新版所作的修改,不能推送,必须要先拉取
- 拉取下来后如果进入冲突,则按照分支冲突操作解决即可