版本控制
版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。
实现跨区域多人协同开发。
追踪和记载一个或者多个文件的历史记录
组织和保护你的源代码和文档。
统计工作量。
并行开发、提高开发效率。
跟踪记录整个软件的开发过程。
减轻开发人员的负担,节省时间,同时降低人为错误。
简单说就是用于管理多人协同开发项目的技术。
没有进行版本控制或者版本控制本身缺乏正确的流程管理,在软件开发过程中将会引入很多问题,如软件代码的一致性、软件内容的冗余、软件过程的事物性、软件开发过程中的并发性、软件源代码的安全性,以及软件的整合等问题。
无论是工作还是学习,或者是自己做笔记,都经历过这样一个阶段!我们就迫切需要一个版本控制工具!
常见版本控制工具
Git
SVN(Subversion)
CVS(Concurrent Versions System)
VSS(Micorosoft Visual SourceSafe)
TFS(Team Foundation Server)
主要区别是本地和分布式的区别。
git结构
git文件的状态
Git 有三种状态,你的文件可能处于其中之一:已提交(committed)、已修改(modified)和已暂(staged)。
git项目的工作区域
Git 项目的三个工作区域:Git 仓库、工作目录,暂存区域。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rVwJ8UJA-1646182418847)(image-20220225135056325.png)]
Git 仓库目录是 Git 用来保存项目的元数据和对象数据库的地方。这是 Git 中最重要的部分,从其它计算机克隆
仓库时,拷贝的就是这里的数据。
工作目录是对项目的某个版本独立提取出来的内容。这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘
上供你使用或修改。
暂存区域是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。有时候也被称作`‘索
引’’,不过一般说法还是叫暂存区域。
git的基本流程
-
在工作目录中修改文件。
-
暂存文件,将文件的快照放入暂存区域。
-
提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。
git分支
Git 的分支,其实本质上仅仅是指向提交对象的可变指针。Git 的默认分支名字是 master。
git使用
安装git
在Linux上安装Git
首先,你可以试着输入git
,看看系统有没有安装Git:
$ git
The program 'git' is currently not installed. You can install it by typing:
sudo apt-get install git
像上面的命令,有很多Linux会友好地告诉你Git没有安装,还会告诉你如何安装Git。
如果你碰巧用Debian或Ubuntu Linux,通过一条sudo apt-get install git
就可以直接完成Git的安装,非常简单。
老一点的Debian或Ubuntu Linux,要把命令改为sudo apt-get install git-core
,因为以前有个软件也叫GIT(GNU Interactive Tools),结果Git就只能叫git-core
了。由于Git名气实在太大,后来就把GNU Interactive Tools改成gnuit
,git-core
正式改为git
。
如果是其他Linux版本,可以直接通过源码安装。先从Git官网下载源码,然后解压,依次输入:./config
,make
,sudo make install
这几个命令安装就好了。
在Mac OS X上安装Git
如果你正在使用Mac做开发,有两种安装Git的方法。
一是安装homebrew,然后通过homebrew安装Git,具体方法请参考homebrew的文档:http://brew.sh/。
第二种方法更简单,也是推荐的方法,就是直接从AppStore安装Xcode,Xcode集成了Git,不过默认没有安装,你需要运行Xcode,选择菜单“Xcode”->“Preferences”,在弹出窗口中找到“Downloads”,选择“Command Line Tools”,点“Install”就可以完成安装了。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iY5aQQdU-1646182418848)(0.jpeg)]
Xcode是Apple官方IDE,功能非常强大,是开发Mac和iOS App的必选装备,而且是免费的!
在Windows上安装Git
在Windows上使用Git,可以从Git官网直接下载安装程序,然后按默认选项安装即可。
安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IGpygNmh-1646182418848)(0-1645758962062106.jpeg)]
配置
查看配置
配置级别
//仓库级的 config,命令:
git config –-local
//全局级的 config,命令:
git config –-global
//系统级的 config,命令:
git config –-system
–local 仓库的目录下的 .git/config
–global 系统盘当前用户下的 .gitconfig 我的是C:\Users\my.gitconfig
–system git安装目录下的mingw64/etc/gitconfig
参数
查看配置 命令参数 -list,简写 -l
//查看仓库级的 config,命令:
git config –-local -l
//查看全局级的 config,命令:
git config –-global -l
//查看系统级的 config,命令:
git config –-system -l
//查看当前生效的配置, 命令:
git config -l
编辑配置 命令参数 -edit,简写 -e
//查看仓库级的config,命令:
git config –local -e
//查看全局级的config,命令:
git config –global -e
//查看系统级的config,命令:
git config –system -e
//与–list参数不同的是,config默认是编辑仓库级的配置文件。
git config -e
增加配置 参数 -add
格式:git config [–local|–global|–system] --add section.key value
(默认是添加在 local 配置中),add后面的 section.key,value 一项都不能少,否则添加失败。
删除配置 参数 -unset
格式:git config [–local|–global|–system] --unset user.my
(默认应该也是local配置中,)
安装完成后,还需要最后一步设置,在命令行输入:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。你也许会担心,如果有人故意冒充别人怎么办?这个不必担心,首先我们相信大家都是善良无知的群众,其次,真的有冒充的也是有办法可查的。
注意git config
命令的--global
参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
项目使用
本地项目命令行操作
建议看最后的idea插件操作
本地项目操作
1.一般是在空文件夹(或者新建),有内容的文件夹也可以。
$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit
2.初始化为git仓库,并没有跟踪文件夹里面的文件
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/
3.创建readme.md
touch readme.md
4.跟踪,提交。 Git 只是暂存了你运行 git add 命令时的版本,所以每次修改之后要重新跟踪。
$ git add *.c
$ git commit -m 'initial project version'
#补充 不建议使用。
$ git commit -a -m 'added a new footer [issue 53]'
跳过$ git add *.c这个阶段。
5.克隆项目 后面的mylibgit是别名
$ git clone https://github.com/libgit2/libgit2 mylibgit
6.查看状态 -short 或者 -s 简略输出
$ git status
On branch master
nothing to commit, working directory clean
7.配置上传规则 .gitignore文件
忽略规则
所有空行或者以 # 开头的行都会被 Git 忽略。
可以使用标准的 glob 模式匹配。
匹配模式可以以(/)开头防止递归。
匹配模式可以以(/)结尾指定目录。
要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反
星号(*)匹配零个或多个任意字符;
[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);
问号(?)只匹配一个任意字符;
如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如[0-9] 表示匹配所有 0 到 9 的数字)。使用两个星号(*) 表示匹配任意中间目录,比如`a/**/z` 可以匹配 a/z,a/b/z 或 `a/b/c/z`等。
8.查看项目的具体改变
$ git diff
参数 --cached 查看已暂存的将要添加到下次提交里的内容
9.移除文件跟踪和提交,删除文件
$ git rm PROJECTS.md
$ rm PROJECTS.md
10.移动文件
$ git mv file_from file_to
11.查看历史
$ git log
12.撤销操作 最终你只会有一个提交 - 第二次提交将代替第一次提交的结果。
$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend
13.移除本次跟踪的(暂存)文件
$ git reset HEAD CONTRIBUTING.md
14.撤销修改
$ git checkout -- CONTRIBUTING.md
远程仓库基本操作
1.查看远程分支
$ git remote
详细信息
$ git remote show [remote-name]
2.添加远程分支
$ git remote add <shortname> <url>
3.抓取 这个命令会访问远程仓库,从中拉取所有你还没有的数据。执行完成后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。它并不会自动合并或修改你当前的工作。当准备好时你必须手动将其合并入你的工作。
$ git fetch [remote-name]
4.拉取 自动的抓取然后合并远程分支到当前分支。
$ git pull origin master
5.推送 只有当你有所克隆服务器的写入权限,并且之前没有人推送过时,这条命令才能生效。当你和其他人在同一时间克隆,他们先推送到上游然后你再推送到上游,你的推送就会毫无疑问地被拒绝。你必须先将他们的工作拉取下来并将其合并进你的工作后才能推送。
$ git push origin master
6.重命名和删除
$ git remote rename pb paul
$ git remote rm paul
7.标签,
$ git tag #查看
$ git tag -a v1.4 -m 'my version 1.4' #打标签v1.4
$ git show v1.4 #详细信息
分支操作基本命令
1.创建分支 这会在当前所在的提交对象上创建一个指针。
$ git branch testing
2.切换分支
$ git checkout testing
3.创建并切换分支
$ git checkout -b iss53
#相当与
$ git branch iss53
$ git checkout iss53
4.合并分支 合并分支和合并代码是不一样的 master 被快进(合并)到 hotfix
$ git checkout master
5.master 和 hotfix 现在指向同一位置 可以删除hotfix分支
$ git branch -d hotfix
注意1,不管是合并还是切换,要保持暂存区是干净的
git提交规范
第一步:
提交代码第一步:git status 查看当前状态
当你忘记修改了哪些文件的时候可以使用 git status 来查看当前状态,红色的字体显示的就是你修改的文件。
第二步:
提交代码第二步:git add . 或者 git add xxx
如果你git status 查看了当前状态发现都是你修改过的文件,都要提交,那么你可以直接使用 git add . 就可以把你的内容全部添加到本地git缓存区中
如果你git status 查看了当前状态发现有部分文件你不想提交,那么就使用git add xxx(上图中的红色文字的文件链接) 就可以提交部分文件到本地git缓存区。
第三步:
提交代码第三步:git commit -m “提交代码” 推送修改到本地git库中
第四步:
提交代码第四步:git pull <远程主机名> <远程分支名> 取回远程主机某个分支的更新,再与本地的指定分支合并,避免发生冲突。
第五步:
提交代码第五步:git push <远程主机名> <远程分支名> 把当前提交到git本地仓库的代码推送到远程主机的某个远程分之上
gitee仓库
本地项目搭建
通常是在idea操作.需要git或者gitee的插件
快速创建
创建完项目,share to gitee。git会直接创建一个空仓库.
标准创建
1.创建git仓库(master-dev分支)
2.搭建项目结构
3.配置git版本控制
vcs–>create git respository
vcs–>manager remotes(创建版本控制,点加号,地址就是git的https地址)
vcs–>pull(若提示没有分支,先看看远程仓库有没有分支,有的话就是没有刷新,ctrl+F5
vcs–>commit
vcs–>push
强制更新代码并覆盖本地
本地开发错误,或者不想要的时候,可执行以下步骤,强制拉取远程仓库没有修改的文件覆盖本地更改的文件:
git fetch --all
git reset --hard origin/master
git pull