git 的 使用

Posted oujianjun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git 的 使用相关的知识,希望对你有一定的参考价值。

1、git和svn的区别

svn是集中式的版本控制系统

git是分布式的版本控制系统

 

集中式:

 

 

可以看出svn集中式版本控制都是把所有的版本存储在svn服务器中

且必须要联网到svn服务器才可以进行版本的回退、更新等操作。

假如哪天svn服务器坏了,那么所有的版本代码都将丢失,也就无法获取代码和回退版本等操作。天啊,这将是一个悲伤的故事!

 

如何化悲伤为快乐呢,来看看git如何工作的把!

 

分布式:

 

可以看出,使用git,每个电脑都有完整的版本号和日志信息。

且没有网的时候,git照样可以工作,只是把代码提交到本地,待有网在提交到远程git仓库

就算哪天git服务器坏了也没事,因为本地仓库都保存了完整的版本。

 

搭建github服务器(学完linux服务器在看): http://blog.w0824.com/2018/07/09/Centos%E6%90%AD%E5%BB%BAGIT%E6%9C%8D%E5%8A%A1%E5%99%A8/

免费第三方平台:github、码云、https://coding.net/

 

git发明者:是Linux创始人李纳斯

Linux几个命令:

ls:查看目录的文件 (list)

clear:清屏

pwd:查看当前所在的工作目录

2、安装git工具

安装注意自己系统的位数。

 

安装的时候选择安装路径即可,然后一路next即可。安装好后鼠标右键会多出以下两个选项,代表git工具安装完成。

 

 

3、获取git仓库

获取git仓库有两种方式,

一是在本地目录中执行git init指令,初始化一个仓库。

二是从远程服务器拉取一个仓库。如从github拉取,或是从自己搭建的git服务器拉取。

 

这里重点讲解第二种方式如何在github上面创建仓库,第一种方式太简单。

(1)在github创建仓库

创建仓库比较简单,参考下面的图片即可:

1、点击加号+,选择New repository新建仓库

 

2、输入创建仓库的信息

 

创建好之后,如下所示:

 

4、克隆远程仓库代码到本地

克隆远程的仓库代码到指定目录:

命令:git  clone 仓库地址  [目录]

注意:不写目录名称会在当前目录创建一个与github仓库同名的目录

如下面的指令代表把仓库代码检出到当前目录(./)

git clone 仓库地址  ./

 

仓库地址位于:

 

仓库地址有两种协议:https、ssh。后面使用ssh协议可以免去每次推送代码输入密码的烦恼。

 

完整命令:git  clone  https://github.com/ww24kobe/test_project.git  ./ ,成功之后,会把目录中多一个.git的隐藏文件夹。

5、git工作流

一个git仓库包含以下三个部分:

 

工作区:就是我们电脑里能看到的目录。

暂存区:英文名叫stage,或index。一般存放在“.git目录”的index文件中。

本地版本库:工作区有一个隐藏目录.git,这个不算工作区,而是git的版本库。且自动创建一个 master 分支,以及指向当前所在分支的 HEAD 指针

 

如下:

 

 

 

后面众多的git命令,就是在以上三者中互相交叉使用。

6、开发中git常用的指令

l  全局设置:先要设置提交的用户名和邮箱,不设置则无法提交代码。以后可以找到代码的负责人

git config --global user.name 名字     # 叫啥名字

git config --global user.email 邮箱             # 怎么联系你

 去掉--global则只在当前项目中有效

git config user.name 名字     # 叫啥名字

git config user.email 邮箱       # 怎么联系你

l   查看配置信息

 git config --list  , 查看命令如何使用,如git commit --help

l  在指定目录创建一个git仓库

git init  :执行完后会在当前目录生成一个.git的隐藏文件夹

如果后期需要把本地仓库代码推送到远程仓库,则需要设置远程仓库地址。

git remote add origin url      # 设置本地的远程仓库地址

l  克隆远程的仓库代码到指定目录:

git clone url  [目录]

注意:不写目录名称会在当前目录创建一个与github仓库同名的目录

如下面的指令代表把指定url仓库代码检出到当前目录(./)

git clone url  ./

l  添加当前目录的所有文件到暂存区:  

git add . 

l  查看暂存区状态:

git status

l  提交文件:    

git commit -m ‘备注信息’

l  已经被git跟踪的文件,可以简写:

git commit -am ‘备注信息‘

l  查看提交备注的信息(查看提交记录)

git log 或者 git reflog 或 git log --oneline

更酷的显示方式:git log --oneline --graph

--graph图形化显示,比较直观。

 

更牛逼的显示:给log命令设置别名,

git config --global alias.lg “log --graph --pretty=format:‘%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset‘ --abbrev-commit --date=relative”

 

l  代码版本回退:

 

git reset --hard HEAD 回到当前的版本

git reset --hard HEAD^ 回到当前的版本前一个版本

git reset --hard HEAD^^ 回到当前的版本前两个版本

git reset --hard af4542g(使用git log 获取日志的前7位,可以回到指定的版本)

