介绍
官网:https://git-scm.com/download
Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。
基础操作
1.创建版本库
就是创建一个文件夹作为存放资源的目录
2.初始化操作
git init(会产生一个.git文件夹)
3.添加文件到版本库
git add(命令可将该文件添加到暂存区)
git add .
不加参数默认为将修改操作的文件和未跟踪新添加的文件添加到git系统的暂存区,注意不包括删除
git add -u .
-u 表示将已跟踪文件中的修改和删除的文件添加到暂存区,不包括新增加的文件,注意这些被删除的文件被加入到暂存区再被提交并推送到服务器的版本库之后这个文件就会从git系统中消失了。
git add -A .
-A 表示将所有的已跟踪的文件的修改与删除和新增的未跟踪的文件都添加到暂存区。
git add [文件1] [文件二]
git commit(将暂存区里的改动给提交到本地的版本库)
git commit -m ‘message’
4.status和diff的区别
5.版本回退
1.git log
git log 可以让我们查看提交commit history
git log默认会输出commit hash, author, date, commit message.
–pretty=oneline
这个命令简化git log的默认的输出,仅仅输出commit hash 前7个字符串和commit message.
git log --oneline
2.回退操作
回退本地代码库:git reset --hard ID
推送到远程服务器:git push -f -u origin master(这种方式会导致之前的回退记录消失)
推荐使用:https://www.cnblogs.com/renmengkai/p/9881721.html
查看版本日志记录:git reflog
撤销管理
1、在工作区的代码
git checkout – a.txt # 丢弃某个文件,或者
git checkout – . # 丢弃全部
注意:git checkout – . 丢弃全部,也包括:新增的文件会被删除、删除的文件会恢复回来、修改的文件会回去。这几个前提都说的是,回到暂存区之前的样子。对之前保存在暂存区里的代码不会有任何影响。对commit提交到本地分支的代码就更没影响了。当然,如果你之前压根都没有暂存或commit,那就是回到你上次pull下来的样子了。
2、代码git add到缓存区,并未commit提交
git reset HEAD . 或者
git reset HEAD a.txt
这个命令仅改变暂存区,并不改变工作区,这意味着在无任何其他操作的情况下,工作区中的实际文件同该命令运行之前无任何变化
3、git commit到本地分支、但没有git push到远程
git log # 得到你需要回退一次提交的commit id
git reset --hard <commit_id> # 回到其中你想要的某个版本
或者
git reset --hard HEAD^ # 回到最新的一次提交
或者
git reset HEAD^ # 此时代码保留,回到 git add 之前
4、git push把修改提交到远程仓库
1)通过git reset是直接删除指定的commit
git log # 得到你需要回退一次提交的commit id
git reset --hard <commit_id>
git push origin HEAD --force # 强制提交一次,之前错误的提交就从远程仓库删除
2)通过git revert是用一次新的commit来回滚之前的commit
git log # 得到你需要回退一次提交的commit id
git revert <commit_id> # 撤销指定的版本,撤销也会作为一次提交进行保存
git revert commitID
git push origin master
二者区别:
revert是放弃指定提交的修改,但是会生成一次新的提交,需要填写提交注释,以前的历史记录都在;
reset是指将HEAD指针指到指定提交,历史记录中不会出现放弃的提交记录。
清空暂存区指令
第一种方式
git rm -r --cached 文件名
第二种方法
使用reset命令 回退到最近一次push后的状态并清空暂存区,但是工作区修改的内容也会被回退
git reset HEAD 文件名
git远程仓库
1.创建SSH Key
设置git的user name和email:
$ git config --global user.name “xxx”
$ git config --global user.email “xxx@gmail.com”
查看git配置:
$git config --lis
创建指令:
$ ssh-keygen -t rsa -C “邮箱”
最后得到了两个文件:id_rsa和id_rsa.pub
2.登录GitHub
github操作
3.创建远程仓库
github操作
4.关联远程仓库
git init
git remote add origin https://github.com/java-bigdata/maven-.git
5.推送文件到远程仓库
git push -u origin master(第一次push是需要输入密码的,以后不需要的)
6.克隆远程仓库
git clone git://git.kernel.org/pub/scm/git/git.git
也可以通过http 协议来访问:
git clone http://www.kernel.org/pub/scm/git/git.git
分支管理
分支之间是独立的,互不影响。
分支查看
git branch(本地)
git branch -a(查看所有分支 本地+远程服务端的分支)
分支的创建
git branch 分支名称
分支切换
git checkout 分支名
创建并切换分支
git checkout -b dev
分支删除
git branch -d 分支名称
分支合并
切换到master分支
git merge dev
bug分支管理
修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。
git stash list查看
bug处理完毕,回到之前的开发分支,进行代码恢复:
一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;另一种方式是用git stash pop,恢复的同时把stash内容也删了。
标签管理
通常,发布一个版本时,会在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。
创建标签
首先,切换到需要打标签的版本,然后输入 git tag 就可以打上一个标签。另外,可以用 git tag 查看所有标签:
还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:
展示标签
git show 标签名
删除标签
如果标签打错了,也可以删除,使用命令 git tag -d
推送标签至远程
如果要推送某个标签到远程,使用命令 git push origin :
一次性推送全部尚未推送到远程的本地标签(命令:git push origin --tags)
删除远程标签
如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除(命令:git tag -d v1.0.0),然后再从远程删除(命令:git push origin :refs/tags/)
小结
命令 git tag 用于新建一个标签
命令 git tag -a -m “this is memeo” 可以指定标签信息;
命令 git tag 可以查看所有标签。
命令 git log --pretty=oneline --abbrev-commit 找到历史提交的commit id
命令 git tag -d 删除标签
命令 git push origin :refs/tags/ 可以删除一个远程标签。