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

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

目录

Git的简介

Git的安装

创建仓库

编辑文件

修改文件

查看修改记录

撤销修改

删除文件

连接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的基础操作也就讲完了,有什么不懂或者执行不对的地方还请多多提出,希望您能有所收获

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贺志营

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值