Git简单介绍
-
什么是Git
- Git是一款源代码管理工具(版本控制工具)
什么又是源代码:凡是由我们手写的代码都称之为源代码
-
源代码有必要管理起吗?
有必要,因为人工的去处理不同的版本,做相应备份会比较麻烦。
Git是linux之父当年为了维护linux---linus之前也是手动维护合并把文件发给Linus
集中式和分布式
集中式:Svn
分布式:Git
Git命令使用
Git初次使用添加用户名和邮箱
配置用户名:git config --global user.name "你的用户名"
配置邮箱 :git config --global user.email "你的邮箱"
删除错误配置 :git config --global --unset "错误的key删除掉"
查看配置 :git config --list
去任何一家公司现完成上面的步骤
初始化一个空的仓储
初始化空仓储:git init
这个命令会在当前目录中新建一个隐藏的名为.git的文件夹,里面存储的是项目的各个版本。
千万不要更改.git目录里文件。
查看当前目录文件的状态
-
命令 : git status
- 查看当前工作目录的状态,是已经放到暂存区,还是提交到仓库了。
-
或命令: git status -s
- 查看简要的状态信息
将文件添加到暂存区
-
命令: git add ./file.txt
- 将当前目录中的file.txt添加到暂存区
-
或者: git add .
表示将当前目录所有文件都添加的暂存区.
这是批量添加.
可以对文件执行多次add命令,都会把最新的修改添加到暂存,但是,后页面执行add命令,会把前面执行add命令添加到暂存区的文件覆盖(相同的文件会覆盖)
将文件添加到仓储中
-
命令 : git commit -m "这次我添加了一个变量"
-m 表示需要指定一个字符串,表示本次提交的代码与上一次相比多了哪些功能,或者是做了哪些修改。
每次提交时都需要写上相应的字符串以做出说明
或命令: git commit -m -c
-c 表示可以在提交时,不提供说明。
不推荐这么做,不利于后期代码维护
提交时只是提交暂存区的代码,没有添加到暂存区的代码不会提交
查看日志
命令:git log
或命令:git log --oneline
以图形化查看:git log –graph
忽略文件
不要省略/ 除非有必要
需要新建一个名为: .gitignore 的文件
-
这个文件话.git同级目录.
该文件用来告诉我们的git哪些文件不要被添加一仓储中。
忽略某个目录: /node_modules
忽略某个文件: /css/my.css
忽略某一类文件: /css/*.css
忽略目录下所有文件: .
忽略所有名为node_modules的目录: node_modules
‘#’号表示注释
版本回退
-
命令:git reset --hard Head
回到最近一次提交的版本的文件状态
git指向的是上一次提交
'git reset --hard Head^^ 表示回到最近往前第二次的提交'
Head后面的^表示回退到第几次
-
命令: git reset --hard Head~1
表示回到最近一次提交的前一次提交.
Head~2,回退到最近一次提交的前2次提交.
-
命令: git reset --hard [版本号]
示例: git reset --hard 12dad211
回退到某个具体的版本。
可以配合git reflog命令查看历史操作来进行回退
这里进行版本回退,并不会对文件进行真实的删除
通过git reflog 可以查看到每一次对版本的切换来提交。
-
创建Git分支,并切换分支
- 正在做功能呢,才做了一半,但是为了不丢失代码要提交,又不能影响别人工作。
-
查看有多少分支
- git branch
-
命令: git branch dev
- 创建了一个名为dev的分支
-
命令: git checkout dev
- 切换到dev分支
-
创建并切换到指定分支
- git checkout -b dev
合并Git分支
画图
-
命令: git merge dev
表示将当前分支与dev分支合并
在主分支下执行合并命令.
-
命令: git branch -d dev
表示删除dev分支,当合并分支后,如果不需要再使用dev分支,则可以直接删除。
不要在dev分支执行这个命令,在别的的分支执行.
-
解决冲突
应该是如何合并冲突。
冲突是不可避免的。
当在新功能完成后合并前,修改并提交了主分支对应的文件,合并时两个分支中的文件有冲突。
手动修改文件,然后提交
Git原理以及常用步骤
Git内部结构
为了更好的学习Git,我们们必须了解Git管理我们文件的3种状态,分别是已提交(committed)、已修改(modified)和已暂存(staged)
,由此引入 Git 项目的三个工作区域的概念:Git 仓库、工作目录以及暂存区域。 Git仓库目录是Git用来保存项目的元数据和对象数据库的地方。 这是Git 中最重要的部分,从其它计算机克隆仓库时,拷贝的就是这里的数据。 工作目录是对项目的某个版本独立提取出来的内容。 这些从Git仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。 暂存区域是一个文件,保存了下次将提交的文件列表信息,一般在Git仓库目录中。有时候也被称作“索引”(Index),不过一般说法还是叫暂存区域。-
基本的Git工作流程如下:
1、在工作目录中修改文件。
2、暂存文件,将文件的快照放入暂存区域。
3、提交更新,找到暂存区域的文件,将快照永久性存储到Git仓库目录。
git本地基本操作步骤
-
1.新建一个项目文件夹,进行文件夹中,打git bash执行命令: git init
初始化一个git仓储,其实就是一个隐藏的.git文件夹
不要轻易改变里面文件
-
2.开始新文件,写我们的代码,写完一个功能,执行命令:git add [文件路径]
示例:git add ./READEME.md
表示要把相应的文件添加到暂存区,暂存区和仓储其实都在.git目录中
批量添加 git add . 或者 git add *
-
3.把添加到暂存区的文件提交到仓储中.
命令: git commit -m "这时写类似注释的东西"
注意:在提交之前需要配置个人信息 git config --global user.name "xiaoming"
git config --global user.email "xiaoming@sina.cn"
4.所有需要备份或者提交的文件及目录都必须在.git所在目录。不要超出.git所在目录
x: 在这几步前后,都可以执行命令:git status
- 撤销操作
- 撤销已修改状态 git checkout -- 文件路径
撤销addgit status 先看一下add 中的文件 git reset HEAD 如果后面什么都不跟的话 就是上一次add 里面的全部撤销了 git reset HEAD XXX/XXX/XXX.html 就是对某个文件进行撤销了
撤销 commitgit reset HEAD
Git网上操作
-
gitHub、gitLab和国内的git网站
-
git clone
命令:'git clone [仓储地址]'
会把指定仓储的整个下载来
如果不需要下载整个仓储,只需要最新的一次提交,加上参数--depth
登录
直接通过账号密码登录,太麻烦了
-
通过SSH登录,不用在输入用户名和密码
1.在任意位置输入 ssh-keygen -t rsa 创建rsa密钥
2.将rsa密钥给网站
3.选clone路径的时候选择ssh登录
push(推送)
命令:git push [地址] master
或命令:git push origin master
pull(拉回)
命令:git pull [地址] master
或命令:git pull origin master
remote命令使用
git remote add “主机名称” “远程仓库地址”添加远程主机,即给远程主机起个别名,方便使用
git remote rm“主机名称” 命令用于删除远程主机。
git remote 可以查看已添加的远程主机
git remote show “主机名称”可以查看远程主机的信息