Git: 分布式版本控制系统没有“中央服务器”,每个人的电脑都是一个完整的版本库。
□ 工作区: 写代码
简单的理解为在电脑里能看到的目录,比如自己创建的本地项目目录
□ 暂存区: 临时存储
Git的版本库里存了很多东西,其中最重要的就是称为index(或者叫stage)的暂存区,还有Git自动创建的第一个分支master,以及指向master的一个指针叫HEAD
□ 本地仓库: 历史版本
工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库
□ 远程仓库: 一个可以共享资源的服务器,如Github,Gitee
指令:
clone
: 从远程仓库中克隆代码到本地仓库checkout
: 从本地仓库中检出一个仓库分支然后进行修订add
: 在提交前先将代码提交到暂存区commit
: 提交到本地仓库。本地仓库中保存修改的各个历史版本fetch
: 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。pull
: 从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于push
: 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库官网下载:https://git-scm.com/download
很慢!不建议使用
镜像下载: https://npm.taobao.org/mirrors/git-for-windows/
之后运行exe一直next就OK了
右键如下,表示安装成功:
Git GUI:Git提供的图形界面工具
Git Bash:Git提供的命令行工具
配置用户基本信息:
git config --global user.name “xxx”
git config --global user.email "xxx"
git config --global user.name
git config --global user.email
git config --global --list
git config --global --unset user.name
git config --global --unset user.email
解决GitBash乱码问题:
1.打开GitBash执行命令:
git config --global core.quotepath false
2.安装目录/etc/bash.bashrc 文件最后加入:
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"
#切换到某个目录,存公钥
cd ~/.ssh
#生成公钥
ssh-keygen
#查看公钥,并复制 ctrl+insert
cat id_rsa.pub
要使用Git对我们的代码进行版本控制,首先需要获得本地仓库
git init
初始化本目录为一个本地仓库指令 | 说明 | 格式 |
---|---|---|
status |
查看的修改的状态(暂存区、工作区) | git status |
add |
添加工作区一个或多个文件的修改到暂存区 | `git add 单个文件名 |
commit |
提交暂存区内容到本地仓库的当前分支 | git commit -m '注释内容' |
log |
查看提交记录 | git log [分支] 分支: --all 显示所有分支 --pretty=oneline 将提交信息显示为一行 --abbrev-commit 使得输出的commitId更简短 --graph 以图的形式显示 |
reset |
版本切换 | git reset --hard commitID commitID 可以使用 git-log 或 git log 指令查看 |
reflog |
查看已经删除的提交记录 | git reflog |
cat |
显示版本库对象的内容、类型及大小信息· | git cat file |
添加文件至忽略列表:
忽略一些不必要的文件不上传
1.创建一个 .gitignore 文件
直接创建或GitBashtouch .gitignore
2.在此文件中书写需要忽略的文件
filename #忽略此目录
filename.idea #忽略此文件
filename/* #忽略此目录下的所有文件
filename/*.idea #忽略此目录下的.idea文件
3.保存退出
指令:
指令 | 说明 |
---|---|
branch |
查看本地分支 |
git branch 分支名 |
创建本地分支 |
git checkout 分支名 |
切换分支 |
git checkout -b 分支名 |
创建新的分支并切换到此分支 |
git merge 分支名称 |
合并分支(提交过程) |
git branch -d b1 |
删除分支时,需要做各种检查 |
git branch -D b1 |
不做任何检查,强制删除 |
注意
□ 合并分支一般是合并其他分支到master分支上
首先切换到master分支,然后合并分支
□ 不能删除当前分支,只能删除其他分支
解决冲突:
当>=2个人修改到同一处时,会产生冲突,Git会提示:CONFLICT (content): Merge conflict in...
,而此冲突需要人手动解决
使用规范:
Git 底层采用的是 SHA-1 算法,哈希算法可以被用来验证文件。
算法原理如下图:
Git 就是靠这种机制保证数据的完整性
Git 把数据看作是小型文件系统的一组快照。
每次提交更新时 Git 都会对当前的全部文件制作一个快照并保存这个快照的索引。为了高效,如果文件没有修改, Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。所以 Git 的 工作方式可以称之为快照流。
代码托管中心: 维护远程库
GItHub: https://github.com/
面向开源及私有软件项目的托管平台,只支持 Git 作为唯一的版本库格式进行托管
Gitee: https://gitee.com/
国内的一个代码托管平台,由于服务器在国内,所以相比于 GitHub,码云速度会更快
GitLab: https://about.gitlab.com/
用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务,一般用于在企业、学校等内部网络搭建git私服
GitHub使用教程