目录
一.git介绍
git是由Linux之父开发的,起初只是为了linux内核开发的方便,linux之父被逼无奈,花了两周时间使用c语言写了个git出来,直至2008年,github网站的上线,为无数开源项目免费提供git存储,git迅速成为了最流行的分布式版本控制系统
为什么要使用git,git能做什么
传统文档管理
大学改论文的时候,论文命名方式从论文.doc->论文_改1.doc->论文_改改改改.doc这种命名方式
就像这样子一样,当你使用过git之后,你可以非常简洁的管理你的所有版本的论文,在仓库区都有唯一的版本号,非常容易地进行版本控制功能。
源代码管理的好处
多人协同开发
在git中会有客户端与服务器之分,当多人协同开发的时候,就可以使用git服务器,所有人都可以使用本地git与服务端git进行通信,把自己完成的工作上传到git服务器上,从git服务器中下载所需要的内容。
版本控制
git的版本控制功能不仅仅局限于一个文件之中,同样可以对于整个文件夹,对于整个项目进行版本控制,通过分支的操纵灵活的完成大型项目的工作。
git工作流程图
二.git安装步骤(windows版)
1.从官网下载
Githttps://git-scm.com/2.双击打开一直点next即可,也可以进行自定义一些参数
3.在开始菜单中找到git bash的那个,打开
4.成功喽
三.使用
1.初始化仓库
我们可以新建一个文件夹,进去之后右键点击git bash where(在这里打开git)
输入命令git init
后面有蓝色字体(master代表仓库的主分支,也是一个仓库最明显的特征)
初始化仓库之后会建立一个.git的隐藏文件,里面存储着版本控制的一些信息(不要动它,动谁都不要动这个文件)
2. git简单的初始化命令操作
1.在目录下随意新建一个文件
$ touch readcoment.txt
2.查看文件的状态
$ git status
在git中,查看文件状态时,使用不同的颜色区别不同的状态,状态如何改变,请接着看
红色:工作区
绿色:暂存区
白色:仓库区
配置个人信息
--global参数改变全局信息,如果不加这个参数,代表配置的是本项目的个人配置信息
配置个人信息是为了之后连接远程数据使用的一个身份,git本身就是为了团队合作写代码提高效率所开发的,所以git会有服务器端,就像是github,gitee一样。这些配置信息都会保存在.git下
3.文件状态的转变
将文件添加至暂存区
$ add 目录或文件名
将文件添加到仓库区中
$ git commit -m "这是备注"
在git三个分区中,你一直工作在工作区中,当工作没有完成需要离开时,可以把手头的工作提交到暂存区,当工作彻底完成之后,再把整个项目提交到仓库区。提交至仓库区的时候,就代表此项任务已经完成,本次提交会对应一个版本号,用于版本控制等
4.查看git日志
$ git log
$ git reflog
reflog命令输出的内容比较简洁,并且可以查看到已经删除了的记录(推荐使用)
日志可以查看这个仓库在什么时间被谁干了什么事,便于项目出现问题是进行追踪问题。
5.版本回退
每次使用git commit命令把暂存区的内容提交至仓库区中就会生成一个对应的版本号,如果那次提交之后整个项目不可以使用了,或者不满意可以使用以上命令进行版本的回退,使用reflog查看版本信息时head对应的就是当前最新版本,最前面的一串字符串表示版本号
当然你现在只提交了一个版当然不可以无中生有呀,我们创建一个文件再提交一个版本,使用reflog
7284038表示是当前的版本号,想要改变为上一个版本可以使用以下命令,
此时在你文件夹下没有1.txt文件就会消失(谨慎操作)
6.修改版本库中的文件
如果你对文件readcoment.txt文件进行了修改,再去使用状态查看命令时
如果对已经提交的代码进行了修改的话,这些修改的文件会自动变为工作区状态,并且它会提示你怎么做可以把修改后的文件提交到仓库区
7. 撤销与修改
工作在工作区与暂存区之间(也就是说你这个任务没有完成的时候,没有提交到仓库区形成版本号的时候)
撤销暂存区的代码
将暂存区代码撤销到工作区
撤销工作区代码
也就是说通过reset HEAD,你可以把暂存区的内容保存至工作区,通过checkout可以清除工作区的内容,与版本库保持一致
8.比较文件的不同
对比仓库与工作区
$ git diff HEAD -- 文件名
对比仓库上个版本与工作区
$ git diff HEAD HEAD^ -- 文件名
当工作区文件与仓库文件一致时,不返回任何内容,如果不一致则返回文件哪里不一致
9.删除文件
删除工作区中的文件
直接删除即可
删除暂存区的文件
# 先将暂存区代码撤回工作区
git reset HEAD 文件名
# 然后直接删除即可
rm 文件名
删除已提交到版本库的
# 直接删除文件
rm -rf 文件名
# 提交当前代码
git add .
# 提交当前代码到版本库
git commit -m "备注"
3.git的远程操作
要实现多人合作完成 一个项目,或者你从一个地方迁移到另一个地方去工作,代码迁移都可以通过git服务器去完成,国内推荐使用gitee,相比github访问要快不少。
1.注册账号新建一个仓库
进入gitee官网进行注册登录,登陆完成后点击右上角加号新建仓库,只需要填写一下仓库名称就好了,点击创建
创建完成
2.把本地项目上传到git服务器
# 关联远程git仓库地址
$ git remote add origin 复制的地址
# 把本地文件推送到远程
$ git push -u origin "分支名称"
刷新gitee仓库界面,可以看到刚刚的本地文件已经上传成功
3.克隆仓库
$ git clone https://gitee.com/caiahao6/caiahao_day01.git
这个方法仅限于把远程的整个项目copy到本地,需要仓库地址
4.从远程仓库拉取更新到本地
$ git pull origin master
使用场景,当你的同事做完他的工作后,你可以使用拉去更新,把同事的代码拉取到本地
4.分支管理
正常的开发项目中都是多人协作,每个人的任务一般不会一天就完成,如果把没有完成的代码提交到远程仓库会影响被人工作。git提供了分支的功能就不用担心了,可以创建一个自己的分支,在上面干活,想提交就提交,等到工作完成再一次性合并到原来的分支。
1.创建分支
新建git仓库时会默认创建一个分支`master`,它叫主分支。一般情况我们不会直接在主分支上干活,它主要用来发布版本。
创建一个开发分支`develop`
git branch develop
再切换到`develop`分支
git checkout develop
Switched to branch 'develop'
这两天命令也可以通过一条命令来实现
git checkout -b develop
`-b`参数表示创建并切换。
使用`git branch`命令查看当前分支
git branch
* develop
master
2.合并分支
创建好`develop`分支后,你开始干活,完成上级领导交给你的任务,根据用户的手机壳颜色更换app主题,5分钟之后开发完毕
1.提交
$ git add change_theme.py
经过测试功能完成,现在我们要合并到`master`分支
首先切换到`master`
$ git checkout master
Switched to branch 'master'
查看工作区,你会发现刚才开发的功能文件没有了,不要惊慌,因为那个提交是在`develop`分支上,现在我们把`develop`分支的工作合并到`master`分支上:
$ git merge develop
`git merge`命令用于合并指定分支到当前分支。合并后,在查看文件夹发现,`change_theme.py`文件又回来了。
将分支上传到码云上:直接在分支中使用 git push -u origin develop
3.删除分支
合并完之后你也可以删除掉`develop`分支:
$ git branch -d develop
git push origin --delete develop
git常用命令
-
git init 初始化一个仓库 ,会将该目录下所有文件交给git管理
-
git status 查看当前版本管理状态
-
git add 文件1 文件2… 把有变化的文件(新增的、修改的、删除的) 添加到git暂存区里
git add . 将所有改变的文件统一 加入到暂存区里
-
git rm --cached 文件1 文件2 把暂存区中的文件从暂存区移除
-
git commit -m ‘提交描述’
-
git restore 文件1 文件 2 … 放弃文件的改变
-
git log 查看提交历史
-
git reflog 查看命令历史
-
git reset --hard commitid 恢复到指定版本
-
git remote add origin https://gitee.com/nieps/javademo.git 将本地仓库与远程仓库建立联系
-
git push -u origin master 将本地代码推送到远程 首次推送
-
git push -f origin master 强制推送本地代码到远程
-
git remote 查看远程分支的名称
-
git remote -v 查看远程分支的名称及远程仓库的地址
-
git remote rm 远程分支名称 删除要本地仓库与远程仓库的关联关系
-
git pull niu master 拉取远程服务器代码
-
git clone 远程分支地址 将远程代码克隆到本地
-
git 命令 --help 查看命令帮助
-
git branch 查看当前的分支
-
git checkout -b 分支的名称 创建并切换到分支上
-
git switch -c 分支名称 创建并切换到分支上
-
git branch -d 分支名称 删除分支
git branch 分支的名称 创建分支
git checkout 分支的名称 切换分支
-
git merge 分支名称 将分支中的内容合并到当前分支
-
git switch 分支名称 切换到分支上
-
git tag 标签名 创建一个标签 默认该标签指向最新的commitid
-
git tag 查看所有标签
-
git tag 标签名 commitid 给指定的commit打标签
-
git tag -d 标签名 删除标签
-
git push 远程分支名称 标签名 将指定标签推送到远程
-
git push 远程分支名称 --tags 将所有标签推送到远程
删除远程标签:
- 先删除本地 git tag -d 标签名
- 删除远程 git push 远程分支名称 :/refs/tags/标签名
-
git push origin(远程分支名称) 本地分支:远程分支 将本地的分支推送到远程分支
git branch -d 删除本地分支
git push origin(远程分支名称) --delete 远程仓库分支名称
-