git学习——简介使用

鱼我所欲也 鱼我所欲也     2022-08-22     633

关键词:

  本文是作者参考其他教程学习git的记录,原文:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/

简介:

  学习git之前,相信大家都知道还有一个东西叫github,我们先要搞明白这两个都是什么东西!

  1.git:基于C语言开发的版本控制工具,简单的说就是和svn实现类似功能的东西。

  2.github:托管源代码的平台,进行项目管理的一个网站。

 

  既然git是和svn实现类似功能的东西,那么他们之间有什么区别呢?

  1.svn是集中式管理的,对网络要求较高(通常是一个内网),git是分布式管理的,可以在自己单机玩,想要发布的时候再push到远程仓库即可。(重要)

  2.git是以元数据的方式存储的,svn是以文件的方式存储的。

  3.git没有一个全局的版本号,而svn有。

  4.git的内容完整性要优于svn,内容以SHA-1的方式存储,当遭遇磁盘故障或网络问题时,可以减低对版本库的破坏。

  5.git的分支和svn不一样,git的分支比较好用,创建速度也非常快。

  

使用:

  git一般结合github使用,首先需要在github上申请一个账号,并且创建一个测试的项目。这块官网的教程比较详细。

  在本地安装git客户端,并且生成ssh key,这个key需要填写到刚刚的github上,作为一种身份的认证。

 

一、github账号申请、秘钥填写
1.在github注册账号:账号、邮箱、密码
2.右上角头像 => Settings => SSH and GPG keys => New SSH key => 填入SSH keys

二、git客户端安装,密钥生成、个人信息设置
1.本地安装git,下一步...完成
2.打开gitBash,输入账号和邮箱信息
git config --global user.name "用户名"
git config --global user.email "邮箱"
3.生成公钥和秘钥,会在"用户/.ssh"目录生成id_rsa、id_rsa.pub两个文件
ssh-keygen -t -rsa -C "[email protected]"

三、初始化git仓库并提交文件,查看状态、差异、历史记录
1.cd到某个项目下,执行git init初始化git仓库,执行后会在当前目录生成.git目录(同.svn一个性质),默认指向master分支的HEAD版本
2.编写文件并执行git add命令,将文件提交到index
3.执行git commit操作,编写注释并提交修改
4.可以使用git status、git diff查看文件状态、文件变更内容
5.git log,可以使用git log --pretty=oneline格式化输出commitid(并非类似svn的1、2、3,而是算出来的,分布式的防止冲突)和注释内容

四、版本回退(没有推送至远程仓库)
1.HEAD代表当前版本,HEAD^代表上一个版本,HEAD^^代表上上个版本,HEAD~100代表往前100个版本
2.回退使用git reset命令,比如回退到上一个版本,git reset --hard HEAD^,回退的操作非常的快,底层只是变更一下指针。执行reset操作后,用git log就看不到后面的版本了
3.当回退错了,想要恢复可以使用git reset --hard 版本号(版本号的前几位即可),如果不知道版本号可以使用git reflog来查看命令操作的历史版本号

五、工作区和暂存区
结构:
工作区 版本库
本地磁盘 暂存区 仓库
代码编写操作在工作区
git add操作:本地代码 -> 暂存区(stage、index)
git commit操作:暂存区 -> 仓库
总结一下,如果想提交到仓库,必须先将数据放入到暂存区(add),commit操作只会将暂存区的数据提交到仓库。

六、撤销修改
撤销工作区修改:git checkout -- 文件 1.如果文件未提交到暂存区,会将文件恢复成版本库(仓库)一致的文件。2.如果文件提交过暂存区,会将文件恢复成暂存区一致的文件。
撤销暂存区、仓库修改:git reset 文件

七、删除文件
本地删除文件后,此时还可以使用git --checkout 文件恢复。
将文件提交至暂存区:git rm 文件,此时需要使用git reset 版本号 恢复暂存区的修改。

八、远程仓库(二选一)
1.使用github
生成公钥、私钥并写入github
git:ssh-keygen -t -rsa -C "[email protected]"
github-登录账号-Settings-SSH and GPG keys-New SSH key-写入公钥
2.公司内部搭建git服务器

九、代码提交至远程仓库:
场景:先有本地仓库,再创建远程仓库。为本地仓库和远程仓库建立连接关系。
1.在github新建远程仓库:new respository
2.关联远程仓库和本地仓库,在代码根目录执行:
git remote add 远程仓库名称 远程仓库ssh连接
git remote add origin [email protected]:wanglianyu/test.git
3.推送本地仓库数据到远程仓库:
git push -u origin master 首次需要加-u,后续直接执行:git push origin master
场景:先有远程仓库,直接从远程仓库克隆。

