GIT学习笔记

写在前面的几点声明:
1.内容来自网上的【尚硅谷】 Git&GitHub 最全教程,从入门到精通课程
2.实战部分因为时间问题没具体跟进,只是看的教程内容,理解过程

Git学习笔记

Git对于SVN来说是分布式的版本控制软件,关于版本控制:版本控制是在已经有的代码模块版本中的代码更改和维护,需要记录历史的状态,在历史状态上进行进一步的更改。同时在多个人共同的开发一个类或者同一个文档的过程中,文本或者类是存储在两者共同可见的存储空间中,团队协作中的文件控制。版本控制一般分成是集中式(容易单点故障)和分布式的两类。
版本控制的更多功能:

  1. 协同修改
  2. 数据备份
  3. 版本管理
  4. 权限控制
  5. 历史纪录
  6. 分支管理:允许多条生产线同时工作
    Git的优势:
    大多数的的操作可以在本地实现的,不需要远程的,本地保存了所有的完整性,在仓库中保存的是整个新版本,旧版本是自动的保存的。Linux命令的全面兼容。
git的本地结构:

本地结构是理解整个工作过程的重要内容,
工作区域:写代码
暂存区域:临时存储(可以存仓库也可以放弃)
本地库:历史版本
三者的关系大致:
git本地结构
git add添加到暂存区域,git commit存入到本地库
托管中心:维护远程的库
局域网的Gitlab
外网的:github,gitee等

一些git的实战命令:
本地仓库的初始化:

win下右键可以使用git bash 进入到指定的路径下面,然后执行git init ,会在本地生成一个空的仓库,通过一个.git目录下的所有文件来维持整个仓库的初始状态:
本地仓库
git的命令级别:
项目级别和系统级别,项目级别的只存在于项目中,系统的级别在项目级别之上。
两个命令的基本参数是:
git config +

git config --global +
其实这个些配置文件最终都会在.git/config之中,本地在项目目录下,系统级别的在家目录下。config
比如设置user.name和user.email之后的config文件:
config name email
config其实是内容的修改
查看项目的状态:

git status

状态
新建文件并放入到暂存区中:
touch good.txt
git add filename
使用git rm --cache file从暂存区中撤销这个文件缓存
暂存区提交到本地仓库:
git commit file
注意到暂存区中的文件才是会被追踪的,已经在暂存区中的文件的修改是会被追踪的,是否提交到本地仓库。
不单独打开编辑器直接写入相应的提交信息:
git commit -m " fsdaf" file
几个命令总结:
git status
git add file
git commit -m “message” file

版本的前进和回退

首先是查看提交的记录:
git log查看所有的提交信息
git log --pretty=oneline
git log --oneline
git reflog显示版本距离版本
其中的HEAD其实是当前的版本,这是两次提交之后的git log显示变化:
log变化
log变化
log变化
git reflog:查看各个版本同时查看版本和目前head的距离,对于版本的回退或者前进有很大帮助

前进或者回退版本命令:

其实是对HEAD指针机型操作:

  1. 基于索引值进行操作:

    git reset --hard [索引值]

其中的索引值可以通过git reflog获得
回退
可以看出来上面的good.txt文件中的内容已经放生了改变,回退到第二次提交的时候。
此时head的指向发生了变化:
head变化
2. 退回几个版本:

指定回退一个版本:

git reset --hrad HEAD^

回退两个版本:

git reset --hard HEAD^^

回退N个版本:

git reset --hard HEAD~n

hard,soft,mix参数的不同:
hard是工作区,本地库,暂存区都发生改变
soft是仅仅是移动本地库的HEAD指针
mixed是本地库和暂存区进行了改变,工作区不发生改变

删除文件的恢复操作:

一般来说是针对已经提交上去的文件的更改,首先是在工作区对文件的删除
rm test.txt
之后查看状态:
状态
可以看出test是删除的状态了,这个操作应该添加到暂存区,之后在提交到本地库
提交本地库
将本地的操作落实到本地库上
本地库
查看文件的差异:

git diff test.txt

一般来说,这个是和暂存区的文件进行对比的
文件对比
也可以指定比较的版本:

git diff HEAD^ test.txt
分支概述:

版本控制中使用多个分支进行不同工作的推进,齐头并进互不干扰
分支
多分支
热修复:在不下线的前提下进行修复和开发
分支操作:

git branch -v 查看分支
git branch hot_fix 创建分支
git checkout hot_fix 切换分支

从接受修改的分支上来进行合并 git merge hot_fix实现在master上分支的合并
HASH:
hash一种加密算法,把明文转化成密文,并且算法的输出是相同长度的,常用在检验等操作中

与远程仓库的操作:

本地仓库为远程仓库添加别名,每一个远程仓库都有一个http和ssh地址
git remote -v 查看所有的远程的仓库别名
git remote add [name] [url] 其别名的命令
git push [name] master 推送操作
git clone [url] clone远程仓库,完整的把仓库复制下来,初始化别名,初始化本地库
为团队添加成员:
在项目的设置seeting中Collaborators中添加github账户邮箱即可,然后被邀请的人接受邀请,在开发过程中就可以直接推送到项目中。
添加团队成员
和远程库同步:

 git pull [name]  [branch]
 git fetch [name]  [branch]
 git merge [name]/[branch]

团队中的其他人在项目发生改变的时候可以通过pull操作是自己的本地的内容和远程的相同,pull其实是fetch和merge两者的结合

团队协作的冲突解决:

首先每个人对项目的修改必须基于最新的版本才能进一步的开发,首先需要git pull 远程仓库的内容,从git pull下来的项目需要和本地进行冲突的解决,冲突的解决都是人工决定的。

跨团队协作:

团队外的人进行fork操作,拥有和团队内相同的远程仓库,
之后clone项目到本地库,在本地进行修改和操作,之后推送到自己远程仓库中
在团队外的人员修改好远程仓库之后,需要提出pull request操作,将自己的更改操作发送给团队内的人员。
团队内的人员对提交进行审核和合并,最终merge request
最终把远程仓库中的内容pull到本地。

Git工作流:

分类:
集中式工作流:不分支,都和mater保持,类似于SVN集中式
GitFlow工作流:充分使用分支
Forking工作流:一般是跨团队协作

GITFLOW为主的开发模式:
gitfow

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值