Git——个人总结

  昨天看了廖雪峰老师的Git教程,豁然开朗,所以在这里总结一下常用指令,以便大家使用。

一、Git与SVN的区别

  SVN是集中式版本控制系统,通俗讲就是,项目的版本库是集中存放在一个中央服务器上的。当你开始工作的时候,你需要去中央服务器上把最新下代码拉下来进行开发;当你今天的工作结束的时候,你需要把自己写的代码再上传到中央服务器上。这个过程已经暴露了SVN的缺点,一个是如果中央服务器原地爆炸了呢?你去哪拉最新的代码?你去哪上传自己当天写好的代码?那不是GG了吗,对不对?还有一个就是SVN这个东西操作的话是需要联网的,联网的话那伴随的问题就来了:网断了怎么办?网速贼慢怎么办?所以联网这个事也挺尴尬的。

Git——个人总结_第1张图片

  Git是分布式版本控制系统,通俗讲就是,项目的版本库是分布存放在每一个开发人员的电脑上。每个人的电脑上都有当前项目的版本库,那问题来了:我和同事两个人都修改了项目,怎么合并呢?很简单,找一台充当“中央服务器”的电脑(可以用github或者码云来充当这个角色),但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。Git的这个思想,很好的解决了SVN的弊端:如果一个人的电脑原地爆炸了,不用担心,你的小伙伴电脑还在,他们上面都有项目,给你一份就好了;平时开发不用网,没网照常工作,只是“交换”修改的时候用一下网,其他时间不用。

Git——个人总结_第2张图片

二、Git的安装

  我感觉直接去Git官网上下载就好了(链接:https://git-scm.com/downloads),下载后进行安装,选好安装在哪个目录,其他默认就好了。Git安装好后,还有两个步骤:

  1.在全局环境变量配置Git,以便在任何目录下都可以使用Git;

  2.配置自己机器的名字和邮箱,用来“交换”信息时自报家门,让别人知道他在跟谁“交换”信息,如下进行配置:

  $ git config --global user.name "Your Name"
  $ git config --global user.email "[email protected]"

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

三、Git工作区和暂存区的概念

  Git——个人总结_第3张图片

四、Git常用指令

创建版本库

1.初始化一个Git仓库,使用 git init 命令;

2.添加文件到Git仓库,分两步:第一步,使用命令 git add <file> ,注意,可反复多次使用,添加多个文件;第二步,使用命令 git commit ,完成;

查看状态和修改

3.要随时掌握工作区的状态,使用 git status 命令;

4.如果 git status 告诉你有文件被修改过,用 git status可以查看修改内容;

版本回退

5. HEAD 指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令 git reset --hard commit_id ;

6.穿梭前,用 git log 可以查看提交历史,以便确定要回退到哪个版本;

7.要重返未来,用 git reflog 查看命令历史,以便确定要回到未来的哪个版本;

撤销修改 

8.场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令 git checkout -- file ;

9.场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令 git reset HEAD file ,就回到了场景1,第二步按场景1操作;

10.场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考上面的版本回退,不过前提是没有推送到远程库;

删除文件

11.命令 git rm 用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容

添加远程库

12.要关联一个远程库,使用命令 git remote add origin git@server-name:path/repo-name.git ;

13.关联后,使用命令 git push -u origin master 第一次推送master分支的所有内容;

14.此后,每次本地提交后,只要有必要,就可以使用命令 git push origin master 推送最新修改;

从远程库克隆

15.要克隆一个仓库,首先必须知道仓库的地址,然后使用 git clone 命令克隆;Git支持多种协议,包括 https ,但通过 ssh 支持的原生 git 协议速度最快;

创建与合并分支

16.查看分支: git branch 

17.创建分支: git branch  

18.切换分支: git checkout  

19.创建+切换分支: git checkout -b  

20.合并某分支到当前分支: git merge  

21.删除分支: git branch -d  

解决冲突

22.当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成;用 git log --graph 命令可以看到分支合并图;

分支管理策略

23.合并分支时,加上 --no-ff 参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而 fast forward 合并就看不出来曾经做过合并;

Bug分支

24.修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;当手头工作没有完成时,先把工作现场 git stash 一下,然后去修复bug,修复后,再 git stash pop ,回到工作现场;

Feature分支

25.开发一个新feature,最好新建一个分支;如果要丢弃一个没有被合并过的分支,可以通过 git branch -D  强行删除;

多人协作

26.查看远程库信息,使用 git remote -v ;

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

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

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

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

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

创建标签

32.命令 git tag  用于新建一个标签,默认为 HEAD ,也可以指定一个commit id;

33. git tag -a -m "blablabla..." 可以指定标签信息;

34. git tag -s -m "blablabla..." 可以用PGP签名标签;

35.命令 git tag 可以查看所有标签。

操作标签

36.命令 git push origin  可以推送一个本地标签;

37.命令 git push origin --tags 可以推送全部未推送过的本地标签;

38.命令 git tag -d  可以删除一个本地标签;

39.命令 git push origin :refs/tags/ 可以删除一个远程标签。

文件忽略

40.忽略某些文件时,需要编写 .gitignore ; .gitignore 文件本身要放到版本库里,并且可以对 .gitignore 做版本管理!

配置别名

41.可以通过命令 git config --global alias.st status 将 status 的别名配置为 st ;

配置SSH

42.安装完 git 后,在任意地方右键,进入git hash,执行命令  ssh-keygen -t rsa -C "[email protected]"  ,即可在C盘的用户目录里看到.ssh文件夹,里面有两个文件:id_rsa(私钥,不用动),id_rsa.pub(公钥,需要添加到Github的公钥列表里);

五、Github和码云

  1.在GitHub和码云上,可以任意Fork开源仓库;

  2.自己拥有Fork后的仓库的读写权限;

  3.可以推送pull request给官方仓库来贡献代码;

  4.Github上的私有仓库是要钱的,码云上的私有仓库是免费的;

 

 

 

 

转载于:https://www.cnblogs.com/lixilin/articles/7851119.html

你可能感兴趣的:(git,运维)