初始Git常用相关命令
安装完成后,还需要最后一步设置,在命令行输入:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
-
创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录
$ mkdir learngit
$ cd learngit
$ pwd
//pwd命令用于显示当前目录 git init //把这个目录变成Git可以管理的仓库(当前目录下多了一个.git的目录,默认是隐藏)
假设我们现在有一个readme.txt(一定要放在git仓库目录下learngit)文件并有相应的内容
- git add 用命令 告诉Git,把文件添加到仓库 eg:git add readme.txt
- git commit用命令告诉Git,把文件提交到仓库:eg:git commit -m "wrote a readme file"(-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。)
- git status命令看看结果
- git diff这个命令看看修改的结果 eg:git diff readme.txt
- git log命令查看修改的历史纪录,如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline 参数。eg:git log --pretty=oneline,在这里你看到的一大串类似3628164...882e1e0的是commit id(版本号)
- git reset命令回退版本,上一个版本就是HEAD,上上一个版本就是HEAD,当然往上100个版本写100个。eg:git reset --hard HEAD^
- $ git reset --hard 3628164指定回到未来的某个版本3628164这个是不全的commit ID。会自己帮我们找
- git reflog用来记录你的每一次命令
- git checkout -- file可以丢弃工作区的修改(工作区指还未add前,add之后,commit之前叫暂存区)。eg:git checkout -- readme.txt
. 一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
- 撤销修改git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区:eg:git reset HEAD readme.txt
- 删除文件 rm test.txt
这个时候,Git知道你删除了文件,因此,工作区和版本库就不一致了,git status命令会立刻告诉你哪些文件被删除了:(git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”)
- 现在你有两个选择,一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit.eg:git rm test.txt 然后 git commit -m "remove test.txt"文件就从版本库中被删除了
- 另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本git checkout -- test.txt
- 创建SSH
Keyssh-keygen -t rsa -C "youremail@example.com"
然后一路回车,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥, - 在GitHub上新建这个learngit仓库。
git remote add origin git@github.com:HappyXiaoTian/learngit.git
添加后,远程库的名字就是origin -
git push
命令,把本地库的内容推送到远程,实际上是把当前分支master推送到远程.eg:git push -u origin master
-
git push origin master
只要本地作了提交,就可以通过以上命令 -
从远程库克隆登陆GitHub,创建一个新的仓库,名字叫gitskills。
git clone
克隆一个本地库eg:git clone git@github.com:HappyXiaoTian/gitskills.git
分支
-
git checkout -b dev
我们创建dev分支,然后切换到dev分支。相当于如下两行命令:$ git branch dev
$ git checkout dev
-
git branch
命令查看当前分支 -
git merge
命令用于合并指定分支到当前分支eg:git merge dev
(假设当前分支是master,就是将dev分支合并到master分支) -
git branch -d dev
删除dev分支 -
git merge --no-ff -m "merge with no-ff" dev
准备合并dev分支,请注意--no-ff参数,表示禁用Fast forward -
git stash
把当前工作现场“储藏”起来,等以后恢复现场后继续工作 -
git stash list
命令看看刚才的工作现场存到哪去了 - Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法:
一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
另一种方式是用git stash pop,恢复的同时把stash内容也删了:
- g
it branch -d feature-vulcan
feature-vulcan分支还是必须就地销毁git branch -D feature-vulcan
强行删除 -
git push origin master
推送master分支
标签
-
git tag <name>
就可以打一个新标签eg:git tag v1.0 -
git tag
查看所有标签 -
git log --pretty=oneline --abbrev-commit
找到历史提交的commit id -
git tag v0.9 6224937
对指定commit id是6224937打上标签 -
git tag -a v0.1 -m "version 0.1 released" 3628164
创建带有说明的标签,用-a指定标签名,-m指定说明文字 -
git show <tagname>
可以看到说明文字eg:git show v0.1
-
git tag -s v0.2 -m "signed version 0.2 released" fec145a
签名采用PGP签名,因此,必须首先安装gpg(GnuPG),如果没有找到gpg,或者没有gpg密钥对,就会报错 -
git tag -d v0.1
标签打错了,删除 -
git push origin <tagname>
推送某个标签到远程eg:git push origin v1.0
。git push origin --tags
一次性推送全部尚未推送到远程的本地标签 -
git push origin :refs/tags/<tagname>
可以删除一个远程标签(先删除本地的:git tag -d v0.9
) eg:git push origin :refs/tags/v0.9