Git基础操做及常见命令——详解

这是我看了一些大牛们讲解以后作了一下总结,其中讲解较为详细的是廖雪峰的Git讲解git

目录github

Git的简介app

Git的安装ssh

建立仓库分布式

编辑文件ide

修改文件学习

查看修改记录this

撤销修改命令行

删除文件3d

链接GitHub

分支操做

建立标签


Git的简介

Git是什么,Git是一个分布式版本控制系统,Git的创始人同Linux的创始人也是Linus,之因此创Git就是为Linux的开源作一个平台,可让全球的人共同打造Linux系统,Linus只用了10天左右的时间就把Git给搭建出来了,真是太牛了。在这以后又有了GitHub,这是一个Git的托管平台,为Git量身定作的,在2008年正式上线,在2018年Github被微软以75亿美圆收购,看到GitHub这么贵,可想而知Git的地位

Git的安装

首先去官网下载一个Git,一路next便可,惟一须要注意的就是下图须要建立一个桌面快捷方式,若是只想要一个命令行版的,不要界面版的,能够把这个Git GUI Here取消勾选

安装完以后运行Git,而且进行用户名和邮箱的设置

git config --global user.name "用户名"

git config --global user.email "你的邮箱"

建立完这些以后,能够进行Git命令的学习了

建立仓库

mkdir mygit 这是建立一个名为mygit的目录

cd mygit 这是移动到该目录下

pwd 这是显示你当前位置的路径

git init 这是把该目录变成Git能够管理的仓库

ls -a 这是显示当前目录下的全部子目录(包含隐藏的目录,其中.git目录就是隐藏的,也是刚刚建立仓库的时候建立的)

在Git中分为工做区和版本库,工做区就是咱们本身建立的文件进行编辑的区域,而版本库就是.git目录,里面分为暂存区和一个默认分支master

编辑文件

vi readme.txt 起一个名字为readme的txt文件,在vi中进行编辑

git add readme.txt 这是将readme.txt文件加到暂存区

git commit -m "wrote a readme" 这是将暂存区的文件提交到当前分支,默认有一个master分支,同时注释上add readme.txt

修改文件

git status 该命令能够时刻查看仓库的状态

git diff 该命令能够查看当前状态与修改前有什么不一样

git add readme.txt 若是你想对该文件进行修改,那么就须要将修改后的信息提交到暂存区

git commit -m "update readme" 一样若是修改,也须要将修改的东西提交到当前分支,并注释

查看修改记录

git log 该命令会显示历史修改的详细信息

git log --pretty=oneline 该命令显示较为明了的历史修改信息

git log --graph --pretty=oneline --abbrev-commit 查看分支合并状况

git  reset --hard HEAD^  该命令会回到上一次修改前的版本

git  reset --hard HEAD^ ^ 该命令会回到上两次修改前的版本,以此类推

git  reset --hard HEAD~100 该命令会回到上一百次修改前的版本

git reset --hard HEAD 458sa 该命令会返回版本号以458sa开头的版本

git reflog 该命令是用来查看你的历史命令

cat readme.txt 显示该文件的内容

撤销修改

git checkout -- readme.txt 在工做区修改失败进行撤销

git reset HEAD readme.txt 若是添加到了暂存区发现不对了,这是回到修改区

若是是提交到了版本库想要撤销,能够经过历史记录进行回退

删除文件

rm readme.txt 这是删除工做区的文件

git checkout readme.txt 这是恢复工做区的文件,前提是版本库中未删除

git rm readme.txt 这是删除版本库的文件,此过程就不可恢复了

链接GitHub

首先看看用户主目录下有没有.ssh目录,若是有,再看看该目录下有没有id_rsa和id_rsa.pub文件,若是也有那万事大吉,若是没有则须要在Git Bash下建立SSH key

ssh-keygen -t rsa -C "你的邮箱" 这就是建立一个SSH key(一路回车便可)

而后你就能够登陆GitHub了,在那里建立一个仓库,而后把.ssh里的id_rsa.pub里的密钥粘过来

下面会用到你的GitHub名,在GitHub中有两个名字,一直用到的是下图的名字

当你添加好SSH key以后,就能够建立一个GitHub仓库了,建立完GitHub仓库后就能够用Git跟GitHub进行远程关联了

git remote add origin git@github.com:uphe/仓库名.git 这就可让你的Git进行远程关联了,远程库的名字是origin(默认),若是你在建立仓库的时候勾选了README.md文件,在执行此命令以前需执行git pull origin master

git push -u origin master 这是把master(默认主分支)分支的全部内容推送到远程库中,-u是与远程master进行关联

git push origin master 这个是之后往GitHub上图送内容的命令,只需第一次加上-u进行关联,后续就再也不须要

