目录
一、Git
git是一个分布式版本控制系统
工作区(Working Directiry): 是你克隆的项目的一个副本文件。工作区是对某个版本独立取出来的内容,放在本地磁盘上供你是要或修改
暂存区(staging):暂存区是一个文件,保存了下次将要提交的文件列表信息
本地仓库(local):当在工作区要提交更新的内容时,将找到暂存区的文件,将快照永久性存储到Git本地仓库
远程仓库(remote):为了让别人看到你的修改,需要将你的修改推送到远程仓库。同理,如果你想同步别人的修改,需要从远程仓库拉去更新
版本库(Respository): 工作区隐藏的 .git 目录,Git的版本库里存了很多东西,其中最重要的就是称为 stage(或者叫 index)的暂存区,和与远程仓库同步的本地仓库
各种git***
- git 是一种版本控制系统,是一个命令,是一种工具。
- github 是一个基于git实现在线代码托管的仓库,向互联网开放,企业版要收钱。
- gitlab 类似 github,一般用于在企业内搭建git私服,要自己搭环境。
- gitee 即码云,是 oschina 免费给企业用的,不用自己搭建环境。
- git-ce 是社区版,gitlab-ee是企业版,收费版。
1、GitHub如果使用私有仓库,是需要付费的,GitLab可以在上面搭建私人的免费仓库。
2、GitLab让开发团队对他们的代码仓库拥有更多的控制,相对于GitHub,它有不少的特色:
(1)允许免费设置仓库权限
(2)允许用户选择分享一个project的部分代码
(3)允许用户设置project的获取权限,进一步提升安全性
(4)可以设置获取到团队整体的改进进度
(5)通过innersourcing让不在权限范围内的人访问不到该资源
二、Git安装初始化
1、安装
安装过程比较简单,Window和Linux环境下安装方式下安装有所不同,可自行百度
2、配置初始化
配置某账号下所以的Git仓库
git config --global user.name "用户名"
git config --global ueer.email "邮箱"
只配置当前仓库
git config --local user.name "用户名"
git config --local ueer.email "邮箱"
查看当前Git配置
git config --global --list
初始化一个Git仓库
git init
三、Git命令
1、状态查看相关指令
git status #查看仓库当前状态
git diff #查看修改的内容
git log #显示从近到远的提交日志
git relog #查看历史版本号
git remote -v #查看远程路径
gitk --all #打开图形界面查看
.git/config #git路径的配置文件
2、将文件修改添加至暂存区
git add <file-name> #将指定文件至暂存区
git add . 或 git add --all #将工作区所以文件添加至暂存区
3、将暂存区所以的修改内容提交到当前本地仓库
git commit -m "更新注释"s
git commit -m '更新注释 回车 更新注释'
git commit --amend 修改最近一次的commit
4、撤销修改
- 使用场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
- 使用场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
- 使用场景3:已经提交了不合适的修改到本地仓库时,想要撤销本次提交,使用git reset --hard HEAD~n 或 git reset --hard commintid回退到之前的版本
git checkout -- file-name #在未放到暂存区(git add)前,撤销指定文件在工作区的修改,放到暂存区后不可撤销,回退到与版本
库 一样的状态
git checkout -- . #在未放到暂存区(git add)前,撤销所有文件在工作区的修改,放到暂存区后不可撤销,回退到与版本 库一样的状态
git reset HEAD file-name #在未提交(git commit)前,撤销指定文件在暂存区的修改,重新放到工作区。HEAD是当前分支版
本顶端的别名,也就是在当前分支你最近的一个提交
git reset [--Param] HEAD~n #在提交(git commit)后,回退到上n个版本
git reset [--Param] commitid #在提交(git commit)后,回退到commitid版本号的版本,使用前使用git log 或 git reflog 查看
每次提交的commitid
参数(Param)说明:
--soft 只还原HEAD
--mixed 只还原HEAD和Index,此时HEAD与暂存区的修改一致,默认参数
--hard 还原HEAD\Index\Working,此时工作区的修改也会被还原
5、存储修改(存草稿)
- 使用场景1:当正在某个分支 如dev 进行开发,而此时需要切换到其他分支 如test 进行开发,而当前在dev分支上的开发还没有完成,又不想提交,这时就可以使用 git stash将当前的修改先保存至堆栈区;当在test分支的开发完成后,在切换到dev分支继续开发,就可以从堆栈区恢复之前修改的内容
- 使用场景2:本该在dev分支下开发的内容,却在test分支开发了,需要重新切换到dev正确的分支进行开发,此时就可以使用git stash保存当前的修改,切回到dev分支后,再恢复之前修改的内容
总结:
- git stash的作用就是将目前不想提交的修改(工作区和暂存区的内容)保存至堆栈中,然后在某个分支上恢复出堆栈的内容,并不限制于只能在做修改的分支,在切换到其他任何分支后都可以从堆栈恢复修改的内容。可以理解为堆栈在git版本控制里是公用的
- 存储到堆栈的修改,如果想要提交,必须先从堆栈恢复修改的内容,然后再提交
- 没有在git版本控制里的文件,比如新增加的文件,还没有add,这个时候stash是不会会保存的
git stash save "save message" : 执行存储时,添加备注,方便查找只有git stash 也要可以的
git stash list :查看存储过的列表
git stash show :显示第一次存储的改动
git stash show stash@{n} :显示第n次的存储改动,如git stash show@{1}查看第二次的改动,n可通过git stash list查看
git stash apply :应用第一次的改动,不会发存储从堆栈中删除
git stash apply stash@{n} :应用第n次的改动
git stash pop :恢复第一次的改动,并将缓存从堆栈中删除
git stash pop stash@{n} :恢复第n次的改动,并将缓存从堆栈中删除
git stash drop :丢弃第一次改动,并从堆栈中删除
git stash drop stash@{n} :丢弃第n次的改动,并从堆栈中删除
git stash clear :删除堆栈中所有的缓存
6、分支操作
- 使用场景1:将分支名称为 oldbranch 改为 newbranch
1、将本地分支oldbranch切一个分支到本地
git branch -m oldbranch newbranch
2、删除远程分支
git push --delete origin oldbranch
3、将本地新分支推送到远程
git push origin newbranch
- 使用场景2:某个分支下创建分支
https://blog.csdn.net/RollingMikuzn/article/details/81134293
git brach :列出本地分支
git brach -r :列出远程分支
git brach -a :列出所有分支
git brach --merge :查看已经合并到当前分支的分支
git brach test :新建test分支
git brach -m old-name new-name :修改分支名称,old-nama为旧的分支名,new-name为新的分支名
git brach -d test :删除本地test分支
git checkout test :切换到test分支
git checkout -b test :新建并切换到test分支
git merge test :将test分支合并到当前分支
git cherry-pick commit :练选合并,将某个commit合并到当前分支
7、merge回退
- 方法1:reset到merge前的版本
git checkout <merge操作的分支>
git reset --haed <merge前的版本号>
8、将本地仓库推送至远程仓库
- add 和 commit 都只是在本地分支dev1上操作,如果想在其他的仓库同一分支dev2中也能看见你的修改,那就必须先推送到远程仓库,然后dev2再从远程仓库拉取。前提是dev1与dev2关联的同一个远程仓库
- git push <远程主机名> <本地分支名>:<远程分支名> 将本地分支的更新,推送到远程主机
- 不带任何参数的 git push默认只推送当前分支
git remote add origin <地址> :关联远程仓库
git push origin master :将本地master分支推送到远程master分支
git push origin :将当前分支推送到远端对应分支,本地分支与远程分支之间存在追踪关系
git push :将当前分支推送到远端对应分支,本地分支只有一个远程追踪分支
git push --all origin :将本地所以得分支全部推送至远程主机
git push --force origin :将本地分支强制推送至远程主机
git brach -r <brach> = git push origin :<remote-brach> :删除远程指定分支
9、远程仓库拉取
- git fetch <远程主机名> <分支名> 将某个远程主机的更新,取回本地。并不会与本地的分支进行合并,不会对本地的修改造成影响。通常用来查看其他人的修改
- git pull <远程主机名> <远程分支名>:<本地分支名> 取回远程主机某个分支的更新,再与本地分支进行合并
- git clone <远程仓库地址>
git fetch origin master :拉取远程主机主分支的更新
git pull origin master :拉取远程主机的主分支再与本地分支进行合并