美文网首页
Git 学习总结

Git 学习总结

作者: lishy009 | 来源:发表于2017-05-18 17:20 被阅读10次

一 git简介

1. 概念

git 是一种分布式版本管理工具。

git 支持的平台:

支持的平台

2. git与svn的区别


(1)git是分布式的,而SVN是集中式的。Git是没有中心服务器的,每个人机器上都是一个完整的库,我们平时开发代码时的中央服务器其实和我们自己机器上的库内容是完全一样的。

svn与分布式的区别

(2)git把内容按元数据方式存储,而svn是按文件:因为git目录是处于个人git目录是处于个人机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。​

(3)GIT分支和SVN的分支不同:svn会发生分支遗漏的情况,而git可以同一个工作目录下快速的在几个分支间切换,很容易发现未被合并的分支,简单而快捷的合并这些文件。

(4)GIT没有一个全局的版本号,而SVN有

(5)GIT的内容完整性要优于SVN:GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

参考链接:https://jingyan.baidu.com/article/676629976401a154d51b8430.html

svn工作流程

二 git的下载和安装

1. 下载地址

https://git-scm.com/downloads(注意下载的版本的位数与自己电脑一样)

举例:win7 64bit,下载的git版本

2. 安装

双击.exe安装程序,按默认选项完成安装。

安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!此时右击鼠标,发现多了几个选项,如图所示。

Git Bash 打开命令窗

注意运行git bash的方式,

(1)直接在桌面右击鼠标选择git bash,使用cd命令切换至仓库所在位置。(也可更改git bash的默认路径)

cd命令切换当前位置

(2)先在本地磁盘上建好仓库,在仓库所在的位置右击鼠标,执行操作即可。

三 git的基本使用

1.创建版本库

(1)初始化一个仓库:git init

初始化仓库

完成这个步骤后,会在本地仓库中生成一个.git文件夹。(注意:若未看到.git,可使用ls -a命令查看隐藏文件,或设置windows显示隐藏文件及文件夹)

(2)添加文件到git仓库,分两步:先git add,后git commit。

添加文件到仓库

(2-1)可能遇到的问题:在commit文件时需要验证个人信息,出现如下图的提示消息:please tell me who you are. 这时需要我们按照提示运行命令,完成用户名和邮箱的配置,之后就可以正常commit文件了。

配置用户名和邮箱

(2-2)注意事项:

  a.使用git add 命令需要指明具体add哪个文件,git add .代表将仓库中所有待添加的文件都添加进来。

git add

  b.无论新增还是修改文件,想要将提交文件到本地仓库都需要add和commit两个步骤;

修改文件后,直接使用commit,而不使用add出现的提示消失

   c.  commit-m中的m(message)是本次提交的说明;

2.文件状态变化

文件状态变化总体过程

下面就用具体的示例来模拟这些状态的变化。

1、首先在本地仓库所在文件夹新建一个文件(如:git_file.txt)。

在仓库文件夹中建一个文件

2、使用git status查看仓库当前状态

表示仓库当前有待添加的文件

3、按照提示信息添加文件git_file.txt,并查询状态

文件将被commit,并可以使用提示命令将已提交的文件恢复至添加前的状态
用“+”表示文件处于staged状态,等待被commit

4、commit文件,并查询状态

nothing  to commit

对应为文件标识为:

用'对勾'表示文件状态为commited,已经被提交

4、修改文件git_file.txt,并查看文件状态。

修改文件git_file.txt “叹号”表示文件有改动
文件git_file.txt目前的状态为modified

5、使用git diff 查看具体的修改内容。

“+”代表增加的内容

6、再次修改文件并查询具体修改内容。

再次修改文件(删除原有内容,并新增两行) git diff

7查看日志git log(注意:信息量大时,可以使用git log --pretty=oneline 来简化输出。)

git log 命令显示从最近到最远的提交日志

说明:

(1)git log 清晰地展示了提交的版本号(commit id)、描述信息(description)、提交者(Author)及提交时间(Date,精确到秒s)。

(2)HEAD -> master表名当前所处的分支为master

(3)你看到的commit后面跟着个一大串是commit id(版本号),它是使用SHA-1计算出来的用十六进制表示的数。

3.git版本回退与‘前进’

可以回退到上一个版本的前置条件,就是你还没有把自己的本地版本库推送到远程!!!

(1)版本回退

结合上小节git log中的图对比着看。

版本回退

在Git中,用HEAD表示当前版本,也就是最新的提交64c44c4(它是截取了commit id的前七位),上一个版本就是HEAD^,上上一个版本就是HEAD^^。(感觉版本回退就是指针位置的变动)

说明:目前我们的git_file.txt共有两个版本,第一个为空文件。当我们使用reset命令回退至第一个版本时,查看仓库中文件git_file.txt中的内容也变为第一版的了。此时我们继续回退版本,就会发现文件git_file在仓库中消失了。(虽然文件git_file只有两个版本,但是这个关注的是仓库的版本哦!)

(2)版本‘前进’

git relog(relog,即reference logs)
‘前进’到指定版本
此时文件的状态

注意查看此时的仓库状态为 文件git_file为unstaged状态,而不是staged。(不理解???是不是这时提交的话,就不用先git add了,直接git commit 就是ok 了?)

