GIT的使用总结
文章目录
- 前言
- GIT的使用
- GIT在linux系统的安装
- 设置姓名与邮箱
- 查看配置信息
- 创建本地仓库
- 创建文件
- 提交到暂存区
- 提交到仓库
- 查看状态
- 查看不同
- 查看LOG
- 版本回退
- 撤销修改
- 删除文件
- 错删文件的恢复
- 文件重命名
- 创建SSH Key
- GitHub添加公钥
- Gitee添加公钥
- GitHub关联本地仓库
- Gitee关联本地仓库
- 本地仓库推送到远端
- 克隆远端仓库到本地
- 本地仓库克隆到本地
- 拉取远端仓库的信息
- 拉取远端的非master分支
- 查看远程仓库的信息
- 删除与远端的关联
- 创建新的分支
- 查看所有分支
- 切换到指定分支
- 合并分支
- 删除指定分支
- 保护现场
- 查看保护现场
- 恢复现场
- 复制提交
- 删除分支
- 变鸡操作
- 打标签
- 查看标签
- 删除标签
- 推送标签
- Git自定义选项
- 忽略特殊文件
- 查看忽略规则
- 配置别名
- 删除别名
前言
本文章对GIT的学习做一个简单的总结,方便查阅,毕竟那么多条指令不可能全部记下来,以后会持续更新
GIT的教程可以参考廖雪峰老师官方网站,确实写的很通俗易懂,也可以参考菜鸟教程
如果我的理解不对,欢迎评论交流
GIT的使用
GIT在linux系统的安装
$ sudo apt-get install git
设置姓名与邮箱
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
–global:表示你这台机器上所有的Git仓库都会使用这个配置
查看配置信息
$ git config --list
创建本地仓库
$ mkdir glx
$ cd glx
$ git init
以上是创建一个新的目录作为仓库,也可以使用指定目录创建仓库
$ git init newrepo
找个合适的位置新建英文目录
创建文件
$ touch readme.txt
$ vi readme.txt
提交到暂存区
$ git add readme.txt
编辑完成后,保存,提交到暂存区
提交到仓库
$ git commit readme.tx -m "first version" 或
$ git commit -m "first version"
可以提交单个文件,也可以一次性全部提交,所谓的提交是将暂存区的文件提交
-m 可以添加提交的版本注释信息
查看状态
$ git status
此命令要多用,显示工作区、暂存区和仓库的状态
查看不同
$ git diff
查看工作区与暂存区的不同
$ git diff --cached
$ git diff --staged
查看暂存区与仓库的不同
$ git diff HEAD
查看工作区、暂存区与仓库的不同
$ git diff <分支名1> <分支名2>
比较两个分支最后一次提交的不同
查看LOG
$ git log
显示所有提交过的版本信息,不包括已经被删除的 commit 记录和 reset 的操作
$ git log --oneline
$ git log --pretty=oneline
每个提交都用单行显示
$ git reflog
显示所有的操作记录,包括提交,回退的操作
$ git log --graph
查看分支合并图
版本回退
$ git reset --hard 版本号
版本号可以用log或者reflog查到的版本号,也可以在HEAD的基础上往前
HEAD:当前版本
HEAD^:前一个版本
HEAD^^:前两个版本
HEAD~100:前100个版本
撤销修改
$ git checkout -- filename
工作区编辑出错了,可以丢弃工作区的修改
如果还没添加到暂存区,则执行后和仓库相同
如果已经添加到暂存区,则将暂存区的内容恢复到本地
– :如果不添加此参数,将会切换到另外一个分支
$ git reset HEAD filename
如果提交到暂存区的内容有问题,可以将其撤销掉,工作区不受影响
删除文件
$ git rm filename
删除后,同样需要commit提交
如果利用linux命令rm了文件,同样需要再用git rm一次
$ git rm --cached filename
删除暂存区的文件,工作区不受影响
错删文件的恢复
$ git checkout -- filename
如果删错了文件,可以从仓库中恢复
文件重命名
$ git mv filename newname
重命名后,需要commit提交到仓库才有效
创建SSH Key
$ ssh-keygen -t rsa -C "youremail@example.com"
查看本地家目录有没有.ssh或者id_rsa和id_rsa.pub
如果没有的话,可以用以上指令新建一个ssh密钥
id_rsa是私钥,id_rsa.pub是公钥
GitHub添加公钥
在github的设置中,添加本地的公钥
Gitee添加公钥
GitHub关联本地仓库
如果先创建了本地仓库,那么需要在github创建一个new repository,起个名字,其余设置默认,如图所示创建出了一个空仓库
$ git remote add github git@github.com:RainsDog/glx.git
将本地仓库关联到github的对应仓库
Gitee关联本地仓库
git remote add gitee git@gitee.com:RainsDog/glx.git
本地仓库推送到远端
$ git push github master
推送本地的master分支到github,推送成功后,可以在github查看到已经有了master分支和本地推送的文件
此命令还可以加-u参数,在推送时设定默认远端仓库的位置,如果只用github或者只用gitee一个远端仓库,可以加这个参数,下一次推送可以直接用git push,拉取直接用git pull即可
克隆远端仓库到本地
$ git clone git@github.com:RainsDog/glx.git
此命令会在本地创建一个叫glx的目录,并将远端的文件拉取过来
推荐使用ssh协议进行克隆
$ git clone git@github.com:RainsDog/glx.git ggg
将远端仓库克隆到本地的ggg目录
本地仓库克隆到本地
$ git clone glx ggg
将本地仓库克隆到本地的ggg目录
拉取远端仓库的信息
$ git pull github master
拉取远端的master分支到本地,也可以用以下命令
$ git fetch github master
$ git merge github master
git pull = git fetch + git merge
拉取远端的非master分支
$ git checkout -b dev github/dev
在拉去master分支后,可以继续拉去dev分支
查看远程仓库的信息
$ git remote
$ git remote -v
带参数-v可以查看更详细的信息
删除与远端的关联
$ git remote rm origin
可以先用git remote查看有那些关联,然后进行删除
创建新的分支
$ git checkout -b dev
创建新的分支,并切换过去
$ git switch -c dev
switch是新版本增加的写法
查看所有分支
$ git branch
切换到指定分支
$ git checkout master
$ git switch master
switch是新版本增加的写法
合并分支
$ git merge dev
合并dev分支到当前分支
$ git merge --no-ff -m "merge with no-ff" dev
合并的时候,强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息
删除指定分支
$ git branch -d dev
保护现场
$ git stash
切换到其它分支前,将正在工作,且未提交的分支保存起来
查看保护现场
$ git stash list
恢复现场
方式1-先恢复,后删除
$ git stash apply
$ git stash drop
方式2-恢复的同时删除
$ git stash pop
方式3-恢复到指定现场
$ git stash apply stash@{现场序号}
复制提交
$ git cherry-pick 版本号
复制一个特定的提交到当前分支
删除分支
普通删除
$ git branch -d 分支名
强行删除
$ git branch -D 分支名
变鸡操作
$ git rebase
rebase操作可以把本地未push的分叉提交历史整理成直线;
rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比
打标签
$ git tag V1.0
$ git tag V1.0 版本号
$ git tag -a V0.1 -m "version 0.1 released" 版本号
可以给指定的版本打标签
打标签时,可以用-a指定标签名,用-m增加说明信息
查看标签
$ git tag
$ git show V1.0
如果知道标签的名字,可以用show查看具体信息
删除标签
$ git tag -d V0.1
$ git push github:refs/tags/V0.1
删除本地标签,第一条就可以,如果要同时删除远端的标签,则需要两条都执行
推送标签
$ git push github 标签名
$ git push github --tags
–tags可以一次性推送全部标签
Git自定义选项
$ git config --global color.ui true
Git会适当地显示不同的颜色
忽略特殊文件
在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件,并且把.gitignore也提交到Git
查看忽略规则
git check-ignore -v App.class
查看app.class这个文件是否被忽略
配置别名
$ git config --global alias.st status
$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch
$ git config --global alias.unstage 'reset HEAD'
$ git config --global alias.last 'log -1'
st表示status,co表示checkout,ci表示commit,br表示branch,还可以用字符串进行替换
删除别名
如果是用global设置的,在家目录的.gitconfig文件中,否则在仓库的.git/config文件中
例如:
[alias]
last = log -1
更多推荐
所有评论(0)