Git分布式版本控制工具
-
git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。
-
(安装过程这里省略)安装完成后在任意目录点击右键,如果能够看
到“Git GUI Here ”,"Git Bash Here"则说明Git安装成功。
Git GUI:Git提供的图形界面工具
Git Bash:Git提供的命令行工具
-
安装之后的基本配置
(1)打开Git Bash
(2)设置用户信息
git confifig --global user.name “xxxxxx”
git confifig --global user.email “xxxxxxx”
(3)查看配置信息
git confifig --global user.name
git confifig --global user.em
-
Git工作流程图(图片来自网络)
其中包括的命令:
(1)clone(克隆): 从远程仓库中克隆代码到本地仓库
(2)checkout (检出):从本地仓库中检出一个仓库分支然后进行修订
(3) add(添加): 在提交前先将代码提交到暂存区
(4)commit(提交): 提交到本地仓库,本地仓库中保存修改的各个历史版本
(5). fetch (抓取) :从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。
(6). pull (拉取) :从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于fetch+merge
(7) push(推送) : 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库
-
补充一些基本linux命令:
- ls/ll :查看当前目录
- touch :创建文件
- cat : 查看文件内容
-
为常用指令配置别名(可选)
有些常用的指令参数非常多,每次都要输入好多参数,我们可以使用别名:
- 打开用户目录,创建 .bashrc 文件;可以打开gitBash,执行 touch ~/.bashrc
- .bashrc 文件中输入:
//用于输出git提交日志 alias git-log ='git log --pretty=oneline --all --graph --abbrev-commit' //用于输出当前目录所有文件及基本信息 alias ll='ls -al'
- 打开gitBash,执行 source ~/.bashrc
完成配置之后,可以直接使用“git-log”命令
-
获取本地仓库
(1)打开任意目录,进入该目录下,右键打开Git Bash
(2)执行命令git init ,创建成功后,可在文件夹看到.git目录
-
基础操作指令
-
可以对Git工作目录下对于文件的修改(增加、删除、更新)
-
简单的流程(图片来自网络):
-
基本指令:
-
git add :将工作区的修改或者创建暂存到暂存区,格式:git add 单个文件名、将所有修改加入暂存区:git add .
-
git commit :将暂存区内容提交到本地仓库
-
git status:查看的修改的状态,包括暂存区、工作区
-
git commit:提交暂存区内容到本地仓库的当前分支,格式:git commit -m “注释内容”
-
git log:查看提交日志,(如果前面配置了别名 git**-log, 都包含了这些参数,后面可以直接使用指令 git-**log)格式:git log [option],options包括
–all 显示所有分支
–pretty=oneline 将提交信息显示为一行
–abbrev-commit 使输出的commitId更简短
–graph 以图的形式显示
-
git reset --hard commitID:版本回退,commitID 可以使用 git log 指令查看
-
git reflflog:查看已经删除的记录
-
如果我们有些文件不要纳入Git 的管理,比如一些自动生成的文件(日志文件、编译过程中创建的临时文件等), 我们可以在工作目录中创建一个名为 .gitignore 的文件(文件名称固定),列出要忽略的文件模式
//忽略.html文件 * .html
-
-
-
分支
分支就是把你的工作从开发主线上分离开来进行修改、开发新的功能,避免影响主线的开发。
- 查看本地分支:git branch
- 创建本地分支:git branch 分支名
- 切换分支:git checkout 分支名
- 切换到一个不存在的分支(创建并切换):git checkout -b 分支名
- 合并分支,一个分支上的提交可以合并到另一个分支:git merge 分支名称
- 删除分支(不能删除当前分支,只能删除其他分支):
- git branch -d b1 删除分支时,需要做各种检查
- git branch -D b1 不做任何检查,强制删除
- 解决冲突
当两个分支上对文件的修改不相同,合并时会发生冲突,就需要手动解:直接处理发生冲突的地方,再使用add,commit命令
-
Git远程仓库
- gitHub
- 码云( https://gitee.com/ ),也就是Gitee,国内代码托管平台
- GitLab ( https://about.gitlab.com/ )是一个用于仓库管理系统的开源项目,使用Git作 为代码管理工具,并在此基础上搭建起来的web服务,一般用于在企业、学校等内部网络搭建git私服。
-
使用码云:
- 注册账号,点击右上角+号创建新仓库,输入仓库名称,其他默认即可
- 配置SSH公钥
//打开Git bash //生成SSH公钥,不断回车即可: ssh-keygen -t rsa //获取公钥: cat ~/.ssh/id_rsa.pub
-
前往网站配置SSH公钥
-
配置完成后,验证是否成功:
//执行下面代码,输入yes+回车即可验证 ssh -T git@gitee.com
-
操作远程仓库
(1)添加远程仓库
先初始化本地库,然后与已创建的远程库进行对接。
命令: git remote add <远端名称> <仓库路径>;
远端名称,默认是origin,仓库路径,复制仓库SSH地址(如下图)
(2)查看远程仓库
命令:git remote
(3)推送到远程仓库
命令:git push [-f] [–set-upstream] [远端名称 [本地分支名][:远端分支名] ]
- 如果远程分支名和本地分支名称相同,则可以只写本地分支:git push origin master
- 加上-f表示强制覆盖,一般不使用
- -set-upstream推送到远端的同时并且建立起和远端分支的关联关系。例如:git push–setupstreamoriginmaster
- **如果推送失败出现以下错误:
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'gitee.com:lizhi21/lovemaker.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details
//根本原因时本地没有README.md这个文件,而远程仓库中有
//解决方法,执行下列命令即可:
git pull --rebase origin master
//本地就有了README.md这个文件,再推送就没问题了
(4)查看本地分支和远程分支的关联关系
git branch-vv命令
(5)克隆仓库
命令: git clone <仓库路径> [本地目录]
仓库路径同样时复制SSH地址:
本地目录就是你在本地某个路径打开Git bash,就克隆到本地的那个路径里
(6)抓取和拉取
抓取指令就是将仓库里的更新都抓取到本地,不会进行合并:
抓取命令:git fetch [remote name] [branch name];
例如: git fetch origin master
拉取指令就是将远端仓库的修改拉到本地并自动进行合并,等同于fetch+merge ,如果不指定远端名称和分支名,则抓取所有并更新当前分支。
拉取命令:git pull [remote name] [branch name]
例如: git pull origin master