小贺的git笔记

版本控制

为了解决版本迭代的

版本控制是一种在开发过程中用于管理我们对文件,目录,工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前版本的软件工程技术

  • 实现跨区域多人协同开发
  • 追踪和记载一个或者多个文件的历史记录
  • 组织和保护你的文档和源代码
  • 统计工作量
  • 并行开发,提高开发效率
  • 跟踪记录整个软件的开发过程
  • 减轻开发人员的负担,节省时间,同时降低人为错误

多人开发必须使用版本控制,不然代价比较大

版本控制的分类

  • 本地版本控制
    记录文件的每次更新,可以对每一个版本做一个快照,或是记录补丁文件,适合个人用,如rcs

  • 集中版本控制
    所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改。
    服务器坏了就卒,一般定期保存,如svn

  • 分布式版本控制系统 git
    所有的版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在联网时push到相应的服务器或其他用户那里,由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用
    不会因为服务器损坏或者网络问题造成不能工作的情况
    git可以直接看到更新了哪些代码

git命令分类

Git Bash:Unix与Linux风格的命令行,使用最多,推荐最多
Git CMD:windows风格的命令行
Git GUI:图形界面的Git,不建议初学者使用,尽量先熟悉常用命令

基本的Linux命令

  • cd:改变目录
  • cd …:回退到上一个目录,直接cd进入默认目录
  • pwd:显示当前目录路径
  • clear:清屏(windows 是cls)
  • ls(ll):列出当前所有的文件,ll列出内容更详细
  • touch:新建一个文件 touch 文件名.文件类型,就会当当前目录下新建文件
  • rm:删除文件 remove 文件名.文件类型
  • mkdir:新建一个目录,就是新建文件夹
  • rm -r:删除一个文件夹,rm -r src 删除src目录
    !!!!rm -rf / 不能用,删除根目录,啥都没了
  • mv:移动文件 mv 文件名.文件类型 目标文件夹,文件个目标文件夹要在同一个目录下
  • reset:重新初始化终端
  • history:查看历史记录
  • help:帮助
  • exit:退出
  • #:注释

git的环境配置

查看配置:

  • git config -l :查看配置列表
  • git config --system --list:查看系统配置列表
  • git config --global --list:查看本地配置,用户自己配的

所有配置文件其实都保存在本地
git相关的配置文件:
1.Git/etc/gitconfig:Git安装目录下的gitconfig(系统级)
2.在c盘用户文件下的gitconfig中:只适用于当前登陆用户的配置(用户)
我们可以直接在对应文件里修改配置

用户名和邮箱是必须配置的!!!!
设置用户名和邮箱:

git config --global user.name "名称"
git config --global user.email   邮箱

git工作原理(核心)

git本地有三个工作区域:工作目录(work directory),暂存区(stage/index),资源库(repository或者git directory),如果加上远程的git仓库(remove directory)就可以分为四个工作区域,文件在这四个区域的转换关系如下:
请添加图片描述

  • Workspace:工作区,就是你平时存放项目代码的地方
  • stage/index:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
  • repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据,其中HEAD指向最新放入仓库的版本
  • remote:远程仓库,托管代码的服务器,可以简单认为是你项目组中的一台电脑用于远程数据的交换

git的工作流程
1.在工作目录中添加,修改文件
2.将需要进行版本管理的文件放入暂存区
3.将暂存区的文件提交到git仓库
因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)

git项目创建及克隆

1.创建工作目录及常用指令
工作目录:(workspace)一般就是你希望git帮助你管理的文件夹,可以是你项目的目录,也可以是一个空目录,建议不要有中文
日常使用只需要记住下面六个命令:请添加图片描述
本地仓库搭建:
创建本地仓库的方法有两种,一种是创建全新的仓库,另一种是克隆远程的仓库。
1,创建全新的仓库:需要用git管理的项目的根目录执行:

  • git init :初始化
    执行之后可以看到,仅仅在项目目录多出了一个.git目录,关于版本等所有信息都在这个目录里面