十、分支的基本操作
1.创建分支并切换过去:(两种等同方式)
①.git checkout -b dev
②.git branch dev
git checkout dev
2.查看分支:git branch,带*的代表当前所在分支
3.切换分支:git checkout master
4.合并分支:
①.git merge dev(Fast forward模式的merge,当前在master上,此操作将dev合并到master上)
②.git merge --no-ff -m "提交信息" dev(非Fast forward模式,此模式在log中能看出分支做过合并操作)
5.删除分支:git branch -d dev
6.强制删除分支:没有merge过的分支是不允许执行删除操作的,除非强制删除,使用参数-D。git branch -D 分支名称

7.分支使用流程:
master是非常稳定的版本,不允许直接做开发。开发都在master的新分支dev上进行。
实际开发中是在dev上新建分支,每个人有自己的分支,更改完成后将代码合并到dev上。
每开发一个功能使用一个新的特性分支feature
十一、解决冲突
1.和svn一样,当两个不同分支修改同一行代码的时候,在merge的时候可能会造成代码冲突,这个时候就要解决冲突。
git使用如下方式标注冲突:<<<<<<< ======= >>>>>>>
<<<<<<< HEAD
branch
=======
branch0New112
>>>>>>> feature1
手动解决后,和之前的步骤就是一样的了。执行add和commit操作。成功后将feature1分支删除即可。
查看分支合并的图:git log --graph

十二、分支操作
BUG分支:本地在不提交的当前功能的情况下想要更改其他的bug,此时要将本地内容存储起来,待完成其他工作后再回来完成当前的工作。
暂存:使用git stash命令将工作空间、index区的内容暂存
查看列表:使用git stash list查看当前的暂存区列表
恢复(两种方式):
1.仅恢复(如果想删除暂存区数据,需要手动执行):git stash apply [email protected]{0}
手动删除:git stash drop

2.恢复并删除暂存区的数据:使用git stash pop恢复

十三、多人协助
查看远程库的信息:git remote
查看远程库的详细信息:git remote -v
推送分支:git push 远程库名 分支名,如:git push origin master
拉取分支:git pull
创建远程的分支到本地:git checkout -b 远程库名/分支名称,如:git checkout -b origin/dev

多人合作的时候流程:
1.推送数据:git push origin branch-name,失败后执行拉取数据
2.拉取数据:git pull
3.本地解决冲突并提交
4.推送数据
注意:git pull可能提示"no tracking information",说明本地和远程分支的对应关系没有建立。
需要创建本地分支与远程分支的绑定关系:git branch --set-upstream branch-name origin/branch-name

十四、标签
1.打标签,默认给HEAD版本打标签,也可以指定一个commitid:
简单:git tag tagname
带描述:git tag -a 标签名 -m 标签描述,如git tag -a v1.0 -m "create tag 1.0"
使用PGP签名标签,需要先安装gpg:git tag -s 标签名 -m 标签描述
2.标签列表:git tag
3.查询标签详细信息:git show 标签名
4.本地删除标签:git tag -d 标签名称
5.推送本地标签:
推送一个标签:git push origin 标签名称
推送所有本地未推送的标签:git push origin --tags
6.远程仓库删除标签:先删除本地标签(4),再删除远程标签:
git push origin :/refs/tags/标签名称

十五、忽略无效的文件
如果需要忽略某些文件,可以编写.gitignore
检查gitignore:git check-ignore
模板:https://github.com/github/gitignore
如果文件git add不进去,可以查看是否被忽略了,或者.gitignore文件是否写错了
强制add:git add -f 文件

十六、别名配置
git config --global alias.别名 原命令,如:git config --global alias.st status,此时git st等同于git status的效果。
git配置文件:
cat .git/config

十七、搭建git服务器,暂时略过

 

git学习笔记

说明:学习使用git过程中,把一些关键命令进行汇总记录,只是作为个人记录使用,不保证准确性,仅供参考。 一、Git简介Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 二、Git... 查看详情

学习总结git学习-参考廖雪峰老师教程九-使用码云

学习总结之Git学习-总目录:一、Git简介二、安装Git三、创建版本库四、时光机穿梭五、远程仓库六、分支管理七、标签管理八、使用GitHub九、使用码云十、自定义Git期末总结九、使用码云 查看详情

git学习之路-git简介

▓▓▓▓▓▓大致介绍  Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目,可以有效、高速的处理从很小到非常大的项目版本管理。   Git是LinusTorvalds为了帮助管理Linux内核开发而开... 查看详情

