Git常用命令
git –version
查看系统是否安装git,查看git的版本信息git init
在当前文件夹下初始化一个仓库,此时文件里会到一个.git的隐藏文件夹ls -ah/ls -al
可以查看目录,包括隐藏的.git文件夹git add xxx.xxx
将文件添加到暂存区里git add -A
全部添加到暂存区里git commit
将文件提交到版本库里git commit -m “wrote a readme file”
引号中是对提交版本的说明git status
查看仓库当前的状态git diff xxx.xxx
查看xxx文件具体被修改的内容git log
查看版本从近到远的提交日志,可以得到cimmit id
觉得信息太多,可以加上--pretty==oneline
在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
git reset –hard HEAD^
将版本回退到上一个版本cat xxx.xxx
查看文件内容若想回到新的版本,那么就可以用
git reflog
来获取之前的命令,并且得到对应的commit idgit checkout – xxx.xxx
丢弃工作区的修改git reset HEAD xxx.xxx
撤销暂存区的修改rm xxx.xxx
文件管理中删除xxx文件若要在git中删除文件,则需要
git rm xxx.xxx
然后git commit
,这样文件就从版本库中删除了
远程仓库
第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:
ssh-keygen -t rsa -C "email@example.com"
如果一切顺利的话,可以在用户主目录里找到.ssh
目录,里面有id_rsa
和id_rsa.pub
两个文件,这两个就是SSH Key的秘钥对,id_rsa
是私钥,不能泄露出去,id_rsa.pub
是公钥,可以放心地告诉任何人。
然后在代码管理平台的仓库里,可以添加公钥
添加远程库
首先在仓库管理平台创建一个库,
然后在本地的git仓库执行以下语句(以我的GitHub为例)
git remote add origin git@github.com:PermanentKing/Web.git
添加后,远程库的名字就是origin
,这是Git默认的叫法,也可以改成别的,但是origin
这个名字一看就知道是远程库。
- git push
将本地库的内容推送到远程库里,第一次推送时,可以加上-u
参数
克隆远程库
以我的GitHub为例
git clone git@github.com:PermanentKing/Web.git
这样就将远程库克隆到本地了
除此之外,Git支持多种协议,默认的git://
使用ssh,但也可以使用https
等其他协议。
分支管理
- git checkout -b dev
创建dev
分支,并切换到dev
分支,-b
表示创建并切换
相当于如下两条:
- git branch dev
创建分支 - git checkout dev
切换分支
同时 git branch
可查看所有分支,当前分支前会有*
符号
git merge
将指定分支合并到当前分支,例如切换到master
分支后,通过git merge dev
将dev分支和master分支合并git branch -d xxx
删除xxx分支git branch -D xxx
强行删除未合并的分支xxx,一般为feature分支
分支冲突
合并时会报出冲突,需要手动解决。此时可以通过git status
来获取冲突信息,最后解决之后,可以用git log
来看到分支的合并情况
分支处理
git stash
可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作,通过git stash list
查看git stash apply
恢复储藏内容git stash drop
删除储藏内容git stash pop
恢复并同时删除储藏内容
多人协作
- git remote
查看远程库的信息,加上-v
可以显示详细内容
除此之外,本地新建的分支如果不推送到远程,对其他人就是不可见的
git pull
抓取远程库的新提交,如果有冲突,要先处理冲突git push origin branch-name
从本地推送分支,如果推送失败,先用git pull
抓取远程的新提交git checkout -b branch-name origin/branch-name
在本地创建和远程分支对应的分支,本地和远程分支的名称最好一致git branch –set-upstream branch-name origin/branch-name
建立本地分支和远程分支的关联
Rebase变基
- git rebase
rebase操作可以把本地未push的分叉提交历史整理成直线,目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比
标签
git tag tag-name
用于新建一个标签,默认为HEAD
,也可以指定一个commit idgit tag
查看所有标签git push origin tag-name
可以推送一个本地标签;git push origin –tags
可以推送全部未推送过的本地标签git tag -d tag-name
可以删除一个本地标签git push origin :refs/tags/tag-name
可以删除一个远程标签