l  删除文件

git rm  files

l  撤掉修改

git checkout files

l  推送代码到远程服务器:

语法:git push -u 远程名称 本地分支名:远程分支名

git push -u origin master(第一次推送加-u,都叫master可以省略,只写一个master即可)

l  修改本地远程仓库地址:

git remote -v  查看本地的远程仓库地址

git remote add origin url      # 设置本地的远程仓库地址

git remote rm origin             # 移除本地远程仓库地址

l  从远程服务器获取内容:

git push -u 远程名称  本地分支名:远程分支名

git pull 远程名称   远程分支名:本地分支名

 

git pull orgin master 拉取远程仓库代码并合并

git fetch orgin master 拉取远程仓库代码不会合并,需要执行git merge origin/merge进行合并

 

远程代码强制合并本地代码:

git pull origin master  --allow-unrelated-histories

l  仓库地址

git remote  -v       #查看本地的远程仓库路径

git remote rm origin     #移除本地远程仓库地址

git remote add origin  git@github.com:用户名/仓库名.git      #设置本地的远程仓库地址

 

l  查看文件的每行代码是谁写的,尤其实现发现了错误代码的情况下,想跑都没门。

git blame files

7、给ssh协议创建私钥和公钥

如果仓库地址使用https的协议,每次提交都会要求输入远程仓库github的用户名和密码,

如果我们使用ssh协议作为仓库地址的话,并且配置好私钥和公钥,每次提交就会免去输入用户名和密码的烦恼。

 

公钥:理解为锁,上传到github中存放着。

私钥:理解为锁的钥匙,在本地电脑存放着。

 

也就是说只有锁的对应钥匙才可以进行提交代码。

 

创建ssh私钥和公钥,输入: 1  -t rsa -C(大写C哦) ‘邮箱地址‘ ,然后一路回车即可,成功之后会在当前用户的目录多出如下的两个文件。

id.rsa:私钥文件

id_rsa.pub:公钥文件

 

把id_rsa.pub的公钥内容复制到github上面去,步骤如下:

 

添加好后如下所示:

 

最后修改远程仓库地址为ssh协议即可:

git remote -v   #查看本地的远程仓库路径

git remote rm origin             #移除本地远程仓库地址

git remote add origin  git@github.com:用户名/仓库名.git      #设置本地的远程仓库地址

 

 

 

 

创建仓库的两种方式小结

l  方式一:自己去github远程创建一个仓库。

注意:创建的时候,注意勾不勾选前面readme的复选框

 

 

l  自己在本地初始化一个仓库,通过git init 来实现

 

 

 

 

 

8、创建标签(版本号)

l  查看所有标签

git tag 

 

l  创建标签,版本号为1.0, -m 备注信息

git tag v1.0  -m ‘version 1.0’ 

 

l  推送本地的所有标签到远程仓库,其他人克隆此仓库或拉取数据同步后,也会看到这些标签。

git push origin master --tags

 

 

 

9、git分支

master分支:这个每个仓库默认有的分支,主要用来发布代码正式版本的。

dev分支:平常代码的开发在此分支上进行。

 

master分支和dev开发分支配合工作:

一般多是在开发分支dev开发完毕后,把此分支的代码合并到master 分支,最后再把master分支下的代码推送到远程服务器(即远程仓库github)

 

分支有关的指令:

l  查看仓库所有的分支:

git branch

l  创建dev分支:

git branch dev

l  切换分支(切换到master分支):

git checkout master

l  合并分支dev到master主分支

先切换到要合并的分支,再把dev分支合并到当前分支

git checkout  master   

git merge  --no-f dev -m  ‘合并的信息’ 

注:通过选项--no-f合并也算一次提交

l  删除分支dev:

git branch -d dev

l  如果分支还未合并,可以强制删除:

git branch -D dev

l  提交分支dev到远程

git push origin dev

l  删除远程的dev分支

git push --delete dev

有关git分支的管理策略文档:

 

 

 

 

 

10、搭建git服务器

 

参考简书地址:https://www.jianshu.com/p/e79ea05d9b61

 

可以学完linux之后再看。

 

11、fork

可以把别人的项目fork(理解为复制)到自己的用户名下面

 

 

12、issue

给项目提出意见和建议,包括项目bug,一起把项目做得更好,一起进步学习。

 

13、full request

当你发觉fork下来的项目有bug时,你可以进行修改提交到自己仓库,在发起一个pull request即可,项目的原作者会看到这个pull request请求,如果没问题,会把此请求合并merge到项目中。

14、contributor

给自己项目开发增加协助者,共同完成这个项目。点击自己项目的Settings

 

 

添加成功,通过contributor可查看。

 

以上是关于git 的 使用的主要内容,如果未能解决你的问题,请参考以下文章

git的基本使用

Git的使用---4.git的基本使用

工作后——Git的使用总结

Git 使用总结

Mac终端使用Git、Atom使用Git、VScode使用Git、Sourcetree Git配置GitHub

Git上手:使用Tortoisegit操作Git