以下是我的Git小总结,希望可以 帮助到大家!!!
(新手入住,喜欢的点个关注,持续更新小总结,日常在线,可交流学习!!!)
GIt认识
(分布式版本控制系统)
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 仓库就是那个.git 目录,其中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪,从而实现文档的版本控制。.git目录位于工作目
Git库中由三部
1) 工作目录:用户本地的
2) Index(索引):将工作目录下所有文件(包含子目录)生成快照,存放到一个临时的存储区域
3) 仓库:将索引通过commit命令提交至仓库中,每一次提交都意味着版本在进行一次
Git安装
$ yum -y install git //安装git
$ git –-version //验证
Git使用
url:.git/config //全局配置
//配置使用git仓库的人
git config --global user.name "YOUR NAME"
//配置使用git仓库的人员邮箱
git config --global user.email "YOUR EMAIL ADD\RESS"
Git的工作方式
分为集中式工作流、功能分支工作流、Gitflow工作流和Forking
其中集中式工作流和功能分支工作流是已经使用过的,Gitflow和Forking两种工作流暂时没有使用过。
这里仅简单认识一下工作方式,具体详情访问:http://小崔笔记之<Git的工作方式>
创建仓库
Git init 初始化本地版本库
创建了一个.git文件夹,隐藏的.git文件夹就是版本库:所有的本地配置和修改都存储在这里。??
git init
// 重置当前用户名密码
git config --system --unset credential.helper
Git touch创建文件
在存储库中创建一些东西:(创建文件的两种方式)
?
Git status查看状态
运行git status,我们会看到新创建的未被追踪的文件。
use “git add” to track //使用 "git add" 指令对文件进行追踪
No commits yet //还没有提交
untracked files //未追踪文件
Git add添加文件到暂存区
根据提示(use “git add” to track ),我们添加文件
通过 git status 查看得知此时文件已经被添加了(又称staged),但还没有提交,仅仅存在暂存区中。
Git commit -m提交
为了记录这些变化,我们来提交它。
git commit -m "add.txt" // "xx"指定提交暂存区的内容
On branch master // 在master的分支上
nothing to commit, working tree clean // 没有提交
Git Show(显示提交内容)
查看本地代码状态,是否有待提交的代码
Git log日志(提交历史记录)
检查提交历史记录
$ git log //指令
author //作者
date //日期
commit //提交
git log // 查看提交历史
git log -p // 查看指定文件的提交历史
git blame // 以列表方式查看指定文件的提交历史
?
优化日志(看着更舒服 没别的优点)
Git mv -m工作区文件更名
git mv -m (NAME) (newNAME)
Git rm工作区文件删除
git rm (文件名) //删除指定文件
git status //查看状态
使用git怎么撤销本地(工作区)修改,暂存区修改,版本区(本地仓库)修改,以及远程仓库的提交
什么是修改? 比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改。
1、未使用git add 的时候----在工作区
git checkout -- (filepathname) //放弃修改某个文件
列如 : git checkout -- a.txt
git checkout . //放弃所有修改的文件
git restore . //放弃所有修改的文件
?2、已经使用git add 的时候----在暂存区
git reset HEAD filepathname //恢复某个文件到工作区
例如: git reset HEAD a.txt
git reset HEAD . //恢复所有文件到工作区
git reset //恢复所有文件到工作区
注意:这里只恢复到工作区,如果想放弃修改的代码还需要执行步骤1(工作区)中的操作
3、已经使用git commit 提交的了代码----在版本区(本地仓库)
//1、如果你想全部撤回并回到远程仓库最新的状态(不保存代码修改)
1、git reset --hard HEAD^ //回退上一次commit的状态
//或git reset --hard commit_ id //回退某个版本+id号就行
2、gitpull//拉取一下远程最新的
//2、如果你想拉回工作区并保存修改。只撤销commit 和add( 保存代码修改)
git reset -- mixed HEAD^
//或
git reset HEAD^
//3、如果你想撤销commit但是不撤销add(保存代码修改)
git reset --soft HEAD^ //只撤销了git commit;
//修改后的代码还在暂存区
//4、终极版,由于你太懒,不管是暂存区,版本区,你只想撤销修改并回到远程最新的版本(不保存代码修改)
1、git fetch --all
2、git reset --hard origin/master //git reset --hard origin/远程分支名
//注意:这里只在暂存区和版本区哦
注意:只有修改并添加到缓存区才能提交到版本库
Git 如何撤销已被放入暂存区的文件
在执行完 git add 命令之后,我们的文件就会被放入了暂存区
1.注意最后的一个".",这条命令帮助我们一次性撤销所有放入暂存区的文件
git reset HEAD -- .
2.撤销指定目标文件
git reset HEAD -- filename
3.撤销指定目标文件
git rm --cached filename
以上三种方法只是把文件从暂存区中删除了(或者叫撤销了),并不会修改文件内容,也不会删除文件,在本地夹里还能找到。撤销后的文件状态是未被暂存的状态。
永久删除文件+暂存区
另外,git rm -f filename 命令,也能把文件从暂存区删除,但是此命令也同时删除了本地文件,回收站中也找不到了,提醒广大同胞,慎重使用此命令来撤销暂存区的文件。=
$ git rm -f filename
Git创建分支
1.切换到基础分支(一般master分支)
$ git checkout master //checkout切换分支
2.创建并切换到新分支
$ git checkout -b newBranch //newBranch创建的新分支名
3.更新分支代码并提交
$ git add *
$ git commit -m "init newBranch"
$ git push origin newBranch
Git如何查看与切换分支
查看所有分支
$ git branch -a
查看当前使用分支(结果列表前面*号,代表当前使用的分支)
$ git branch
切换分支
$ git checkout 分支名字
创建远程分支
创建连接 连接远程仓库 地址仓库上面有 操作前需先连接 一次即可
$ git remote add origin 地址(git地址)
?查看连接,出现如图所示,便代表连接成功了
$ git remote -v
?删除连接(查看连接什么都没出来代表已经删除成功了)
$ git remote rm or origin
?第一次提交到远程仓库
$ git push -u origin [分支名称]
非第一次提交
$ git push origin 分支名称
Git branch -d删除分支
删除指定分支 -d 后
$ git branch -d branchName
合并分支
$ git merge dev
假如我们现在在dev分支上,刚开发完项目,执行了下列命令:
git add . -- >暂存区
git commit -m '提交的备注信息' -->分支
git push -u origin dev -->远程仓库
想将dev分支合并到master分支,操作如下:
1、首先切换到master分支上
$ git checkout master //切换分支
2、如果是多人开发的话 需要把远程master上的代码pull下来
$ git pull origin master //保证主代码完整性
//如果是自己一个开发就没有必要了,为了保险期间还是pull
3、然后我们把dev分支的代码合并到master上
$ git merge dev //合并dev分支打到master上
4、然后查看状态及执行提交命令
$ git status //查看状态
On branch master
Your branch is ahead of 'origin/master' by 12 commits.
(use "git push" to publish your local commits)
nothing to commit, working tree clean
//上面的意思就是你有12个commit,需要push到远程master上
> 最后执行下面提交命令
git push origin master //覆盖之前主分支代码
5其他命令
//更新远程分支列表
$ git remote update origin --prune
//查看所有分支
$ git branch -a
//删除远程分支Chapater6
$ git push origin --delete Chapater6
//删除本地分支 Chapater6
$ git branch -d Chapater6
克隆分支(下载分支内文件)
在想要的克隆的文件直接右键打开 Git Bash Here 输入下方代码 既可克隆
$ git clone 地址 (git地址)
删除远程分支
仅删除远程仓库的分支 本地仓库任然存在
$ git push origin --delete [分支名称]
GIt的tag了解
Git 中的tag指向一次commit的id,通常用来给开发分支做一个标记,如标记一个版本号
1.tag 是什么?
tag , 翻译过来是标签的意思,顾名思义,标签是为了标记某种事物。?
tag 是 Git 版本库的一个快照,指向某个 commit 的指针。
2.使用tag 的好处?
tag 的存在,是因为我们需要这种标记的功能。目前的项目开发中,当发布版本时 tag 就派上用场了。例如 v1.0.1,v1.0.2…? 另外,git 提供了 tag 的增删改查一系列操作,在 tag 的使用上,可谓非常之方便。
3.tag 和 branch 的区别以及使用场景?
tag 对应某次 commit, 是一个点,是不可移动的。? branch 对应一系列 commit,是很多点连成的一根线,有一个HEAD 指针,是可以依靠 HEAD 指针移动的。
两者的区别决定了使用方式,改动代码用 branch ,不改动只查看用 tag。
tag 和 branch 的相互配合使用,有时候起到非常方便的效果,例如 已经发布了 v1.0 v2.0 v3.0 三个版本,这个时候,我突然想不改现有代码的前提下,在 v2.0 的基础上加个新功能,作为 v4.0 发布。就可以 检出 v2.0 的代码作为一个 branch ,然后作为开发分支。
Git的tag使用
创建 tag 是基于本地分支的 commit,而且与分支的推送是两回事,就是说分支已经推送到远程了,但是你的 tag 并没有,如果把 tag 推送到远程分支上,需要另外执行 tag 的推送命令。
1.创建标签:
$ git tag -a version -m "note"
//注解:git tag 是打标签的命令,-a 是添加标签,其后要跟新标签号,-m 及后面的字符串是对该标签的注释。
2.推送标签到远程仓库
$ git push origin <tagName>
//注解:就像git push origin master 把本地修改提交到远程仓库一样,-tags可以把本地的打的标签全部提交到远程仓库。
//若存在很多未推送的本地标签,你想一次全部推送的话,可以使用一下的命令:
$git push origin --tags
3.删除标签
$ git tag -d tagName
//注解:-d 表示删除,后面跟要删除的tag名字
?4.删除远程标签
$ git push origin :<tagName>
//注解:就像git push origin :branch_1 可以删除远程仓库的分支branch_1一样, 冒号前为空表示删除远程仓库的tag。
5.查看标签
查看本地某个 tag 的详细信息:
$ git show <tagName> 查看标签信息
?查看本地所有 tag
$ git tag 或者 git tag -l
?查看远程所有 tag
$ git ls-remote --tags origin
日志形式查看tag信息
$ git log --pretty=oneline //查看当前分支的提交历史,里面包含 commit id
6.重命名标签
这个本质上是删除掉旧名字 tag ,然后再新建新名字 tag ,然后实现重命名的作用。
如果 tag 只存在本地,那么只需要删除本地的旧名字 tag ,然后新建新名字 tag:
$ git tag -d <oldTagName>
$ git tag <newTagName>
$ git push origin <newTagName> //推送到远程仓库
若已经推送到远程了,那么不仅要删除本地的,还要删除远程的,再重新创建和推送:
$ git tag -d <oldTagName>
$ git push origin :<oldTagName>
$ git tag <newTagName>
$ git push origin <newTagName> //推送到远程仓库
7.检出标签
$ git checkout -b <branchName> <tagName>
//因为 tag 本身指向的就是一个 commit,所以和根据 commit id 检出分支是一个道理。
注意:如果我们想要修改 tag 检出代码分支,那么虽然分支中的代码改变了,但是 tag 标记的 commit 还是同一个,标记的代码是不会变的
Git到这里就结束啦,以上是我(萌小崔)的Git总结! 我平时比较喜欢写一些笔记做一些总结,以后我也会持续更新我的小总结!希望可以帮到大家!感谢支持
QQ:2097113175
vx:cxljy328
Thans!!
|