2,克隆远程仓库,将远程服务器上的仓库完全镜像一份到本地

  • git clone url 克隆一个项目和它的整个代码历史

git的基本操作命令

文件的四种状态:

  • Untracked未跟踪,此文件在文件夹中,但并没有加入到git库,不参与版本控制,通过git add状态变为Staged
  • Unmodify:文件已入库,未修改,即版本库中的文件快照内容与文件夹中完全一致,这种文件一般有两种去处,如果它被修改,则变为Modified。如果使用git rm移出版本库,则成为Untracked文件
  • Modified:文件已修改,仅仅是修改,并没有进行其他的操作,这个文件也有两个去处,通过git add可进入staged状态,使用git checkout则丢弃修改过哟,返回到nmodify状态,这个git checkout即从库中取出文件,覆盖当前修改。
  • Staged:暂存状态,执行git commit则将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为Unmodify状态,执行git reset HEAD filename取消暂存,文件状态为Modified。
git status:查看所有文件状态
git status 文件名:查看指定文件状态
git add .    添加所有文件到暂存区
git  commit -m  "消息内容" 提交暂存区中的内容到本地仓库。-m 提交信息

忽略文件:
有些时候,我们不想把某些文件纳入版本控制,比如数据库文件,临时文件,设计文件等
在主目录下建立“.gitignore”文件,此文件有如下规则:

  • 忽略文件中的空行或以井号(#)开始的行将会被忽略
  • 可以使用linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号代表可选字符串等。
  • 如果名称的最前面有一个感叹号,代表例外规则,将不被忽略
  • 如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件buhulue
  • 如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)
#为注释
*.txt         #忽略所有.txt结尾的文件
!lib.txt      #但lib.txt除外
/temp         #仅忽略项目根目录下的TODO文件,不包括其他目录temp
build/        #忽略build/目录下的所有文件
doc/*.txt     #会忽略doc/abab.txt   但不包括doc/sss/ss.txt   

使用码云

github是有墙的,比较慢,在国内的话,我们一般使用gitee,公司中有时候会搭建自己的gitlab服务器

1.注册登录,完善信息
2.设置本机绑定shh公钥,实现免密码登录(免密码登录,这一步挺重要的,码云上远程仓库,我们平时工作在本地仓库)

进入C:\Users\administrator\.ssh目录
使用  ssh-keygen -t rsa 加密算法   生成公钥

3.将公钥信息public key添加到码云账户中即可
4.新建仓库
许可证:来源是否可以随意转载,开源但是不能商业使用,不能转载。。。。限制
5.克隆到本地

idea中集成git

1.新建项目,绑定git

  • 将我们远程的git文件目录拷贝到项目中即可
  • 注意观察idea中的变化请添加图片描述
    2.修改文件,使用idea操作git
  • 添加到暂存区
  • commit提交
  • push到远程仓库

3.提交测试
以上都是单个人的操作

git分支

git分支中常用指令

git branch    #列出所有的本地分支
git branch -r #列出所有的远程分支
git branch [分支名字]   #新建一个分支,但依然停留在当前分支
git checkout -b[branch] #新建一个分支,并切换到该分支
git merge [branch]#合并指定分支到当前分支
git branch -d[分支名字]  # 删除分支
 #删除远程分支
git push origin --delete[分支名字]
git branch -dr[remote/branch]

多个分支如果并行执行,就会导致我们代码不冲突,也就是同时存在多个版本
如果冲突的话协商即可

如果同一个文件在合并分支时都被修改了则会引起冲突,解决的办法是我们可以修改冲突文件后重新提交!!!(选择要保留哪一版)

master主分支应该非常稳定,用来发布新版本,一般情况下不允许在上面工作,工作一般情况下在新建的dev分支上工作,工作完成后,比如要发布,或者dev分支代码稳定后可以合并到主分支master上来。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值