git常用的一些命令总结
- git init 创建一个版本库
- git add file 将文件从工作区提交到暂存区
- git commit -m “blabla……” 将文件中暂存区提交到仓库
- git status 查看仓库当前的状态
- git diff 可以查看具体修改了哪些内容
- git log 查看我们提交的历史记录
- git log –pretty=oneline #输出少量版本信息和提交的内容
- git reset –hard HEAD^ #返回上一个版本
- cat filename #查看文件内容
如何从现在回到过去呢??
- git reset –hard HEAD^ #返回到上一个版本
- git reset –hard HEAD~100 #返回往上100个版本
如何从过去回到现在呢??
方法:共两步
- 用git reflog
命令找到版本号
- 然后用命令git reset --hard versionNumber #versionNumber为版本号
问题:当我们要add很多文件,但是有那么一个不想add的,应该如何来完成呢??
例如我们想提交我们当前目录写的所有后缀为.java的文件,除了一个test.java这个文件不提交。
步骤如下:
- git add *.java #添加所有的后缀为.java的文件
- git reset HEAD test.java #把暂存区的test.java撤销到工作区
- git commit -m “add all .java file except test.java”
注意:Git跟踪并管理的是修改,而不是文件,理解这一点很重要
撤销修改
- 当什么时候我们想撤销修改呢??有如下情况
第一种:当你改乱了工作区某个文件的内容时,想直接丢弃工作区的修改时,用命令
git checkout - -filename 即可。
- 第二种:当你改乱了工作区某个文件的内容时,还提交到 了暂存区时,想丢弃修改,应怎么办呢??第一步为:git reset HEAD filename 将文件从暂存区撤销到工作区,第二步为:按第一种情况修改,即 git checkout - -filename
- 第三种:已经提交了不合适的修改到了版本库,想要撤销本次的提交,应该怎么办呢??利用版本回退即可解决问题。
删除文件
- rm filename #用此命令即可完成文件的删除
Git知道你删除了文件,git status命令会告诉你,现在你可能是2种意图之一,如下;
- 第一种:确实要从版本库中删除该文件,那就用命令 git rm 删除,并且 git commit提交即可。
- 第二种:就是删错了,因为版本库中还有,因此可以很轻松的将误删的文件恢复到最新的版本: git checkout - -filename #git checkout 其实是用版本库中的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”
远程仓库
大家都比较熟知Github,GitHub就是一个免费托管开源代码的远程仓库。
当我们有一个Github账号时,我们就可以利用Github来对我们的文件进行管理了。那应该如何将我们本地仓库的内容推送到远程仓库中去呢??
步骤如下:
- 第一步:git remote add origin [email protected]:xxxxxxx/remoterepositoryname.git #xxxxxxx为你的用户名,后面的为你的仓库名。这是与远程仓库建立连接。
- 第二步:git push -u origin master #若提示origin已存在,则用git remote rm origin删除。
以后用git push origin master 推送最新修改即可
从远程克隆
假设我们从零开发,最好的方式是先创建远程库,然后,从远程库克隆。
例如:我们在Github中新建了一个testgit远程库。则用如下命令完成克隆。
git clone [email protected]:xxxxxx/testgit.git
或者是:git clone https://github.com/xxxxxx/testgit.git#这种方式要输入账户名和密码,比较麻烦,但是有的情况下,我们通过第一种命令总是不能正确的进行clone,在这种情况下,可以选择此命令来完成clone。
创建与合并分支
master分支是主分支,我们一般不再这个分支上面工作,因此我们就需要创建分支,当我们在新分支上面完成我们的工作后,我们一般又要对分支进行合并,将我们的工作合并到主分支上面去。下面进行详细的介绍
- git checkout -b dev #创建dev分支,然后切换到dev分支上面去。这个命令等价于如下两条命令
git branch dev #创建dev分支
git checkout dev #切换到dev分支
- git branch #查看当前分支(结果中:当前分支前面会标有一个*号)
- git merge dev#合并dev分支,即把dev分支上面的工作成果合并到其它的分支上
- git branch -d dev #合并完成后,我们就可以删除dev分支了
注意:合并分支时,加上- -no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast-forward合并就看不出曾经做过合并。
用如下命令可以查看分支历史
git log -- graph --pretty=oneline --abbrev-commit
Bug分支
恢复bug时,我们会通过创建新的bug分支进行恢复,然后合并,最后删除。
但是,当我们的手头的工作没有完成时,先要把工作现场 git stash
一下,然后去修复bug,恢复后,用git stash pop
回到回到工作现场继续工作。
推送分支
要查看远程库的信息,用如下命令:git remote
,若用git remote -v
会显示更详细的信息。
推送分支,就是把该分支上的所有本地提交推送到远程库中,推送时,要提交本地分支,这样,Git就会把分支推送到远程库对应的远程库分支上。如下:
- git push origin master #推送到master分支上
- git push origin dev #推送到dev分支上
但是,在我们推送的过程中,我们会遇到推送失败的情况,这可能是因为远程分支比你的本地分支更新,需要先用git pull
试图合并,如果合并有冲突,则需要解决冲突,并在本地提交,直到没有冲突后再用 git push origin <branchname>
推送就能成功。
注意:如果使用git pull
命令时 提示no tracking information
,则说明本地分支和远程分支的链接关系没有创建,用如下命令即可
git branch - -set-upstream <branchname> origin/<branchname>
标签管理
打标签
- 首先,切换到需要打标签的分支上
- 然后,用
git tag <name>
就可以打一个新的标签了。也可以指定标签信息,如下git tag -a tagname -m "blabla..."
- git tag #查看所有标签。
- git show tagname #查看标签信息
操作标签
- 如果标签打错了,可以删除:
git tag -d tagname
- 如果要推送某个标签到远程:
git push origin tagname
,或者一次性推送所有标签到远程:git push origin -- tags
- 如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除(以标签wu为例):
git tag -d wu
;然后,从远程删除:git push origin :refs/tags/wu
配置别名
偷懒是每个人的天性,我也喜欢偷懒
如果我们敲git st
能够代替git status
时,我们都希望能够这么做,但是,应该怎么才能这么做呢?这就需要我们配置一下即可完成。
用如下命令:git config --global alias.st status
即可。其它的命令都可以这样来配置,这样方便我们更好的操作。
总结
这个是我学习廖雪峰老师git教程的一点总结,若觉得我的博客有不妥的地方,可以通过我删除。廖老师的git教程确实讲解的挺好的,也算是系统的学习了一下Git版本控制这个工具。在此,对老师表示感谢,这里奉上廖老师的git教程链接:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000,教程上讲解的更详细。
版权声明:本文为博主原创文章,未经博主允许不得转载。