git入门之安装,克隆,推送,拉取,解决冲突

1. 版本控制简介

用来升级。
基本功能:
团队协作开发,数据备份,历史记录,分支管理(备份,在备份上改,之后和原工程合并)
常见的版本控制软件
集中式的版本控制,以前的上传的数据,版本信息只能存于远程服务器,本地无备份。有cvs svn vss
分布式版本控制,本地有本地的版本,所有客户端提交的代码本地有记录。有Git
Java主要用svn,git
Git官网:git-scm.com可以下载最新版git
git三个区域
(本机上的)

  • 工作区:本地文件夹,存代码的文件夹
  • 缓存区:git临时存储位置,缓存区是工作区---->本地库的中间层
    本地库:存储客户端本地所有提交的历史记录
    git服务器
  • 局域网服务器:gitlab,需要公司自己在Linux上搭建,不开源,安全性高。
  • 外网服务器:github 或gitee码云

博客写理论,+github代码=完美。

2. git安装

安装网址
注意一下,默认不是vim
git入门之安装,克隆,推送,拉取,解决冲突
git的命令是基于Linux,使用Vim做为默认的编辑
git入门之安装,克隆,推送,拉取,解决冲突
不需要配置额外环境变量,第一个就够了
本地d盘新建文件夹,用来测试练习
git入门之安装,克隆,推送,拉取,解决冲突
到当前目录打开鼠标右键打开get bash
git入门之安装,克隆,推送,拉取,解决冲突
$ pwd —查看当前所在位置

3. git初始化

Master是主分支
$ git init .git是隐藏文件
git入门之安装,克隆,推送,拉取,解决冲突

4. 设置签名

标志用户:账号+邮箱,邮箱不需要真实存在
项目签名:每个项目可以有一个独立的签名
git入门之安装,克隆,推送,拉取,解决冲突
全局签名(系统级别签名)
git config --global user.name 用户名(两个减号)
git config --global user.email 邮箱
$ cd ~ -----回家
git入门之安装,克隆,推送,拉取,解决冲突
只有设置了全局签名,家目录下才有.gitconfig文件
$ cd - --------------回来
git入门之安装,克隆,推送,拉取,解决冲突

5. 查看状态

$ git status ---------查看当前状态,在主分支,没有提交。
git入门之安装,克隆,推送,拉取,解决冲突
新建a.text ,内容aaa,git的状态就变了,untract file未追踪的文件
git入门之安装,克隆,推送,拉取,解决冲突
新建文件,这个文件不受git版本控制

6. git add

将工作区的文件添加到缓存区,没有提交,可用rm撤销
git入门之安装,克隆,推送,拉取,解决冲突
Rm撤销
git入门之安装,克隆,推送,拉取,解决冲突
再add,去提交

7. git commit

不写注释说明就跳转到以下页面
git入门之安装,克隆,推送,拉取,解决冲突
i键,vim方式编写说明文字
将暂存区的数据存储到本地库,进入vim写注释,写了注释后,提示提交成功。
git入门之安装,克隆,推送,拉取,解决冲突
查看状态,回到干净状态
git入门之安装,克隆,推送,拉取,解决冲突
Vim给a.text加一行
git入门之安装,克隆,推送,拉取,解决冲突
查看状态
git入门之安装,克隆,推送,拉取,解决冲突
$ git commit -m “modify a.text by add bbb” a.text --------- -m “注释说明”
提交
git入门之安装,克隆,推送,拉取,解决冲突
状态变干净
git入门之安装,克隆,推送,拉取,解决冲突

8. 查看版本日志

git log 查看提交日志
git入门之安装,克隆,推送,拉取,解决冲突

git log --pretty=oneline 简易查看提交日志

git入门之安装,克隆,推送,拉取,解决冲突
git log –oneline 更简易地查看日志
head -> master指的是:当前分支指向的是master分支。
git入门之安装,克隆,推送,拉取,解决冲突

git reflog,最常用,可以查看所有分支的所有操作记录,包括已经被删除的 commit 记录和 reset 的操作,
例如执行 git reset --hard HEAD~1,退回到上一个版本,用git log则是看不出来被删除的commitid,
用git reflog则可以看到被删除的commitid,我们就可以买后悔药,恢复到被删除的那个版本。

