git开发管理(【Git】全面详细了解开发者必备工具Git(2.0))
✍️ 作者简介: 前端新手学习中 。
💂 作者主页: 作者主页查看更多前端教学
🎓 专栏分享:css重难点教学 Node.js教学 从头开始学习 ajax学习
学习目标
能够掌握Git基本命令的使用 能够使用Github创建和维护远程仓库 能够掌握Git分支的基本使用起步——关于版本的控制
文件的版本
版本控制软件
使用版本控制软件的好处
版本控制系统的分类
本地版本控制系统
集中化的版本控制系统
分布式的版本控制系统
Git基础概念
什么是Git
Git是一个开源的分布式版本控制系统 ,是目前世界上最先进 ,最流行的版本控制系统 。可以快速高效地处理从很小到非常大的项目版本管理 。
特点:项目越大越复杂 ,协同开发者越多 ,越能体现出Git的高性能和高可用性 。Git的特性
Git之所以快速和高效 ,主要依赖于它的如下两个特效:
直接记录快照 ,而非差异比较 。 近乎所有操作都是本地执行SVN的差异比较
传统的版本控制系统是基于差异的版本控制 ,它们存储的是一组基本文件和每个文件随时间逐步累计的差异 。
Git的记录快照
Git快照是在原有文件版本的基础上重新生成一份新文件 ,类似于备份 ,为了效率 ,如果文件没有修改 ,Git不再重新存储该文件 ,而是只保留一个链接指向之前存储的文件 。
近乎所有的操作都是本地执行
Git中的三个区域
使用Git管理的项目,拥有三个区域 ,分别是工作区 ,暂存区,Git仓库 ,这三个工作区还对应了三种状态 ,分别是已修改 ,已暂存 ,已提交 。
基本的Git工作流程
在工作区中修改文件 。 将你想要下次提交的更改进行暂存 。 提交更新 ,找到暂存区的文件 ,以快照形式永久存储 。安装并配置Git
下载
下载地址
一直点下一步 ,安装就可以了 。
安装成功
配置用户信息
安装完Git之后 ,要做的第一件事就是设置自己的用户名和邮件地址 ,因为通过Git对项目进行版本管理的时候 ,Git需要使用这些基本信息 ,来记录是谁对项目进行了操作。
我们进行全局配置用户名和邮箱 ,(配置一次就好,用户名邮箱自定义即可不用跟什么一样 ,只是提交版本的时候展示的相关信息而已)
通过 全局配置的用户名和邮箱地址 ,会被写入到C:/Users/用户名文件夹/.gitconfig文件中,这个文件是Git的全局配置文件 ,配置一次即可永久生效 。
可以使用记事本打开此文件 ,来查看对Git进行了哪些全局操作 。通过命令快速检查用户配置信息
除了使用记事本查看全局的配置信息外 ,还可以运行如下的终端命令 ,快速的查看Git的全局配置信息。
查看所有的全局配置项
git config --list --global查看指定的全局配置项
git config user.name git config user.emailGit的操作与使用
获取帮助信息
可以使用git help 命令 ,无需联网即可在浏览器中打开帮助手册 ,
例如:
查看config命令相关信息会弹出浏览器 里面有详细的命令教学 。
也可以 使用 git config -h 来在终端中弹出简介帮助 。获取Git仓库的两种方式
将尚未进行版本控制的本地目录转换为Git仓库 从其他服务器克隆一个已存在的Git仓库以上两种方式都能够在自己的电脑上得到一个可用的Git仓库 。
在现有目录中初始化仓库
如果自己有一个尚未进行版本控制的项目目录 ,想要用Git来控制它 ,需要执行如下两个步骤:
3. 在项目跟目录中 ,通过鼠标右键打开“Git Bash ” 。
4. 执行 git init命令将当前的目录转化为Git仓库 ,
git init命令会创建一个名为.git的隐藏目录 ,这个.git目录就是当前项目的Git仓库 ,里面包含了初始的必要文件,这些文件是Git仓库的必要组成部分 。
工作区中文件的四种状态
工作区中的每一个文件可能有四种状态 ,这四种状态共分为两大类 。
Git操作的最终结果:让工作区中的文件都处于“未修改 ”的状态 。
检查文件的状态
可以使用git status命令查看文件处于什么状态 。 查看指定文件状态 git status 文件名 查看所有文件状态 git status 查看所有文件状态(方便显示) git status -s ``` untracked files 表示未被跟踪的文件 ,下面显示gehangbianhuan.html,表示此文件未被跟踪 ,意味着Git之前的快照提交中没有这个文件夹 ,Git不会自动纳入跟踪范围 ,除非明确地告诉它 ,我需要使用git跟踪管理该文件 。 **用简洁的方式检查文件状态** ```sql git status -s跟踪新文件
使用命令git add开始跟踪一个文件 ,git add <文件名> ,跟踪之后我们可以在使用git status命令来查看 。
跟踪指定文件 跟踪之后自动添加到暂存区 修改文件后执行此命令放到暂存区
git add 文件名
//跟踪全部文件
git add.
提交所有被删除和修改的文件到数据暂存区
git add -u 等价于 git add –update
提交所有被删除 、被替换 、被修改和新增的文件到数据暂存区
git add -A 等价于 git add –all表示文件已经暂存 。
显示文件
显示文件 ls 显示所有文件 包括隐藏 ls -a 查看文件内容 cat 文件名提交更新
现在暂存区中有一个gehangbianhuan.html文件等待被提交到Git仓库中进行保存 。可移植性git commit命令进行提交 ,其中-m选项后面是本次的提交消息 ,用来对提交的内容做进一步的描述。
使用git status命令再次查看文件状态
显示没有任何的修改 ,没有任何文件需要提交 。
对已提交的文件进行修改
目前 ,gehangbianhuan.html文件已经被Git跟踪 ,并且工作区Git仓库中的gehangbianhuan.html文件内容保持一致 ,修改了工作区中gehangbianhuan.html的内容之后,再次运行git status命令 ,会看到如下内容 。
文件被跟踪了 ,跟踪了然后咱们修改了文件,所以提示修改了但是没有暂存。
暂存和提交已修改的文件
目前 ,工作区中的gehangbianhuan文件已经被修改 ,如果要暂存这次数据 ,我们还得需要git add这个命令 ,这个命令其实是多功能命令 ,主要有以下三个功能 。
可以用他来跟踪文件 ,跟踪文件后会暂存当前内容 。 跟踪文件修改之后 ,我们可以再次使用这个命令进行暂存 。 把有冲突的文件标记为已解决文件 。我们这里就是用的第二个功能 。 使用git commit 再次提交文件
撤销对文件的修改
撤销对文件的修改指的是:把对工作区中对应文件的修改 ,还原成Git仓库中之前保存的版本 。
撤销对文件的修改 (没有提交到暂存区)
git checkout – 文件名
操作的结果:所有的修改会丢失 ,且无法恢复!危险性比较高 ,请慎重操作!我们先对文件进行修改 ,修改保存后 ,撤销掉之前的修改,类似于撤回 ,它会选择git中提交的最新版本 ,覆盖工作区中的修改 。
向暂存区中一次性添加多个文件
如果需要被暂存的文件个数比较多,可以使用如下的命令 ,一次性将所有的新增和修改过的文件加入暂存区 。 命令:git add .(点) ,使用此命令可以将当前文件内的所有文件添加到暂存区 ,这个命令很常用 。
新建了三个文件 ,并没有跟踪放到暂存区 。 我们全部跟踪并放到暂存区 。
取消暂存的文件
如果需要从暂存区中移除对应的文件 ,可以使用如下的命令:
git reset <文件名> 。如果取消所有文件 ,同样是用.(点)。
取消暂存的文件
git reset <文件名>
取消所有暂存的文件
git reset .
将文件从暂存区移除 ,同时取消跟踪
git rm --cached 文件名跳过使用暂存区域
Git标准的工作流程是工作区→暂存区→Git仓库
,但有时候这么做略显繁琐 ,此时可以跳过暂存区 ,工作区中的修改提交到Git仓库 ,这时候Git工作的流程简化为了工作区→Git仓库 。
Git提供了一个跳过使用暂存区域的方式 ,只要在提交的时候,给git commit加上-a选项 ,Git就会自动把所有已经跟踪过的文件暂存起来一并提交 ,修改的文件从而跳过git add步骤 。移除文件
从Git仓库中移除文件的方式有两种
从Git仓库和工作区中同时移除对应的文件
git rm -f index.js
只从Git仓库中移除指定的文件,但保留工作区中对应的文件
git rm --cached index.js
解析:两个绿色的D表示被打上了删除标记 ,当下一次提交的时候就会从仓库中删除 ,js文件执行命令后工作区中的js文件被删除 ,仓库中的js被打上了删除标记 ,css执行命令后 ,css被打上了删除标记 ,工作区中的css没被删除而是显示了未跟踪状态 ,但我们使用提交命令(提交所有被跟踪过的文件)后 ,就将打上删除标记的两个文件从仓库中删除了 ,index.css没有被跟踪 ,所以提交命令没有做任何的提交操作。
3. 删除文件夹 git rm -r 文件夹名 --cached都需要进行一次新的提交才会进行删除仓库文件 第一次会删除工作区中的文件 然后给要删除的仓库文件打上删除记号
忽略文件
一般我们总会有些文件无需纳入Git的管理 ,也不希望它们总出现在未跟踪文件列表 。在这种情况下 ,我们可以创建一个名为.gitignore的配置文件,列入要忽略的文件的匹配模式 。
文件 .gitignore的格式规范如下:
以#开头的是注释 以/结尾的是目录 以/开头防止递归 以!开头表示取反 可以使用glob模式进行文件和文件夹的匹配(glob指简化了的正则表达式)
详情请看:
正则表达式详情
注意:命名文件的时候不能有文件名只能有后缀名新建了个test
我们查看文件状态 发现没有 说明忽略成功了
查看提交历史
如果希望回顾项目的提交历史 ,可以使用git log这个简单且有效的命令 ,
查看本地仓库提交历史 只能显示到当前主分支
git log
查看本地仓库的代码操作历史
git reflog按q即可退出查看 。
vim
提交没写上相关信息,vim系统 误入 摁i键切换成插入模式 可以进行书写 退出的话 摁esc 然后冒号 wq退出回退到指定的版本
这个回退是回退到工作区 回退到上一次的提交版本 git reset --hard HEAD^ 回退到前两次的提交版本 git reset --hard HEAD^^ git reset --hard HEAD~2 回退版本之后本地代码也会相应进行回退 , 如果想要退回去 我们可以通过 git reflog查看之前的版本号 然后再使用 git reset --hard 版本号 下面这个回退是回退到暂存区 比如说你提交信息写错了想重新写可以进行回退 重新提交写好提交信息 本地文件不会改变 ,回退到提交到暂存区时的状态 git reset --soft HEDA //下面这个回退 是撤销 版本 同时会生成一个新的版本 比如 git reyert HEAD 撤销当前版本 那么本地内容就会回退到上个版本 同时当前版本还会存在 并且还会生成一个新的版本 需要你在vim中填写版本信息 也可以在HEAD后面书写 意思就是说 假如你的当前版本是2 撤销当前版本 会让你的本地文件内容回退到版本1 同时会生成一个版本3 版本一和版本3的内容是相同的 ,版本2不会消失 。 撤销当前版本 就相当于把上一个版本重新发布了一次 git reyert HEAD 版本号(前六个字)远程仓库操作
添加远程仓库 git remote add origin(别名) 仓库地址 查看远程仓库 git remote -v 复制远程仓库代码 git clone 仓库网址 删除创建的别名 git remote remove origin别名 将本地仓库 上传到 远程仓库 git push origin(别名) master:master(将本地主分支master上传到远程主分支master ,可以直接简写成master(类似对象属性的简写)) 加上-f 为强制提交 慎用 我们还可以 git push -u origin(别名) master 将 -u 后面两个变量变成了默认值 ,以后可以直接git push 默认就是 -u设置的内容注册
注册一个github或gitee ,gitcode等任意账号 ,操作流程页面UI几乎都是没区别的 ,注册完之后创建一个仓库 。这里就不演示了 。
拉代码和复制的区别 git clone和git pull的主要区别在于它们的目的 。如果你想要完整地复制一个存储库到本地计算机 ,则应该使用git clone 。如果你只想要获取最新的更新 ,则应该使用git pull 。小结
初始化Git仓库的命令 git init 添加到暂存区 git add . 查看文件状态的命令 git status git status -s 一次性将文件加入暂存区的命令 git add 将暂存区的文件提交到Git仓库的命令 git commit -m “ ”提交信息“ ”分支
创建查看切换分支
查看本地分支 git branch 查看所有分支 git branch -a 常看所有远程分支 git branch -r 创建分支 创建后当前分支不会改变 不会切换到新分支 加上-b会切换到新分支 中括号是可选 创建一个新分支会将当前分支的内容复制一份儿 , 后续的修改两个分支互不影响 git branch【-b】 分支名 切换分支 每次切换分支之前记得先提交到仓库 不要忘了 git checkout 分支名合并分支
a如果要把b的内容合并过来 那么久切换到a分支 使用git merge 分支b git merge 合并到的分支名删除分支
合并分支后 内容一样 可以删除一个分支 git branch -d 分支名 删除远程分支 git push origin --delete 分支名分支合并冲突问题
不同分支修改了同一文件的同一行代码才会产生冲突 ,但是还有其他原因:不同分支修改的是同一文件的相邻行 。这也会产生冲突 。总之同一个文件 尽量不要再不同分支中同时修改 。 当你在两个分支中修改相同文件的话,就会遇到冲突问题 ,不知道应该采取谁的内容 ,需要手动解决。 首先 a b分支都对相同文件的内容进行了的修改 然后我我们执行git merge 分支b 将b分支合并到a分支 就会产生冲突 就会是一个冲突状态 需要我们打开文件夹 进行手动选择 这时候的冲突文件会有两边双方的内容 需要将不需要的内容删除保留下想要的内容 。 然后再次提交add,上传commit即可 。 a 分支就是筛选后的内容 b分支还是原来的内容团队协作
a和b两个合作开发人员 都从gitee上面复制了一个项目 , b先完成了自己添加的部分 然后上传了 上去 ,上传成功了 ,等a完成了自己添加的部分上传的时候 上传失败了 ,因为现在的远程仓库之前被更新了 ,和你当时使用的内容不一样 ,所以我们需要养成一个习惯 在push之前先pull更新一下 ,再次提交就好了 ,如果pull的时候遇到代码冲突 ,就再手动解决一下就好。
团队协作的分支管理
上传本地其他分支到远程仓库中 需要切换到当前分支
git push origin 分支名:分支名(如果名称相同可简写成 分支名)克隆只能克隆主分支 我们可以pull将远程仓库其他分支拉去到本地仓库
git pull origin 分支名:分支名(如果名称相同可简写成 分支名)
拉去完远程仓库分支之后 我们可以直接切换 git checkout 分支 他就会根据远程仓库的分支弄到本地仓库删除远程分支
git push origin --de lete 分支名
也可以上传到一个空分支就等同于删除
git push origin :分支名跨团队协作
在网页中先fork一个相同的项目 , 然后进行本地的代码修改 并上传到远程 ,然后再将自己的修改pull requests 发送请求给原创作者
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!