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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值