9. 版本还原

git rest --hard 版本号 -----------》版本号用git reflog输出结果的前七位就行
git入门之安装,克隆,推送,拉取,解决冲突
查看状态
git入门之安装,克隆,推送,拉取,解决冲突
回到b
git入门之安装,克隆,推送,拉取,解决冲突
删除a.text,只要.get目录正常,就可以用git reset还原

git入门之安装,克隆,推送,拉取,解决冲突

10. 注册两个账号

11. 创建远程仓库

git入门之安装,克隆,推送,拉取,解决冲突

12. 设置远程仓库别名

$ git remote –v
复制链接https://github.com/benjmin007/mygit01.git
git入门之安装,克隆,推送,拉取,解决冲突
$ git remote add origin https://github.com/benjmin007/mygit01.git
Origin为别名,以后就不用输网址了,
fetch抓,push推(多次),clone仅第一次下载(1次),pull拽下来(多次)
git入门之安装,克隆,推送,拉取,解决冲突

13. 推送

$ git push origin master
git入门之安装,克隆,推送,拉取,解决冲突
本地库的数据推送到远程,输出:
git入门之安装,克隆,推送,拉取,解决冲突
可以看到github上有了a.text
git入门之安装,克隆,推送,拉取,解决冲突
回主页,可以看到仓库
git入门之安装,克隆,推送,拉取,解决冲突

14. 克隆

再建个github账号,把本地git退出文件夹
git入门之安装,克隆,推送,拉取,解决冲突
克隆
git入门之安装,克隆,推送,拉取,解决冲突

其他人参与项目开发,第一次将远程库的数据下载的本地,只做一次
克隆以后,本地仓库和远程地址都已经配置好了
$ git clone https://github.com/benjmin007/mygit01.git
git入门之安装,克隆,推送,拉取,解决冲突
可查看到ls下有clone下来的项目
git入门之安装,克隆,推送,拉取,解决冲突
进clone下来的目录可以看到有master标识
git入门之安装,克隆,推送,拉取,解决冲突
新建一个b.text,放入clone下来的工程,接着,编写b.text,并把b.text添加到git,commit b.text
,这样,b.text就在本地的仓库里了。
git入门之安装,克隆,推送,拉取,解决冲突
本地的任何操作都是可以的,不能提交到远程库,需要仓库的创建者要求加入团队
删除本地凭证,以防干扰模拟两个账号
git入门之安装,克隆,推送,拉取,解决冲突
没有许可,push不了
git入门之安装,克隆,推送,拉取,解决冲突
让仓库的创建者邀请clone玩家。后者才能push
创建者在下图邀请
git入门之安装,克隆,推送,拉取,解决冲突
输入对方账号
git入门之安装,克隆,推送,拉取,解决冲突
生成要求连接,有私下联系方式就复制粘贴给他
git入门之安装,克隆,推送,拉取,解决冲突
内容如下
https://github.com/benjmin007/mygit01/invitations
对方也会收到邮件
git入门之安装,克隆,推送,拉取,解决冲突
对方点开邮件邀请 view invitation

git入门之安装,克隆,推送,拉取,解决冲突
现在就可以push上去了
git入门之安装,克隆,推送,拉取,解决冲突
查看仓库,发现文件上去了
git入门之安装,克隆,推送,拉取,解决冲突

15. 拉取

git pull origin master ----------》master是个分支
git入门之安装,克隆,推送,拉取,解决冲突

16. 解决冲突

冲突原理图
git入门之安装,克隆,推送,拉取,解决冲突
解决方案,先拉下来
git入门之安装,克隆,推送,拉取,解决冲突
再合并
git入门之安装,克隆,推送,拉取,解决冲突

打开提示的冲突文件
git入门之安装,克隆,推送,拉取,解决冲突
所以,程序员上班前pull,下班前push
Add+commit,这里不支持直接commit
git入门之安装,克隆,推送,拉取,解决冲突
冲突标识消失
git入门之安装,克隆,推送,拉取,解决冲突
输出
git入门之安装,克隆,推送,拉取,解决冲突
Zs再去pull也不会报错

服务器版本 005
zs本地库 005
ls本地库 005

zs commit006 push服务器006
ls commit push失败 pull 解决冲突,编辑文件,本地提交 push