git常用命令及解析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/evil_119/article/details/83417851

本文是基于原教程地址学习后的一个笔记记录,感谢原作者的无私分享!github遵守开源协议,fork后的仓库代码可以读写,甚至可以pull request给官方仓库来贡献代码。 

1.git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

git config --global user.name "Your Name"

git config --global user.email "[email protected]"

 2.初始化一个Git仓库,

git init

3.添加文件,并提交,与svn不一样每次修改都要add,

git add <file>

git commit -m <message>

#下面一行相当于上面两行
git commit -a -m <message>

4.查看文件状态

git status

5.比较文件不同

git diff

6.查看提交日志

git log

7.版本重置/及跳转

git reset --hard commit_id

8.查看历史命令

git reflog

9.用版本库文件替换工作区文件(撤销修改)

git checkout -- file

10.删除文件

git rm

11.关联远程库(注意:与github交互需要ssh支持,rsa加密的)

git remote add origin git@server-name:path/repo-name.git

origin是一个默认用户名 

12.push到远程库

git push -u origin master

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

13.克隆

git clone <project-address>

GitHub给出的地址不止一个,还可以用https://github.com/michaelliao/gitskills.git这样的地址。实际上,Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。

使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https

14.分支

Git鼓励大量使用分支:

#查看分支:
git branch

#创建分支:
git branch <name>

#切换分支:
git checkout <name>

#创建+切换分支:
git checkout -b <name>

#合并某分支到当前分支:
git merge <name>

#删除分支:
git branch -d <name>

15.查看分支合并图

git log --graph

16.bug分支处理

修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;

当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场

17.新模块/特征分支处理

开发一个新feature,最好新建一个分支;

如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除。

18.多人开发注意项

  • 查看远程库信息,使用git remote -v

  • 本地新建的分支如果不推送到远程,对其他人就是不可见的;

  • 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;

  • 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;

  • 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name

  • 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

19.变基

git rebase
  • rebase操作可以把本地未push的分叉提交历史整理成直线;

  • rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。

 20.标签管理

发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。

Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像对不对?但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的。

Git有commit,为什么还要引入tag?

tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起。

git tag <tagname>#用于新建一个标签,默认为HEAD,也可以指定一个commit id;

git tag -a <tagname> -m "blablabla..."#可以指定标签信息;

git tag#可以查看所有标签。

git push origin <tagname>#可以推送一个本地标签;

git push origin --tags#可以推送全部未推送过的本地标签;

git tag -d <tagname>#可以删除一个本地标签;

git push origin :refs/tags/<tagname>#可以删除一个远程标签。

猜你喜欢

转载自blog.csdn.net/evil_119/article/details/83417851
今日推荐