查看仓库状态
commit checkout下来的版本

4、撤销修改与删除文件

(1)撤销修改的命令 git checkout  --  <filename>,适用于以下两种情况:

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

b.已经添加到暂存区后,而且又作了修改,现在,撤销修改就回到添加到暂存区后的状态
说明:使用时注意:--前后都需要加空格。

(2)删除文件

删除方式:在文件管理器中直接删了,或者使用git rm 命令(rm即emove)

git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

版本回退、撤销修改 都要注意应用场景小结:

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

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

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

四. git工作流程

git工作图

Workspace :即work directory /working tree,工作目录

Index/Stage:暂存区(Staging area)

Repository:本地仓库

Remote:远程仓库

五.使用git将项目上传到github

1.进入Github首页,点击New repository新建一个项目

New repository

2.填写相应信息后点击create即可

Create repository

3.点击Clone or dowload会出现一个地址,copy这个地址备用

4.接下来就到本地操作了,首先右键你的项目,选择Git Bash Here进入如下界面,在本地创建ssh key。(错误示例)

$ ssh-keygen -t rsa -C"your_email@youremail.com

错误示例:直接点回车,说明会在默认文件id_rsa上生成ssh key。但并没有出现预期的效果。
错误示例-续:这次在保存文件名改为id_rsa

新生成的公钥和密钥文件如图所示:

生成公钥和私钥
将id_rsa.pub内容复制到此处,用于生成新的ssh key
使用$ ssh -T git@github.com验证是否能够成功连接github。(按照这个方法做了,但就是不能成功连接github,不知道是什么原因。)

4.接下来就到本地操作了,首先右键你的项目,选择Git Bash Here,进入如下界面。(正确示例)

正确示例,为什么会有这个默认保存位置? 密钥和公钥
验证结果表明已成功连接github

5.接下来就要把github上面的仓库克隆到本地 .完成后你的本地项目文件夹下面就会多出个名为‘你github上面的项目名’的文件夹,如图我多出了个git_work_2文件夹,我们把本地项目文件夹下的所有文件(除了新多出的那个文件夹不用),其余都复制到那个新多出的文件夹下,接着继续输入命令 cd git_work_2,进入该文件夹

将需要上传的文件复制到repository下,然后add,commit

8.接下来依次输入以下代码即可完成其他剩余操作:

commit

9.上传成功后,如下图所示。

git push命令会将本地仓库推送到远程服务器
显示提交进度

方法

git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

六、分支管理

1、分支简介

1-1 分支分类及常用分支

git branch

主分支master和开发分支develop

1-2 git是保存数据的方式

有些传统的版本管理软件,分支操作实际上会生成一份现有代码的物理拷贝,而Git只生成一个指向当前版本(又称"快照")的指针,因此非常快捷易用。

在进行提交操作时,Git 会保存一个提交对象(commit object)。该提交对象会包含一个指向暂存内容快照的指针。还包含了作者的姓名和邮箱、提交时输入的信息以及指向它的父对象的指针。首次提交产生的提交对象没有父对象,普通提交操作产生的提交对象有一个父对象,而由多个分支合并产生的提交对象有多个父对象。

2、案例说明

2-1.案例准备:新建一个版本库,并创建一个开发分支。

参考网址:http://blog.codingplayboy.com/2017/04/06/git_branch/

上图可见,第一行显示了当前项目所有分支,HEAD -> develop-1表明当前所处分支为develop-1。


推荐参考网址:

git 分支管理 http://blog.codingplayboy.com/2017/04/06/git_branch/

官方文档 https://git-scm.com/docs

相关文章

  • 2018-04-18

    git学习小结 关于git init,git add,git commit 用法总结 1.首先配置git 全局配置...

  • Git常用命令总结

    我学习效率比较低,关于git差不多学习了两周,总结的常用命令如下: git add .&&git commit -...

  • 2018-10-12

    本周学习总结 Git Git 安装与配置 下载完git后,右键Git Bash here 的选项,点击后会弹出一个...

  • Git命令语法汇总

    本文是在学习廖雪峰Git教程后对常用Git命令的使用总结,仅供在使用Git时方便查找。 一、Git简介 Git是当...

  • Git学习总结

    git 相关 将另一个分支的某次提交所做的更改合并过来 git cherry-pick [commitID] 如果...

  • Git学习总结

    1.Linux安装: sudo apt - get intall git - core 输入密码即可完成安装 2....

  • git 学习总结

    http://rogerdudler.github.io/git-guide/index.zh.html

  • Git学习总结

    Part 1 Git基本介绍 版本控制基本功能 所有的版本控制系统,只能跟踪文本文件的改动,比如TXT文件,网页,...

  • git学习总结

    1. git是什么 git是分布式版本控制系统,可多人协助共同维护项目代码及项目管理 2. 安装 a) linux...

  • git学习总结

    Git for windows 本文只是自己的一些学习总结,方便自己查看,如果对您阅读不适,抱歉!!! 常用命令(...

网友评论

      本文标题:Git 学习总结

      本文链接:https://www.haomeiwen.com/subject/ymmhxxtx.html