gitgit常用命令简介

  使用Git也好长时间了,但一直没系统的学习过,现在总结以下工作中用到的,记录以下,以后忘记了可以来看看。  因为操作系统是Windows,所以将简单介绍一下通过gitbash命令行的使用;  本文将不介绍git的安装和配置... 查看详情

刘凯:git操作与学习心得

使用gitbash作为本地客户端,在这里下载,并安装(此前本机已安装,过程略);打开GitHub个人主页,点击右上角的加号,选择Newrepository新建项目; 填写项目名和简介,选择.gitignore和License(此处以C++作为练习),点击Createre... 查看详情

git学习——git分支篇(未完)(代码片段)

Git学习——Git分支篇(未完)前言完成了Git学习的基础篇,继续学习Git的分支特性,这是Git出众之处。目录分支简介分支创建分支切换分支新建与合并分支新建分支合并遇到冲突时的分支合并分支简介首先,Git保存数据的方式比较... 查看详情

github与git的学习

一.Github与Git的简介与区别1.Github是一个基于Git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开。Github由ChrisWanstrath,PJHyett与TomPreston-Werner三位开发者在2008年4月创办。迄今... 查看详情

git版本控制软件结合github从入门到精通常用命令学习手册

                  注意:学习前请先配置好Git客户端相关文章:Git客户端图文详解如何安装配置GitHub操作流程攻略官方中文手册:http://git-scm.com/book/zhGIT学习手册简介本站为Git学习参考手册。目的是为学习... 查看详情

git版本控制软件结合github从入门到精通常用命令学习手册

GIT学习手册简介本站为Git学习参考手册。目的是为学习与记忆Git使用中最重要、最普遍的命令提供快速翻阅。这些命令以你可能需要的操作类型划分,并且将提供日常使用中需要的一些常用的命令以及参数。本手册将从入门到精... 查看详情

git使用简介(代码片段)

附上廖雪峰老师Git教程https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000创建版本库第一步$mkdirlearngit$cdlearngit$pwd/Users/michael/learngit第二步通过gitinit命令把这个目录变成Git可以管理的仓库:$gitinitIniti 查看详情

github简介

前言学习使我快乐 一。git与github关系git是一个版本控制工具github是一个用git做版本控制的项目托管平台。 二。git与svn的区别Git是由著名Linux内核(Kernel)开发者LinusTorvalds为了便利维护linux而开发的。git是一个分布式的版本... 查看详情

git学习笔记

注:本文主要根据廖雪峰大神的Git教程学习而来,主要记录一些重要的命令等方便自己查找,大家对git感兴趣可以直接去Git教程学习。 简介:Git是目前世界上最先进的分布式版本控制系统(没有之一)。创始人:林纳斯·托... 查看详情

git安装及使用简介

从源代码安装有人觉得从源码安装Git更实用,因为你能得到最新的版本。二进制安装程序倾向于有一些滞后,当然近几年Git已经成熟,这个差异不再显著。如果你想从源码安装Git,需要安装Git依赖的库:curl、zlib、openssl、expat,... 查看详情

玩转git入门篇(代码片段)

最近项目使用到Git管理项目,所以就学习了一番,随然网上关于Git的文章铺天盖地,我还是整理下总结下自己学习Git相关笔记,希望也能帮助到需要他的小伙伴们,O(∩_∩)O~简介Git是分布式版本控制和源代码管理系统,重点使用... 查看详情

git学习之简介

...最浅显易懂的Git教程!为什么要编写这个教程?因为我在学习Git的过程中,买过书,也在网上Google了一堆Git相关的文章和教程,但令人失望的是,这些教程不是难得令人发指,就是简单得一笔带过,或者,只支离破碎地介绍Git的... 查看详情

github的学习过程和使用感悟

一、Github简介    GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git作为唯一的版本库格式进行托管,故名GitHub。GitHub于2008年4月10日正式上线,除了Git代码仓库托管及基本的Web管理界面以外,还提供... 查看详情

《个人-git使用方法》

...代码托管平台。里面有相当多的优秀的库,可供大家下载学习,也可以创建自己的库。软件:GitHub使用步骤:    1.注册账户。要想使用github第一步当然是注册github账号了。之后就可以创建仓库了(免费用户只能建公共仓库... 查看详情

git学习笔记

一、Git简介  1、Git是什么?  Git是世界上最好用的分布式版本控制系统,它是“Linux之父”linus用C语言花了两周时间开发的又一个伟大的开源软件,当时主要用于Linux源码管理。2008年,GitHub网站上线之后,它为开源项... 查看详情