git clone git@github.com:你的GitHub名/仓库名.git 这样能够把你GitHub上的仓库克隆到本地了

git remote remove origin 这是与远程断开链接 

分支操做

上面已经提到了Git的默认主分支master分支,其实在这里还有一个HEAD指针,该指针指向当前分支,固然了默认也是master分支,至于咱们是如何提交的,由于提交的是分支那就是默认master了,master是指向最新提交的。若是新建立一个dev分支,把HEAD指向dev分支,而且在dev分支上进行了提交,那么master是不动的,可是dev分支上的工做已经完成了,那就须要分支的合并了,此时合并的方式是master分支直接指向dev分支便可,此时HEAD指针又会指向master分支了,固然了此时的dev分支也就没啥用了,删了都没事

git  checkout -b dev 这句话意思是建立dev分支,而且把HEAD指针指向dev分支(等价于下面这两句话)

git branch dev 建立dev分支

git checkout dev 把HEAD指针指向dev分支

git branch 查看全部分支,*表示当前所在分支

git add readme.txt 若是你在dev分支上对readme文件进行了修改,这句话是把修改添加到暂存区

git commit -m "add branch" 这是把暂存区的内容提交到dev分支

git checkout master 当你在其余分支的工做完成了,这是回到主分支,也就是HEAD指针指向master分支

git merge dev 这是将刚刚的dev分支的修改进行与master进行合并,若是可能Git会用Fast forward模式

git merge dev --no-ff -m "merge no-ff" 在Fast forward模式下,删除分支后会丢掉分支信息,用no-ff来禁用Fast forward模式

git branch -d dev 合并完以后,就能够放心的删除dev分支了

git branch -D feature 假设你如今在添加一个新功能,并在feature上进行,但即将合并时想要删除该功能,用-D强制删除

git log --graph --pretty=oneline --abbrev-commit 这是查看当前分支的合并信息

git stash 若是你在dev分支上进行修改,可是须要去master分支修复一个bug,此时git stash就能够帮你存储当前工做现场

git checkout dev 当你完成bug修复后,直接回到该分支又能继续工做了,可是当你回来以后你发现工做区是干净的

git stash list 该命令能够查看你储存的工做现场,由于以前你保存过工做现场,故工做现场还在

git stash apply 该命令能够恢复现场,可是以前保留的stash内容并不删除

git stash drop 该命令就是用来删除stash的内容,也就是恢复一下现场须要两步,有点麻烦了

git stash pop 该命令是恢复现场的同时把以前保留的stash也删除,删除以后再用git stash list查看就没有任何stash内容了

git remote 能够进行查看远程库的信息,远程库的名称默认是origin

git remote -v 是查看远程库的详细信息

git push origin master 这是把该分支的全部本地信息推送到远程库,若是推送其余分支只需把master改了就行,对于咱们工做者来讲,通常推送的信息都是master分支即主分支和dev分支即开发分支

git clone git@github.com:你的GitHub名/仓库名.git 该方法进行克隆时,只是把master分支克隆到了本地而没有dev分支

git checkout -b dev origin/dev 这是建立远程origin的dev分支到本地

git push origin dev 把在dev分支上的修改推送到远程

git pull 若是在你推送以前有其余人已经推送了,git pull把最新提交从origin/dev中抓下来,而后在本地进行合并后再推送

git branch --set-upstream-to=origin/dev dev 这是分支连接,若是git pull失败,说明本地dev没有与远程origin/dev分支连接

git rebase 该操做是把本地未push的分叉提交历史整理成直线,说白了就是看着更加清晰好看

建立标签

建立标签很简单,想在那个分支建立标签,就切换到哪一个标签便可

git checkout master 咱们先切换到master分支

git tag v1.0 这样咱们就在master上建立了一个标签,这是默认标签,便是在最新提交的commit上

git tag 查看全部标签

git log --pretty=oneline --abbrev-commit 这是显示历史提交记录

git tag v0.9 458sd 假设历史记录中有一个commit id为458sd。该命令能够给历史提交添加标签

git show v0.9 能够查看该标签的信息,是否是比用那个commit id要方便些

git -a v0.8 -m "this is v0.8" 568hg 这个是带参数的添加标签 -a是标签名,-m是标签描述

git tag -d v0.8 这是删除标签,由于建立的标签只是在本地,不会自动推送到远程,因此能够删除

git push origin v1.0 这是把该标签推送到远程

git push origin --tags 这是一次性推送全部的标签(推送过想要删除远程标签就有点麻烦了,须要两步)

git tag -d v0.9 首先这是在本地删除标签

git push origin :refs/tags/v0.9 这是从远程删除,想要看看是否删除了,能够从远程看看

到此,Git的基础操做也就讲完了,有什么不懂或者执行不对的地方还请多多提出,但愿您能有所收获

相关文章
相关标签/搜索