git学习——简介、使用(一)

  本文是作者参考其他教程学习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服务器,暂时略过

时间: 2024-10-23 15:25:20

git学习——简介、使用(一)的相关文章

Git学习 -- 简介

Git是什么? 是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. 特点 分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库. 安装 Linux-CentOS yum -y install git git config --global user.name "Your name" git config --global user.email "Your email&qu

Git 学习笔记&lt;简介与安装&gt; (一)

Git,开源中国以及GitHub所使用的系统, Is A 一个分布式版本控制系统 Be Used to 为团队合作写代码提供方便的管理系统.几乎满足你所有关于合作写代码的幻想. Has 本地端:工作区.版本库 (版本库还含有一个暂存区) 远程仓库:版本库(用来储存版本库的服务器) How To Install Linux: 首先,先输入git,看看是否安装Git: $ gitThe program 'git' is currently not installed. You can install

GIT 学习手册简介

本站为 Git 学习参考手册.目的是为学习与记忆 Git 使用中最重要.最普遍的命令提供快速翻阅. 这些命令以你可能需要的操作类型划分,并且将提供日常使用中需要的一些常用的命令以及参数. 本手册将从入门到精通指导大家. 首先,我们要从如何以 Git 的思维方式管理源代码开始. 如何以 GIT 的方式思考(这节可以不用看懂,接着看下面的内容,看完就全懂了.) 懂得 Git,第一件重要的事情就是要知道它与 Subversion.Perforce 或者任何你用过的版本控制工具都有着很大的差别. 通常,

Git学习笔记总结和注意事项

一.Git简介 Git是目前世界上最先进的分布式版本控制系统,其特点简单来说就是:高端大气上档次! 二.Windows上Git安装 最早Git是在Linux上开发的,很长一段时间内,Git也只能在Linux和Unix系统上跑.不过,慢慢地有人把它移植到了Windows上.现在,Git可以在Linux.Unix.Mac和Windows这几大平台上正常运行了. msysgit是Windows版的Git,从http://msysgit.github.io/下载,然后按默认选项安装即可.安装完成后,在开

Git学习笔记(三)

Git提交相关内容 在Git提交时,会保存一个提交对象,该对象包含一个指向暂存区内容快照的指针,包含本次提交作者等相关附属信息,包含零个或多个指向该提交对象的父对象指针:首次提交时是没有祖先,普通提交有一个祖先,由两个或多个分支合并产生的提交则有多个祖先.在使用git commit新建一个提交对象前,Git会先计算每个子目录的校验和,然后在Git仓库中将这些目录保存为树(tree)对象.之后Git创建的提交对象,除了包含相关提交信息,还包含指向这个树对象(项目根目录)的指针,如此,它就可以在将来

Git学习笔记1--特点及环境搭建

Git的简介: 是一个开源的分布式版本控制系统,是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件. Git与SVN的区别: Git是分布式的,而SVN是集中式的 SVN需要有一个中央服务器用来存放版本库,在使用时需要先从中央服务器下载最新的版本,然后进行修改,修改后需要再提交到中央服务器.这样的缺点是必须联网,而且如果文件太大而网速又不是很好,使用起来会非常麻烦. Git是一个分布式版本管理系统,也就是每一台使用者的电脑都有一个完整的版本库,

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

学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总结 九.使用码云 原文地址:https://www.cnblogs.com/anliux/p/9909866.html

Git学习——Git分支篇(未完)

Git学习--Git分支篇(未完) 前言 完成了Git学习的基础篇,继续学习Git的分支特性,这是Git出众之处. 目录 分支简介 分支创建 分支切换 分支新建与合并 分支新建 分支合并 遇到冲突时的分支合并 分支简介 首先,Git保存数据的方式比较特殊,保存的是文件的快照,而不是文件的变化. 因此,在执行提交( commit )操作时,Git会保存一个提交对象( commit object).该提交对象包含一个指针指向暂存的内容快照,同时包含作者的姓名.邮箱.提交时输入的信息和指向它父对象的指

git 学习小记之记住https方式推送密码

昨天刚刚学了点git基础操作,但是不幸的是[email protected]给出公告说尽量使用 https 进行操作.可是在用 https 进行 push 时,都需要输入帐号和密码. 各种百度谷歌之后在[email protected]官网找到了解决方法<https方式使用[email protected]设置密码的方式>文中给出了几个方法,并且都非常简单. 关于 cache 缓存方式,我不太喜欢,因为要设置时间,而且会过期.而 store 相应的非常方便,设置全局后,方便多个库使用.当然如果