Git操作

Git概述(略)

Git:分布式版本控制工具 vs 集中式版本控制工具

Git命令:xxx

Git分支:主打特性。创建、转换、合并。

GitLab:基于局域网的代码托管中心。

官网介绍

https://git-scm.com/

版本控制介绍

版本控制:记录文件的内容变化。以便能够查看文件的历史修改记录

*集中式和分布式的区别

集中式:都有一个集中管理的服务器。

缺点:服务器的单点故障问题。宕掉了、挂机了、停电了或者磁盘坏掉了,那代码就没有了。

SVN的工作原理及流程手册 - BoomOoO - 博客园

分布式:

每台程序员自己的电脑就是一个版本控制库。

优点:

  1. 版本控制在本地进行。即使断网依然不影响版本提交等。

  2. 每个人手上都有一套完整的包含历史记录的代码。

历史

Git和linux是同一个人开发的

工作机制和代码托管

工作区:代码存放的磁盘目录

暂存区:

  1. 让git知道你有这么一个代码文件。你需要将工作区的代码添加到暂存区,git add .

  2. 此时并没有历史版本

  3. 从暂存区删除:git rm --cached

本地库:

把暂存区提交到本地库,才会有历史版本。

这里扩展一下git文件的状态:

Git的各种状态 - InMicro - 博客园

你从git status看到的就是这3种。

远程库

gitlab:

搭建gitlab服务器,基于局域网的

安装

安装目录:非中文,不包含空格

vim编辑器,linux命令,很多好用快捷键

Git常用命令

设置用户签名

git config --global user.name xxx

git config --global user.email xxx

git首次安装必须设置用户签名,否则无法提交代码

git init

使得git获取这个目录的管理权

git init初始化本地库后,当前目录下会有隐藏目录/.git

相关linux命令

需使用 ll -a 查看到隐藏目录

*git bash中的命令和linux命令是通用的

git status

显示结果:

第1行:提示当前分支

……

红色:只是存在于工作区,还没有被git管理,没有追踪过这个文件

绿色:git已经知道了这个文件,已经追踪到了这个文件

相关linux命令

非插入模式

复制:yy

粘贴:p

查看文件内容

cat a.vue

查看文件末尾第一行,即最后一行

tail -n 1 a.vue

git add - 添加

添加暂存区

移除暂存区

git rm --cached xxx

git commit - 提交

git commit -m 'xxx'

提交后展示:

7位字符码:版本号

git relog

可以看到提交的版本历史

这里是前7位精简版本号

git log

查看详细日志:用户签名 提交时间 等等

这里可以看到完整版本号

文件修改

只要有修改,都可以用git status查看文件修改状态

提示文件修改了:红色的,表示这次文件的修改还没有添加到暂存区

底层:是用指针来实现的

git reset --hard

同样的,查看版本信息

git reflog 查看精简版本信息

git log 查看版本详细信息

版本穿梭:

git reset --hard 版本号

底部实现原理

实际上head不动,移动master

Git分支操作

公司里服务器运行的模式

服务器:公司里面分好几套服务器,因为有好几套环境:开发、测试、生产。

有好几套分支:一套分支给用户用着。比如我们是在开发(dev)分支上开发,用户是在生产分支(master)上使用。

git branch - 创建

创建一个新分支,拉一个新分支,相当于webstorm -》new branch ...

git branch xxx

查看当前所有分支

git branch -v

git checkout - 切换

切换分支

git checkout feature/xxx

git merge - 合并

把指定分支合并到当前分支

我的master分支并没有修改,hotfix分支基于master分支之上又改了一些东西。

那么合并过来就改了呀。。

有冲突的情况

<<<head

当前分支的代码

=========

要合并的代码

>>>hotfix

三路合并的原理

简单点来讲就是这样,先找到2个commit的公共祖先,然后分别比较相对于公共组件的差异,然后合并两份差异。

https://segmentfault.com/a/1190000003966242

指针

远程git操作

git remote

查看本地所有别名

git remte -v

给远程分支取别名

git remote add xxx https://xxx

现在git要加上token才能push

git remote set-url origin https://<token>@github.com/betterangela/git-demo.git

git push - 推送

git push 推送

//推送的最小单位是:分支

git push xxx/https://xxx master

git push -u origin master // 加上-u参数,之后就可以直接使用git push

作为成员:git clone -> git push

管理员:git push -> git pull

fork:把你的代码复制一份复制到我的远程库里面

删除后了目录push

git rm --cached -r .idea  // 删除目录要加上-r
git commit -m 'deleted .idea' // 删除之后一定要commit
git push origin master

git:项目提交了idea的文件-让文件/文件夹脱离版本控制_MasterIsHero的博客-CSDN博客_idea将文件移除git控制

git pull - 拉取

拉取远程分支

git pull 远程库别名 远程库分支

git pull origin master

*拉取动作会自动帮你提交本地库

本地库和远程库同步,这个动作很重要;

目的:随时让你本地库代码保持最新的状态

git clone - 克隆

git clone https://xxx

ps.克隆的时候是不需要账号登录的。公共库的读权限是没有限制的。

clone的时候会做下面3件事情:

  1. 拉取代码

  2. 初始化本地库

  3. 添加远程别名

当你clone的时候这3件事它都帮你做好了

git push:账号认证到本地

permission denied xxx

SSH免密登录

生成SSH公钥

  1. 首先在家目录下,敲入命令

cd C:\Users\v_lkeqiliu
// ssh-keygen 生成免密登录协议的
// -t rsa 非对称加密协议,-t指定加密协议
// -C 描述,后跟账号邮箱
ssh-keygen -t rsa -C 1456100683@qq.com

2.敲3次回车

3.在家目录下会生成/.ssh目录,下面有公钥和私钥

4.将公钥粘贴至自己的gihub账户中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值