【Git版本控制】Git版本控制工具使用说明和规范教程
windows环境下的Git版本控制工具使用说明和规范。
一、Git的安装与使用
1.1 前言
SVN是集中式版本控制系统,版本库集中放在中央服务器上,而干活时用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作。
Git则是分布式版本控制系统,即它就没有中央服务器,每个人的电脑就有一个属于自己的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。最终,各自将本地分支先合并,再将合并后的分支推向同名的远程库。
Git和GitHub的区别:Git是分布式版本管理工具,而GitHub是一个网站,可以在github上建立一个网上仓库,然后提交自己的代码到该网上仓库,这样你的每次提交,别人也都可以看到你的代码,同时别人也可以帮你修改你的代码,这种开源的方式非常方便程序员之间的交流和学习。
GitHub是一个非常适合程序员交流的网站,很多国际上的技术大牛都在github上有自己的开源代码,其他人只要申请个账号就可以随意的看到这些大牛写的程序。同时国内的很多互联网公司如百度,阿里等也在github上公布有开源的代码。
Git本地有三个工作区域:工作目录、暂存区、资源库。如果加上远程的Git库就可以分为四个工作区域
工作区(Workspace):就是平时存放项目代码的地方
暂存区(Index/Stage):用于临时存放对文件的改动,事实上就是一个文件,保存即将提交到文件列表信息
资源库(Repository):就是安全存放数据的位置,这里有你提交到所有版本的数据,期中
HEAD
指向最新放入仓库的版本远程仓库(Remote Directory):就是托管代码的服务器,简单地说就是项目组中的一台电脑用于远程数据交换
工作区、本地库、远程库三者之间的工作原理及流程如下图:
1.2 版本控制
- 日常生活中,在word里编辑文字,使用Ctrl + z撤销,或者点击撤销按钮,其实也是一个版本控制的例子
- 我们在开发中修改代码,问了避免出错,都将其先复制一份在进行代码的开发和修改,我们称之为版本更新,一般命名为v1.0 v1.1 ,大的版本变更则命名为 v2.0 v3.0。有必要,因为人工的去处理不同的版本,做相应备份会很麻烦。
- 对于git来说,版本控制功能更加强大,更加便于版本更新迭代的操作。
1.3 Git安装流程
初次接触Git的用户,请抽出几分钟时间看一下https://git-scm.com/docs 的介绍文档,相信磨刀不误砍柴工。
本文针对Window平台的Git客户端的安装和使用。
Git 下载地址:https://git-scm.com/downloads
window版本下载:https://git-scm.com/download/win
下载完成后,双击进行安装
安装 Git 并选择所有默认选项,安装完毕后,在系统的任意地方右键点击Git Bash Here在命令行工具中运行 git,如果显示使用信息,则安装完成。
1.4 Git初始配置
在开始使用 Git 之前,你需要配置 Git。在命令行工具中运行以下每行,确保所有选项都已被配置好。
# 设置你的 Git 用户名
git config --global user.name "<Your-Full-Name>"
# 设置你的 Git 邮箱
git config --global user.email "<your-email-address>"
# 确保 Git 输出内容带有颜色标记
git config --global color.ui auto
# 对比显示原始状态
git config --global merge.conflictstyle diff3
git config --list
Git 与代码编辑器
最后一个配置步骤是让 Git 能与你的代码编辑器结合使用。以下是三个最热门的代码编辑器。
#Atom Editor 设置
git config --global core.editor "atom --wait"
#Sublime Text 设置
git config --global core.editor "'C:/Program Files/Sublime Text 2/sublime_text.exe' -n -w"
#VSCode 设置
git config --global core.editor "code --wait"
1.5 Git工作流程
- 在工作目录中添加、修改文件;
- 将需要进行版本管理的文件放入暂存区域;
- 将暂存区域的文件提交到Git仓库;
- 提交到远程仓库中
因此,Git管理的文件有三种状态,已修改(modified)、已暂存(staged)、已提交(committed)。
二、Git的使用操作
序号 | Git命令 | 说明 |
---|---|---|
1 | git init |
初始化本地版本库。 |
2 | git status |
查看当前工作区和暂存区文件的状态。 |
3 | git add <file>... |
可以将文件添加到暂存区。 |
4 | git commit -m ' ' |
提交更新。 |
2.1 初始化Git仓库
- 这个仓库会存放,git对我们项目代码进行备份的文件
- 在项目目录右键打开 git bash
- 命令:
git init
2.2 Git用户信息配置
就是在git中设置当前使用的用户是谁
每一次备份都会把当前备份者的信息存储起来
命令:
- 配置用户名:
git config --global user.name "xiaoming"
- 配置邮箱:
git config --global user.email "xm@sina.com"
查看是否配置成功
- 配置用户名:
2.3 把代码存储到.git仓储中
工作区、暂存区以及版本库三者之间的关系。
工作区:就是你在电脑上看到的目录,比如目录testgit下的所有文件(.git版本库目录除外)。或者以后需要再新建的目录文件等等都属于工作区范畴。
暂存区(stage):工作区有一个.git隐藏目录,这个不属于工作区,这是版本库。其中版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有就是Git为我们自动创建的第一个master分支。
在Git中每次提交都分为两个步骤:
第一步:用add命令将文件添加到版本库的暂存区
第二步:用commit命令把暂存区的所有内容提交到当前分支上
- 把代码放到仓储的门口
git add ./readme.md
所指定的文件放到大门口git add ./
把所有的修改的文件添加到大门口
- 把仓储门口的代码放到里面的房间中去
git commit -m "这是对这次添加的东西的说明"
- add和commit合并写法 可以一次性把我们修改的代码放到版本库
git commit --all -m "一些说明"
—all 表示是把所有修改的文件提交到版本库
git add ./readme.md // 添加暂存区
git commit -m '提交更新说明' // 提交更新
git status // 查看当前状态
2.4 查看当前状态
当暂存区域已经准备妥当可以提交时,在此之前,请一定要确认还有什么修改过的,或新建的文件还没有git add
到暂存区,否则提交的时候不会记录这些还没暂存起来的变化。
所以,每次准备提交前,先用git status
查看下,需要提交的文件是不是都已暂存起来了,然后再运行提交命令git commit -m '备注信息'
。
- 可以用来查看当前代码有没有被放到仓储中去
- 命令:
git status
2.5 git中的忽略文件
- .gitignore,在这个文件中可以设置要被忽略的文件或者目录。
- 被忽略的文件不会被提交仓储里去.
- 在.gitignore中可以书写要被忽略的文件的路径,以/开头,
一行写一个路径,这些路径所对应的文件都会被忽略,
不会被提交到仓储中- 写法
/.idea
会忽略.idea文件/js
会忽略js目录里的所有文件/js/*.js
会忽略js目录下所有js文件
- 写法
2.6 查看提交的日志
git log
查看历史提交的日志git log --oneline
可以看到简洁版的日志
2.7 回退到指定的版本
git reset --hard Head~0
- 表示回退到上一次代码提交时的状态
git reset --hard Head~1
- 表示回退到上上次代码提交时的状态
git reset --hard [版本号]
- 可以通过版本号精确的回退到某一次提交时的状态
git reflog
- 可以看到每一次切换版本的记录:可以看到所有提交的版本号
注意:通过版本号回退到例如第一版,在想退回到第五版时,需要提前记住版本号,这时在第一版打印
git log
历史记录提交日志,是看不见后面的版本记录的。但也不必过于担心,可以通过git reflog
查看版本的切换记录从而得到版本号
2.8 Git分支
Git之所以能实现分布式版本控制,就是基于其分支管理策略。本地库所做的操作都是在某分支上进行的,不同分支之间可以合并。可以拉取远程分支到本地,也可以推送本地分支到远程。
git branch <branchName> #创建新的分支
git branch -d <branchName> #删除已有分支
git checkout <branchName> #切换到其它分支上
git checkout -b <branchName> #创建并切换分支
git merge <branchName> #合并branchName分支到当前分支上
git branch -r #查看远程分支
git branch -a #查看远程及本地的所有分支,当前分支前加"*"号
- 默认是有一个主分支master
创建分支
git branch dev
- 创建了一个dev分支
- 在刚创建时dev分支里的东西和master分支里的东西是一样的
切换分支
git checkout dev
- 切换到指定的分支,这里的切换到名为dev的分支
git branch
可以查看当前有哪些分支
- 切换到指定的分支,这里的切换到名为dev的分支
注意:如果在当前分支未提交更新,切换到其他分支,会将修改后未提交的文件和状态一同带到切换的分支中
创建并切换分支
- git checkout -b dev
- 创建并切换到该分支中
合并分支
git merge dev
- 合并分支内容,把当前分支与指定的分支(dev),进行合并
- 当前分支指的是
git branch
命令输出的前面有*号的分支
- 合并时如果有冲突,需要手动去处理,处理后还需要再提交一次.
- 冲突:在两个分支都进行了修改,合并时代码无法判断以哪个为准,所以需要我们人为的修改文件内容。
- 他是将两个文件都修改的内容通过区域划分合并在一起了,我们手动修改需要保存的文件内容即可。
三、工欲善其事必先利其器
工欲善其事必先利其器,工具的熟练掌握、合理利用,修改记录保存完整,后期检索跟踪问题,以及多项目软件切换合并才能简单易操作,才能保证代码的质量。
提交代码到远程仓库
你完全可以在一个“远程”仓库上工作,而实际上它在你本地的主机上。 词语“远程”未必表示仓库在网络或互联网上的其它位置,而只是表示它在别处。 在这样的远程仓库上工作,仍然需要和其它远程仓库上一样的标准推送、拉取和抓取操作。
远程仓库有很多,比较典型的有Github、Codding、Gitee
Github账号申请
GitHub是一个代码托管平台,支持多人合作完成项目,在GitHub上你可以找到大量开源的代码,程序员们可以通过这个平台进行有效社交与合作。
打开网址:https://github.com
进入Git官网,点击右上角的sign up进入注册页
输入用户名“Username”、邮箱地址“Email address”、密码“Passport”,再点击下方的“Create account”提交
选择适合自己的免费或者收费的选项,默认是免费的选项,再点继续“Continue”
登录注册时填写用户名或邮箱,会收到GitHub发的验证邮件,点击“Verify email address”跳转到GitHub页面就大功告成了
登录后点击右上角’New repository’创建远程仓库
创建完成会跳转到仓库中,点击HTTP和SSH可以获取仓库地址
查看远程仓库
如果想查看你已经配置的远程仓库服务器,可以运行 git remote
命令。 它会列出你指定的每一个远程服务器的简写。 如果你已经克隆了自己的仓库,那么至少应该能看到 origin ——这是 Git 给你克隆的仓库服务器的默认名字:orgin
添加远程仓库
运行 git remote add <简称> <远程仓库地址>
添加一个新的远程 Git 仓库,同时指定一个方便使用的简写。下次执行拉取、克隆、提交等命令就可以通过简写名称省略远程仓库地址了。
本地仓库和远程仓库建立连接
git remote add origin <远程库的网址>
把当前分支的内容上传到远程的master分支上
git push [远程库的地址] master
- 示例:
git push https://github.com/Zevs6/blogimg5.git master
- 示例:
简写:
git push origin -u master
当加上-u参数后面就可以直接写 git push 即可- 加上-u参数,git会把当前分支与远程的指定分支进行关联 git push origin master
pull命令拉取远程分支并与本地分支合并
git pull [远程地址] master
- 示例:
git pull https://github.com/Zevs6/blogimg4.git master
- 示例:
clone命令克隆远程库到本地
git clone <远程库的网址>
- 示例:
git clone https://github.com/Zevs6/blogimg5.git master
pull拉取和clone克隆的区别,pull拉取需要本地提前有一个初始化的仓库,而clone克隆无需本地初始化项目,他会直接将远程的仓库连同文件夹一同下载到本地中。
新建仓库并提交到远程
echo "# my-study" >> README.md
git init
git add ./README.md
git commit -m 'first commit'
git remote add origin git@github.com:zevs6/my-study.git
git push -u origin master
// git push
ssh方式上传代码
- 公钥
id_rsa.pub
私钥id_rsa
两者之间关联绑定 生成公钥和私钥
ssh-keygen -t rsa -C '2602138376@qq.com'
默认存储在
C:\Users\Administrator\.ssh
复制
id_rsa.pub
内容到github上settings=>SSH and GPG keys=>New SSH key保存即可- 这时候我们推送仓储就无需输入密码了,通过这种方式避免了密码泄露,只需要将推送者的电脑公钥绑定到github中