最近突然对git起了兴趣,于是特地跑到廖雪峰的官方网站里学习了一下,罗列出了几条git的常用命令。
Git:
分布式版本控制系统,除此之外还有SVN与CVS集中式版本控制系统
安装:
Linux下使用sudo apt-get install git来安装,macOS下使用自行百度,Windows下官网下载安装包,直接安装即可
git config --global user.name "Your Name"
:设置用户名,与GitHub用户名相同
git config --global user.email "email@example.com"
:设置邮箱账号,与注册GitHub时的邮箱账号相同
mkdir dirname
:新建文件夹
rmdir dirname
:删除文件夹
ls
:罗列出当前文件夹下的所有内容
rm test.txt
:删除文件
git diff
:查看文档内容修改的地方
git status
:当前的工作区状态,是否有已修改但未提交的文档
Git有工作区和版本库的概念,
Git工作区是指计算机中的文件夹
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
git add document/name.txt
:添加文档进入库
git commit –m “xxx”
:本次修改的说明
我们把文件往Git版本库里添加的时候,是分两步执行的:
第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
画图表示如下:
git log
: 显示从最近到最远的提交日志,历史版本记录
可以加上参数—pretty=oneline每条历史只出现一条信息使显示更清晰
git reset –hard HEAD^
:回退到上一个版本,也可以用git reset HEAD~1
,也可回退到指定版本,使用git reset –hard commitid
注意不用加HEAD。git reset既可以回退版本,也可以把暂存区的修改回退到工作区。
cat document/name.txt
:查看文档内容
git reflog
:查看历史命令,可以帮助找一些历史记录
注:为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件。
git add只会提交当前状态的文档,在提交过后进行的文档操作不会被记录。除非进行二次提交。
git diff HEAD – documents/name.txt
:用来比对版本库与工作区文档的不同
git checkout -- name.txt
:意思就是,把name.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;另一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。总之,就是让这个文件回到最近一次git commit或git add时的状态。git checkout – file命令中的–很重要,没有–,就变成了“切换到另一个分支”的命令
当你在工作区将某个文件删除之后,再使用git status 查看当前的状态,会被提示有某个文件被删除,此时你有两个选择,恢复该文件至工作区或者在版本库中也删除该文件。
git rm document/test.txt
:在版本库删除文件之后一定要git commitgit check – document/test.txt
git remote add origin git@github.com:4F4C/learngit.git
:绑定远程
git remote rm origin
:删除远程连接
git push -u origin master
:将本地库的内容推送到远程,实际上是把当前分支master推送到远程。我们第一次推送master分支时,由于远程库是空的,所以加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
在与远程连接之后,每次修改文档之后,可以通过git push origin master命令来将本地master分支的最新修改推送至GitHub。
git branch dev
:新建一个名为dev的指针
git checkout dev
:切换到名为dev的指针
或者直接执行git checkout –b dev 表示创建并切换到dev分支。
git branch
:查看当前分支
git merge dev
:将当前分支与dev分支合并
git branch –d dev
:删除名为dev的分支
如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>
强行删除。
git log –graph
:查看分支合并图
git stash
:将当前工作状态储存
git remote -v
:查看远程库的信息
git tag tagname
:给当前分支添加标签名,也可以指定一个commitid
git tag
:查看所有标签
git show tagname
:查看标签信息
git push origin tagname
:将标签推送到远程
git push origin –tags
:推送所有未推送的标签到远程
git tag –d tagname
:删除标签,标签在本地存储,不会推送到远程
git push origin :refs/tags/tagname
:在远程删除标签
git config --global alias.co checkout
:为checkout设置别名co
git config --global alias.unstage 'reset HEAD'
:也可以给某个语句起个别名