博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Git学习之路
阅读量:6978 次
发布时间:2019-06-27

本文共 2795 字,大约阅读时间需要 9 分钟。

Git是目前世界上最先进的分布式版本控制系统。

Git同时也是Linus改变世界的第二大创举。

关于分布式和集中式的区别,可以看一下这篇文章

一.名词解析

1.工作区

文件所在的文件夹

2.版本库

文件夹中含有.git的隐藏文件夹。

此处输入图片的描述

通过add添加的文件被添加到暂存区,commit提交后,把暂存区的所有内容提交到分支上。

二.基本操作

1. 用户配置

git config --global user.name "hope"git config --global user.email "12332@qq.com"

配置级别

--local 默认,高优先级 只影响本仓库 .git/config
--global 中优先级,影响到所有当前用户的git仓库 ~/.gitconfig
--system 低优先级 影响到全系统的git仓库 /etc/gitconfig

2. 初始化仓库

git initgit status //查看仓库状况

git status对状态的跟踪,包括内容状态:工作目录、暂存区、提交区

文件状态:未跟踪和已跟踪

3. 添加文件到Git仓库

分两步

第一步,使用命令git add<file>或者git add --all,注意,可反复多次使用,添加多个文件;

第二步,使用命令git commit,完成。-m后面输入的是本次提交的说明

4. 版本回退

每次commit作为一次快照

git log //可以查看历史记录git log --pretty=oneline //版本ID一行显示git reset --hard HEAD^ //会退到上一个版本git reset --hard commit_id //退到指定ID版本

上一个版本就是HEAD^,上上一个版本就是HEAD^^,往上100可以写成HEAD~100

有时由于回退到之前的版本,原来的新版本就没有显示了,此时可以使用

git reflog

进行查看ID,然后进行回退。

5. 修改和撤销

如果想要修改的文件被记录在版本库里,add之后需要commit,不然不会记录之前完成的修改过程。

如果想撤销修改的话,

git checkout -- file

如果文件还没有add到暂存区的话,就会与版本库里的相同。如果文件在暂存区的话,撤销修改就回到添加到暂存区后的状态。让这个文件回到最近一次git commit或git add时的状态。

撤销暂存区的内容
git reset HEAD 

将文件内容从上次提交复制到暂存区

撤销全部改动
git checkout HEAD --
//将内容从上次提交复制到工作目录

6.删除文件

直接在文件里面删除文件或者使用rm file进行删除

a.如果需要从版本库中删除该文件

git rm file  //从暂存区与工作目录删除git commit -m "remove file"
git rm --cached //仅从暂存区删除git rm $(git ls-files --deleted) //删除所有被跟踪但是在工作目录被删除的文件

b.删除错了,恢复

git checkout -- file

这样做可以恢复文件到最新版本,但是最近一次提交后的修改将会丢失。

三.远程仓库

为使本地的Git仓库与GitHub仓库之间关联,需要做一些前期工作。

1. 先有本地库后有远程库

a. 创建SSH Key。
ssh-keygen -t rsa -C "youremail@example.com"
b. 添加id_rsa.pub内容

登陆GitHub,打开“Account settings”,“SSH Keys”,“Add SSH Key”,粘贴id_rsa.pub里面的内容

这样你在电脑就可以推送到github上的仓库了。

c.在GitHub上创建仓库
d. 推送内容
git remote add origin git@github.com:github账户名/仓库名称.git

下一步,把本地库的所有内容推送到远程库上:

git push -u origin master

之后进行推送的时候就可以不用加上-u,直接使用

git push origin master

2.先有远程库,后有本地库

从一个远程库进行clone

git clone git@github.com:GitHub账户名/项目名.git

四. 分支管理

1.关于分支的管理

a. 创建分支
git checkout -b dev

等价于

git branch devgit checkout dev

查看分支

git branch

切换分支

git checkout master

合并分支

git merge dev

删除分支

git branch -d dev

2. 解决冲突

Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。

git log --graph命令可以看到分支合并图。

3. 分支管理策略

用Fast forward模式,删除分支后,会丢掉分支信息。如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,可以从分支历史上就可以看出分支信息。

git merge --no-ff -m "merge with no-ff" dev

4. Bug分支管理

需要尽早完成bug的修理,但是分支上的工作只是工作到一半,这是我们可以使用

$ git stash

保存工作,然后在master分支上创建分支修复。

修完bug后有两种方法进行修复

git stash apply  //stash内容不删除git stash pop //恢复的同时也把stash的内容给删除了

由于dev分支上没有bug修复的代码,所以可以切换到dev分支上,然后

git merge master

5. feature分支

有时需要丢弃新的feature,所以使用强行删除

git branch -D feature-vulcan

6. 多人协作

a. 克隆分支

可以使用git remote参看远程库的信息

b.推送分支
git push origin dev

约定在dev分支上开发,就必须创建远程origin的dev分支到本地,创建本地dev分支:

$ git checkout -b dev origin/dev
c. 抓取分支
git pull

如果推送失败的话,可能原因是没有指定本地dev分支与远程origin/dev分支的链接

git branch --set-upstream branch-name origin/branch-name

五.参考资料

转载地址:http://yfypl.baihongyu.com/

你可能感兴趣的文章
IOS获取焦点页面上移问题
查看>>
深入解析Angular Component的源码示例
查看>>
7 种 Javascript 常用设计模式学习笔记
查看>>
日本戏精程序员:为自己搭建相亲网站,一人分饰三十角
查看>>
vue 集成富文本tinymce
查看>>
《Java编程思想》笔记13.字符串
查看>>
详解数组中的reduce方法
查看>>
do一下来了一个redux
查看>>
快应用开发常见问题以及解决方案【持续更新】
查看>>
通过一个案例理解 JWT
查看>>
Node.js安装
查看>>
在typescript中导入第三方类库import报错
查看>>
AndroidApplication优化解耦
查看>>
[Vue CLI 3] 源码之 webpack-chain
查看>>
《JavaScript高级程序设计(第3版)》教程大纲
查看>>
spring cloud服务发现注解之@EnableDiscoveryClient与@EnableEurekaClient
查看>>
一个高仿追书神器的vue阅读器。已成功做成app
查看>>
阿里90后工程师利用ARM硬件特性开启安卓8终端“上帝模式”
查看>>
win10 spark+scala+eclipse+sbt 安装配置
查看>>
JS+CSS3 360度全景图插件 - Watch3D.js
查看>>