GIT快速入门

点击量:51

git是全球使用最广泛的代码托管中心,通过git可以进行系统的版本迭代,团队协作等

GIT

工作区**:平时可以看到的地方**

git add

暂存区**:打算要提交,还没提交**

git commit

本地库**:实实在在的存储历史的版本**

代码托管中心:用于维护远程库

局域网:

GitLab 可以自己搭建

外网

GitHub

码云

本地库和远程库 团队内部协作 跨团队协作



git init

创建一个本地库**(本地库初始化)**

设置签名**(区分开发人员的身份,任意设置)**

级别

项目级别:仅在当前本地库有效

系统级别:登录当前操作系统的用户范围

如果两个级别的签名都存在,默认采用项目级别的签名

二者都没有:不允许

命令:

git config 本地库级别

git config --global 系统级别

git config user.name lizhihang

git config user.email aaa@qq.com

git config --global user.name lizhihang

git config --global user.email aaa@qq.com

本地级别签名存放在.git/config文件中。一般设置系统级别的

系统级别的放在当前用户的根文件夹中

git status

可以查看工作区,暂存区的状态

on branch master 在master分支

No commit yet**本地库中没有提交的文件**

nothing to commit 暂存区什么都没有

untracked files 未追踪的文件

git add sss.txt

将工作区的文件新建或修改添加到暂存区并跟踪

add**后红色字体变成绿色字体。表示**

git rm –cached sss.txt

后悔add的操作,将文件恢复到缓存区之外

git commit

将暂存区的文件提交到本地库

会进入一个vim文件让你填写提交信息。在行首写自己的提交注释 :wq 退出

git commit -m “我要写的注释” sss.txt

文件修改

对文件进行修改后也还需要添加到暂存区,然后提交

也可以不添加到暂存区,直接提交(无法撤回)

modified:**修改的**

git log

查看日志信息

git log --pretty=oneline 每条日志只显示一行

git log --reflog 另一种显示方式(显示指针)

git log --online

多屏显示:

空格向下翻页

b**向上翻页**

q**退出**

版本前进或后退

1. 基于索引值(常用) 2.基于箭头符号 3.使用~号

git reset --hard 2da6gf 根据索引回退版本

随意根据版本号进行跳跃

git reset --hard HEAD^**根据^的量来确定后退几步(只能回退)**

git reset --hard HEAD~5**根据数值来确定后退几步(只能回退)**

reset**命令的三个参数对比**

--soft 仅仅在本地库移动指针

--mixed 在本地库移动指针,重置暂存区

--hard 在本地库移动指针,重置工作区和暂存区

永久删除文件找回

所有的文件操作在git中都有记录,通过记录可以回退

使用版本回退,即便是在提交到本地库后依然可以回退

已经提交**: git reset --hard 版本号**

如果还没有提交到本地库只添加到暂存区

还未提交**:git reset --hard HEAD 来进行恢复**

使用前提,文件存在时的状态是提交到本地库

比较文件

git diff ss.txt 直接使用是在工作区和暂存区的比较

git diff HEAD ss.txt 和本地库中的版本进行比较

git diff HEAD^ ss.txt 和本地库的历史版本进行比较

不带文件名可以比较多个文件

GIT**分支:**

在版本控制过程中,使用多条线同时推进多个任务

master**:主干分支**

创建新的分支,分支内容是从主干中拉取过来的

分支开发完成可以合并到主干

好处:1同时推进多个功能的开发,提高开发效率

2**彼此无影响,一个分支失败和其他分支**

分支操作:

git branch -v 查看所有分支

git branch sss 创建分支

git checkout sss 切换分支

get merge sss 合并分支

合并分支:

1, 切换到要接收合并的分支

2, 执行merge命令

合并时产生冲突:

产生冲突:提示合并失败

解决:

1, 删除特殊符号

2, 修改文件到自己决定的状态

3, git add sss 添加冲突文件(还未合并成功)

4, git commit 提交冲突解决,不能带文件名

GIT**基本原理使用Hash SHA1算法**

Hash**算法:明文----hash-----à密文(是一个系列的算法)**

HASH**特点:**

1. 不管输入的数据有多大,得到的加密结果长度固定(MD5)

2. hash**算法确定,输入数据确定,则输出的数据也是确定得**

3. hash**算法确定,输入有变化,输出则一定有变化,且很大**

4. hash**算法不可逆,不能根据密文推出明文**

创建远程库GitHub

git remote -v 查看远程仓库及别名

git remote add sss http://ss**添加新的远程仓库及别名**

推送:

git push mysss master 推送 某分支的本地库到远程库

克隆:

git clone http//sss

把远程库clone到本地

创建远程地址别名

初始化本地库

添加参与者:

settings->Collaborators->**输入gitHub账号->复制链接并发送**

拉取操作pull: fetch+merge

git fetch myrep master : fatch**操作下来作为另一个分支存放**

fatch**后可以先查看一下再合并**

git merge new/master :**merge** 将fatch下来的分支合并到本地

git pull myrep :远程拉取=fetch+merge

远程协作冲突:

如果遇到远程已存在和自己冲突的版本

1. pull**远程版本**

2. 编辑修改有冲突的文件

3. 添加到暂存区

4. 提交(不带文件名)

5. push**当前解决了冲突的版本**

跨团队协作:

fork**: 复制另外一个团队的远程库**

对fork过来的远程库完成后

1.**发送pull request->new pull request->create pull request**

2.**接收pull request->审核代码->Merge pull request**

感谢您的阅读
文章由作者个人总结,欢迎指出文章错误



上一篇:JAVA集合

下一篇:JS正则表达式