最近学习了git的使用,现在讲git一些常用命令。
1.git的安装
设置账号和密码
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
如果某个特别的git控件要使用不同的账号,则设置的时候不加--global
2.设置别名
$ git config --global alias.st status
----设置status命令的别名为status,可以再 .git/config文件中查看
3.创建版本库
进入要创建版本库的目录,$ git init
4.添加文件
$ git add readme.txt
git -f add 文件名 可以将设置为忽略的文件添加到版本库
5.提交文件
$ git commit -m "提交的注释"
6.查看当前的状态(工作空间的状态与版本库的对比)
$ git status
7.文件对比
$ git diff my.txt ----工作区与版本库add操作后的对比
$ git diff HEAD -- my.txt ----工作区与版本库commit操作后的对比
8.查看提交日志
$ git log ----显示完整的信息
$ git log --pretty=oneline ----查案简化的信息
9.版本回退
$ git reset --hard HEAD^ ----回退到最近最后一个提交的版本
$ git reset --hard 3628164(head的hash值) ----回退到指定的版本(可以使用$ git
reflog查看head 信息)
10.撤销修改(丢弃工作区的修改)
$ git checkout -- my.txt
----命令git checkout -- my.txt意思就是,把my.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是my.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是my.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
11.删除文件
$ rm my.txt ----删除本地文件
$ git rm my.txt再$ git commit -m "remove test.txt" ----删除版本库的文件
若本地误删除文件,可以使用$ git checkout -- my.txt复制出版本库中的文件
12.生成ssh key
$ ssh-keygen -t rsa -C "youremail@example.com"
生成完成后用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人
13.添加远程版本库
$ git remote add origin git@github.com:xxx/xxx.git ----关联远程库
$ git push -u origin master ----第一次提交
$ git push origin master ----以后的提交
14.创建分支
$ git checkout -b <你要使用的分支名称>
这里相当于连个命令:
$ git branch <你要使用的分支名称>
$ git checkout <你要使用的分支名称>
15.查看分支
$ git branch
$ git branch -a 查看远程分支(如果没有需要pull一下)
16.切换分支
$ git checkout <你要使用的分支名称>
17.合并分支
$ git merge <你要合并的分支名称>
$ git merge --no-ff -m "提交信息" <你要合并的分支名称>
----合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
18.删除分支
$ git branch -d <你要删除的分支名称>
19.查看提交的分支图
$ git log --graph
$ git log --graph --pretty=oneline --abbrev-commit ----查看简化的图
20.将工作区的现场保存
$ git stash ----将工作区现场存起来
$ git stash list ----查看保存的现场
$ git stash pop ----恢复保存的现场
也可以使用git stash apply恢复,但是恢复后,stash内容并不删除,需要用git stash drop来删除;
21.克隆远程版本库
$ git clone git@github.com:xxx/xxx.git
22.远程仓库信息查看
$ git remote
$ git remote -v ----查看更详细的信息
23.推送信息到远程仓库
$ git push origin <你要使用的分支名称>
24.创建远程的分支
分子创建一般都是本地使用,若要使远程也能使用该分支
$ git checkout -b <分支名称> origin/<分支名称>
$ git push origin <分支名称>
25.获得远程数据
$ git pull
如果git pull也失败了,原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接:
$ git branch --set-upstream <分支名称> origin/<分支名称>
26.创建标签
$ git tag <标签名字,如:v1.0> ----默认为HEAD,也可以指定一个commit id
$ git tag -a <标签名字> -m "创建我的tag" ----创建带有说明的标签,用-a指定标签名,
-m指定说明文字:
$ git tag <标签名字> <HEAD的hash值> -----在指定的commit的HEAD上打标签,可
以通过$ git log --pretty=oneline --abbrev-commit查看HEAD
27.查看已创建的标签
$ git tag
28.查看具体标签的信息
$ git show <标签名字>
29.删除标签
$ git tag -d <标签名字>
30.删除远程的tag
$ git tag -d <标签名字> ----先本地删除,在push
$ git push origin :refs/tags/<标签名字>
31.推送标签
$ git push origin <标签名字> ----推送指定tag
$ git push origin --tags ----一次推行全部的tag
32.删除为监控的文件
# 删除 untracked files
git clean -f
# 连 untracked 的目录也一起删掉
git clean -fd
# 连 gitignore 的untrack 文件/目录也一起删掉 (慎用,一般这个是用来删掉编译出来的 .o之类的文件用的)
git clean -xfd
# 在用上述 git clean 前,墙裂建议加上 -n 参数来先看看会删掉哪些文件,防止重要文件被误删
git clean -nxfd
git clean -nf
git clean -nfd
101.其他
101.1 git如何忽略不提交的文件
在Git工作区的根目录下创建一个特殊的.gitignore文件,设置格式
# 忽略*.o和*.a文件
*.[oa]
# 忽略*.b和*.B文件,my.b除外
*.[bB]
!my.b
# 忽略dbg文件和dbg目录
dbg
# 只忽略dbg目录,不忽略dbg文件
dbg/
# 只忽略dbg文件,不忽略dbg目录
dbg
!dbg/
# 只忽略当前目录下的dbg文件和目录,子目录的dbg不在忽略范围内
/dbg
101.2 git查看文件目录
git ls-files
32.3 将本地文件推送到远程仓库的流程
1)初始化本地仓库 git init
2) 添加和提交本地文件 git add XXX ,git commit -m '第一次提交' (git add 文件夹名 可以添加一个文件夹中所有的内容)
3)关联远程库$ git remote add origin git@github.com:xxx/xxx.git
4)推送分支 $ git push -u origin master (必须要有commit的文件,否则报错src refspec master does not match any)
102.将本地文件推送到远程git仓库的流程
1.git init 初始化本地git
2.git add 添加需要git管理的文件(git add 文件夹可以添加整个文件夹的文件。git 文件1 文件2 文件3 可以同时add多个文件或文件夹 )
3.git commit -m 'message' 提交add的文件
4.git remote add origin git@github.com:xxx/xxx.git ----关联远程库
5.git pull origin master 先pull,远程git仓库的一些文件可能和本地的不一样吗,需要pull
6.git push -u origin master ----第一次提交
103.获取远程文件到本地
1.git init
2.git remote add origin https://xxxxx.git
3.git pull origin master
104.修改远程仓库
git remote -v 查看远程仓库
git remote rm 仓库名 删除远程仓库
git remote add origin git@xxx/xxx.git 添加新的远程仓库
105 git clone只能clone远程库的master分支,无法clone所有分支,解决办法
1. git clone xxxxxx.git 2. cd project 3. git branch -a,列出所有分支名称如下: 4. git checkout -b myNanme origin/remoteName,作用是checkout远程的remoteName分支,在本地起名为myNanme分支,并切换到本地的myNanme分支 5.git tag 查看所有的标签 6.git checkout -b myTag remoteTag 切换到远程的remoteTag上