git常用命令总结

最近学习了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(headhash) ----回退到指定的版本(可以使用$ git 

reflog查看head 信息)

10.撤销修改(丢弃工作区的修改)

$ git checkout -- my.txt

----命令git checkout -- my.txt意思就是,把my.txt文件在工作区的修改全部撤销,这里有两种情况:

一种是my.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是my.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次git commitgit 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分支的链接,根据提示,设置devorigin/dev的链接:

$ git branch --set-upstream <分支名称> origin/<分支名称>

26.创建标签

$ git tag <标签名字,如:v1.0> ----默认为HEAD,也可以指定一个commit id

$ git tag -a <标签名字-m "创建我的tag" ----创建带有说明的标签,用-a指定标签名,

-m指定说明文字:

$ git tag <标签名字> <HEADhash> -----在指定的commitHEAD上打标签,可

以通过$ 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
 
 33.移除git管制
    git rm --cached  文件名
  git rm -r --cached  文件夹名
 
3.4获得远程分支到本地
 
  git fetch  //可以将远程分支信息获取到本地
  git checkout -b 本地分子名字 origin/远程分支名字

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上

 

原文地址:https://www.cnblogs.com/mouseIT/p/5013129.html