【尚硅谷新版Git快速入门(3h迅速掌握git)】
学习地址:
git介绍
是分布式版本控制软件
区分:集中式版本控制与分布式版本控制[[git入门#^0e3f4d|区别]]
用于管理软件开发中的代码
什么是版本?
版本控制软件能干嘛?
集中式,分布式版本控制的区别
三个人同时下载同一份文件,
A修改后上传,B修改后上传,C修改后上传.
最终只显示C修改的文件,AB文件被覆盖.
A下载文件,服务器将文件锁定
BC可以下载,但是无法修改.只有A修改完毕上传之后,可以再一次下载(此时锁打开2).
有一个本地仓库,(避免中央服务器崩盘)
git及其GUi下载
使用github DeskTop
提交文件(提交相当于产生新文件,查看本地仓库有没有旧文件,然后设立新版本)
问题:
引用分支的概念
分支类似于库的概念
1、注册Github账号
Step 1: https://github.com 注册地址 输入昵称,邮箱,密码注册
Step2: 选择你的私人计划(personal plan),即选择免费用户还是付费用户,免费用户只能创建开源仓库,也就是所有人都可以看你的项目。
Step3: 登录注册的邮箱,验证账号。
2、创建仓库
Step1: 创建仓库
Step2: 填写一些资料
Step3: Github上的项目页面(图片来源http://blog.csdn.net/android_zyf/article/details/64175941)
3、安装GitHub Desktop
下载地址:https://desktop.github.com/ 选择适合你的版本下载
安装好GitHub Desktop后,第一次运行时需要输入GitHub.com的用户名和密码
4、创建本地仓库
Step1: new Repository
Step2: 填写仓库名字、描述,选择存放地址
Step3: 在文件夹打开
Step4: 添加自己到项目文件
Step5: 提交改动
5、提交改动到远端(Github.com)
成功之后,就可以在自己到Github 项目页面看到新提交到项目了。通过GitHub Desktop你已经能够把本地的项目文件跟远端(Github.com)上的项目关联起来。
Github.com 个人项目页
6、从远端拉取仓库
除了本地创建仓库推送到远端,我们也可以从远端拉取项目(Clone)
Step1: 进入自己的项目页面,复制项目地址
Step2 回到Github Desktop
Step3: 粘贴地址,Clone
7、本地提交和推送
成功从远端拉取项目之后,你可以使用自己喜欢的编辑器打开,编辑好文件之后,再提交改动到远端
Step1: 本地提交
此时提交仍然是属于本地的,如果需要提交到远端(Github.com)还需要进一步推送
Step2: 点击Push origin 就可以推送到远端
8、版本回滚
通过第7步,可以轻松的看到自己对项目的改动,哪怕只是改了一个空格,一个分号,都会有清晰的显示,再也不用害怕不小心改错地方了。
是不是非常的愉快,那如果改完之后又后悔了,有没有后悔药?
答案是,当然有,你可以轻松的回到任何的一次修改。
情况一,你还没提交代码,这时候最简单,只需要文件右键"Discard Changes" 放弃更改即可
情况二,你已经提交代码,操作也非常简单,右键选择"Revert This Commit" 恢复到当前提交
9、新增分支
创建和切换分支到操作很简单,关于分支到概念 请看 阮一峰的 Git分支管理策略step1: New Branch
step2: 填写分支名字
10、合并分支
现在我在dev开发分支上做了添加了login.html,那么如何合并到master分支呢?
dev分支
首先,我们需要切换到Master分支,
Step1: 切换分支
Step2: 合并到当前分支
Step3:把dev的变化合并到master分支
此时,你会发现master分支上的提交历史已经有了“添加login”这个改动,这说明合并已经成功。
11、解决冲突
以上操作,一个人玩的时候溜溜的,很愉快,但实际工作中,经常是多人一起开发,这时候,两个人同时改了同一个地方,就会出现冲突的情况。
比如我在dev分支和master分支对同一个地方进行改动,
dev分支
master分支
在合并分支的时候就会出现冲突
这时候,点击关闭提示,再看 Changes, 冲突的文件已经列出来冲突在GitHub Desktop的体现:
我们可以在编辑器中修改。冲突在编辑器中的体现
必须注意的是,解决完冲突的代码不能有 <<<<<<< HEAD ======= >>>>>>> dev 这些标记解决完冲突的代码
提交解决冲突后的合并
12、Fork 别人的项目
通过前面的步骤,日常的工作已经能轻松进行,但Github除了托管自己的项目,上面也汇集了大量优秀的开源项目,我们如何快速的克隆别人的项目?以Vux项目为例子:
vux 的项目页
Fork之后,我们已经克隆了一个作为自己的项目版本,可以进行任意的开发和学习
现在我们也有一个vux项目了
在做了一些创造性开发之后,你可以向原作者提交合并的申请,点击New pull request
合并的请求
这时候原作者就会收到一个合并请求,他可以通过审核你的提交,来决定需不需要合并
README
添加重要的文件信息,提示该仓库是干嘛的
.gitgnore
开发工具使用git
idea
把项目上传到中央的服务器(github或者gitee)
github
gitee
下载插件
git版本号
查看命令
$ git cat-file -p 0dc37eefa9913df2f764276f85b56f35ec43bfd8
- 子树 也就是指向当前版本的文件状态的版本号
tree **7d110d924de8529750f5bb00746b29701a5d2a8a**
- 上一个版本的版本号
parent 775bd4e21f57e4d665af0f0ceb98726418104ca8
- 提交信息
author 云昔子 <90705866+yunxizi@users.noreply.github.com> 1714630948 +0800
committer 云昔子 <90705866+yunxizi@users.noreply.github.com> 1714630948 +0800
2
1
查看当前版本的子树(文件状态)
查看命令 查看7d110d924de8529750f5bb00746b29701a5d2a8a
$ git cat-file -p 7d110d924de8529750f5bb00746b29701a5d2a8a
文件的信息
100644 bolb是指的文件类型
3d3920127d28c5cac4a88d4ae9f15c4f0a1b6ef4 是文件内容的地址
100644 blob 3d3920127d28c5cac4a88d4ae9f15c4f0a1b6ef4 111.txt
100644 blob 23122e2d1584944fa9071050798bcc8f1b0e29b7 111.txt.bak
100644 blob 952fb49806314b64b1883c300838249793ee040a AAAA
100644 blob 6a01961c11df45ba0fa6bc303964a10a5a672d1f README.md
100644 blob 2193513aff00fe5030e585408735b6ffbabb6828 "\346\226\260\345\273\272 WinRAR \345\216\213\347\274\251\346\226\207\344\273\266.rar"
查看文件信息
查看命令3d3920127d28c5cac4a88d4ae9f15c4f0a1b6ef4是文件内容的地址:
$ git cat-file -p 3d3920127d28c5cac4a88d4ae9f15c4f0a1b6ef4
文件信息:
1111
333
图解
git分支
git命令
查看git 版本
git -v
初始化git仓库
git init
远程克隆仓库
git clone 地址
配置仓库使用者信息
git config
[[git入门#^97ef3c|用户信息配置]]
查看暂存区状态
git status
查看日志
git log
git log --online
提交至仓库
git commit
git commit -m 提价文件备注的信息
回退
重置[[git入门#^a32509|回退版本]]
git reset --hard 版本号
回退本地库版本
恢复
git revert 版本号
恢复到到这个版本号之前的本地库
分支
创建分支
git branch 分支名
查看所有分支
git branch -v
切换分支
git checkout 分支名
删除分支
git branch -d 分支名
组合命令创建分支并且切换
git checkout -b 'order'
分支合并,解决冲突
合并分支
git merge 分支名
显示出
git merge order
合并分支 order
Auto-merging c.txt
编码 c.txt
CONFLICT (add/add): Merge conflict in c.txt
confitct 添加/添加: 合并 c.txt 发生冲突
Automatic merge failed:fix conflicts and then commit the result.
自动 合并 失败: 自己修复冲突 最后再一提交完成合并功能
自动合并失败:
自己修复冲突(打开文件,自己改)
最后再一提交完成合并功能
标签
数字字母组合的版本号,你无法知道是什么意思,回退版本不知回退哪一个版本
查看 标签
git tag
增加标签
git tag 标签名字 版本号
标签是唯一的不能重复
删除标签
git tag d 标签名字
远程仓库
查看本地config文件
命令
git remote add 地址名称(origin) 远程仓库地址(https/ssh)
git remote rmove 地址名称(origin)
git remote rname 地址名称
提交至远程仓库
git add 文件名
提交到文件状态区域
git commit -m 版本信息
提交到本地仓库
推送
git push (远程)地址名称
https协议直接推送
ssh有需要设置
ssh协议
这里用了ssh协议
ssh-Keygen -t ras -C
查看公钥:
cat ~/.ssh/id_rsa.pub
远程添加公钥