导图社区 git版本管理工具学习
从安装到邮箱配置再到每个步骤的详细介绍,再到多人开发举例,情景演练;并附带相关相关学习资料,保姆级知识点整理
编辑于2022-02-26 11:20:53git版本管理工具学习
安装git
windows系统
访问git的官网 git-scm.com下载git for windows安装文件
双击安装文件,安装git工具
安装内容选择
安装编辑器选择
git环境变量配置选择
后面选择基本保持默认即可
git安装测试
可以在cmd控制台命令行输入git --version查看git安装的版本
或点击鼠标右键,会发现在列表菜单里多出两项:Git Bash Here 和Git GUI Here,一般Git GUI Here不好用也不常用,我们一般使用Git Bash Here打开命令行终端
常用shell命令,保证基础实用
pwd显示当前路径
ls
ls 显示当前路径的所有文件和文件夹,不显示隐藏文件
ls -la显示所有的文件和文件夹,包括隐藏文件
cd
cd +本目录下的文件夹名字:进入到该文件夹
cd+绝对路径的文件夹名字:进入该文件夹
cd + ../:到上一级目录
技巧:敲击cd 后将需要进入的文件夹拖动到命令行终端,便可以自动将文件夹的绝对路径输入到终端
cd +~:回到当前用户目录下
cd + /:回根目录下
mkdir + 文件夹名字:在当前的目录下新建文件夹,名字为空格后的字符串
rm +文件名:删除指定文件名的文件
rm -rf +文件名或者文件夹名字:强制删除文件或者文件夹
touch +文件名:自建一个文件,名字为空格后面的字符串
clear/cls:清除当前屏幕,清屏
git help:帮助文档,显示所有的可用指令
git help +命令名:显示对应命令的详细参数和用法
配置用户名和邮箱
目的:追踪是谁对当前的文件进行了操作,因为这是一款分布式的版本管理工具,一般是很多人联合操作,如果没有邮箱和用户名的区分和标志,就分不清是什么时候对什么文件进行了什么操作了
配置方法:直接在git的终端输入命令即可
git config --global user.name "your user name"
git config --global user.email"your email"
查看当前的配置列表
git config --list
管理项目
本地仓库
初始化
用命令行进入到项目文件夹当中 cd + your project catalogue
使用git init 初始化(执行完毕后会在当前目录下生成一个.git文件夹,可以使用ls -la查看到)
查看git 状态
使用git status查看当前git 的状态(如果显示红色代表你删除了某个文件,或者某个文件还没有添加到git本地仓库中,绿色的话代表你已经将新文件添加到了本地仓库中)
了解以下内容前先区分一下git add和git commit的区别,git init相当于我们新建了一个文件,然后git add相当于我们往文件里写内容,然后git commit相当于我们将内容保存到文件里,这里说的文件就是指我们的本地仓库,其实就是指保存在.git文件夹里面的内容。注意区分本地仓库和github远程仓库
添加文件到本地仓库(也可以理解为更新所有文件的状态,比如新建、修改、删除等)
使用git add +文件名 将指定文件上传到git 本地仓库中
使用git add . 将当前目录下的所有文件提交到本地仓库
修改文件并提交
当修改了某个文件以后,如若将其更新到git仓库的话,其步骤与提交新文件一样,先使用git add命令,然后使用git commit提交即可,只是修改文件和新建文件两种情况在git status查看状态时,显示的内容不一样
对比两个文件修改前后的内容
在修改完内容,git add 之前 当使用git status查看状态发现有某个文件被修改后,可以采用git diff来打印修改文件的前后不同的内容,当确定修改的内容无误后,便可以使用git add和git commit保存并提交
在修改完内容,并且已经git add 之后,应该使用git diff --staged来查看不同
移动和重命名文件
重命名
使用git mv +原来的名字 新的名字
移动
使用git mv +原来的名字 新的路径和名字
从本地仓库删除文件
使用git rm --cached +文件名,从本地仓库中删除文件
提交文件到git仓库
使用git commit -m "your commit signal message",-m 后面的字符串代表你提交后的备注信息
使用git commit -am "your commit signal message",-am 相当于先执行了git add 然后再执行git commit
查看提交日志信息(查看版本线图)
使用git log查看全部日志信息
使用git log --author="one author"查看某一个用户的所有日志信息
使用git log --online将每一次的日志条目按照简洁的形式,在一行中显示
使用git log --oneline --graph 以及后面带不同的参数来显示版本线图
一键还原上次提交的内容
可以先使用git status查看哪些文件发生了修改,然后使用git checkout -- +文件名还原到上次提交的状态
如果修改已经Git add 了的话,这时候在使用git checkout --<file>的话没有效果,需要先接触追踪,使用git reset HEAD +文件名来撤销追踪,撤销追踪以后再用git checkout --文件名 的命令还原上一次提交的内容
版本回退(回退到的版本以后的版本全部删除了)
使用git reset --hard HEAD^回退到上一个版本,^的数量代表回退的级数,比如说HEAD^^代表回退到上一个的上一个版本
使用git reset --hard +版本的哈希值,回退到指定哈希值的版本,可以只输入哈希值的前几位,具体的哈希值可以通过git log查找到每个版本对应的哈希值,然后复制即可
回到旧版本
使用git checkout 版本的哈希值 --文件名 该命令是将--后面对应的文件回退到哈希值对应的版本,并且保留之前的全部版本
对于分支的理解:分支可以理解为两个互不影响的分仓库(或者理解成两个移动硬盘),一般master主分支为每个仓库的默认的分支,每次新建了一个新的分支以后都会先将master分支的内容全部拷贝过去进行初始化,拷贝过去以后,两个分支之间就没有操作关系了,在每个分支里面使用git status、git add、git commit等命令都只会改变自己分支的内容,而另一个分支的内容不会受到影响,当然git log获得的日志内容也仅仅是本分支下的日志信息
查看所有的分支
git branch只查看本地的分支
git branch -a查看所有的分支,包括本地的和远端的分支
创建新的分支
使用git branch +新的分支的名字(所有新建的分支都会拷贝master分支的东西)
如果只输入git branch的话则显示当前的所有分支
切换分支
使用git checkout +要切换到的分支的名字
合成写法:git checkout -b +新分支的名字 ,该命令先创建一个分支,并切换到该分支下
删除分支
注意:不能在某一个分支下执行删除该分支的命令,比如说你当前位于develop分支下的话,你不能执行删除develop的命令,你需要切换到其他分支才能删除develop分支
删除的分支下没有新建文件,也没有commit,则使用git branch -d +分支的名字,即可删除该分支
在新的分支下新建过文件,并commit过,则要使用git branch -D+分支名字,进行强制删除
合并分支
一般合并分支要选择一条主线,而且一般选取master分支作为主线来进行合并,执行合并命令的分支里的内容会被合并进来的分支的内容替换掉,被合并进来的分支的内容保持不变,你可以选择在合并完成后将合并进来的分支删除,或者不删除
合并的两种方式(不同的合并方式对应的版本线图不同)
方式一: 使用git merge +要合并进来的分支的名字(默认使用快传机制进行合并)
在多人协同开发的时候,将远程仓库的更新内容拉取下来是,一般就采用快传机制的merge
方拾二: 01.使用git merge +要合并进来的分支+ --no-ff(禁止使用快转机制)
跳出合并日志,可自行添加自己的备注信息,然后保存退出即可
提示你按照递回的方式进行了合并,并且此时的版本线图逻辑更加清晰
解决合并冲突
当待合并的两个分支里面有同名文件的相同位置都发生改变后,会产生合并冲突,当合并发生冲突时的提示内容如图
解决方法
处理方法一:执行git merge --abort取消合并,待两人商议后再执行合并
处理方法二: 01. git在合并的时候,当两个同名的文件在相同的位置都进行过改动时,会发生合并冲突,这是在改变的位置,git会显示一个交互部分,提示你是采用当前更改、采用传入的更改、保留双方更改还是比较变更,根据讨论结果,选择如何更改
02.更改完成以后执行git add .和git commit完成合并
03.执行完git add .和git commit后,会跳出合并日志,里面有一些自动生成的合并日志信息,输入i,进入插入模式,你也可以自己再添加一些备注信息,添加完成后,输入英文的:,进入尾行模式,然后输入wq,保存并退出
其他合并相关的命令
回到合并之前的状态:git reset --hard ORIG_HEAD
增加--no-commit参数,先仅仅进行合并,不提交
增加--squash参数进行压缩,主要应用在做一些小的测试和改动的时候,不希望单独列出一个版本,就可以使用--squash参数进行压缩,其默认是使用快传机制的,所以改参数不能和--no-ff一起使用,使用--squash参数也会导致版本线图逻辑不清楚
查看已经合并和没有合并的分支
删除所有已经合并的分支
删除所有没有合并的分支
远程仓库
与git 对应的远程仓库常用的为github平台,他是有个为每个人用户提供代码管理控件的网络平台,通过访问github.com网址,并注册新账户,登陆以后便可以使用远程仓库
网站大致页面
创建远程仓库
点击登录界面右上角头像旁边的+号,然后再菜单项中选择New repository
填写仓库的基本信息
按照提示在本地连接远程仓库
github上的提示
在basn终端输入git remote add +你要连接的仓库的名字+ https://github.com/pchly/gitDemo.git(你建立的远程仓库的网络地址)
将本地仓库的内容提交到远程仓库中
该分支第一次提交时,需要先使用命令将本地的分支和远端的分支建立连接,使用git push -u +你自己起的名字+分支(一开始都有一个默认的master分支),这样就是将本地的master分支和远端的gitDemo/master分支建立了连接,后面就可以直接使用git push 将更新的内容上传到远端仓库
第一次建立连接后,后面该分支再次进行更新和上传的时候,可以直接使用git push 即可
分支可以分为本地分支、远端追踪分支和远端分支,我们使用git push -u是建立远端追踪分支,用来连接对应的本地分支和远端分支
多人协同开发
获取远端的项目
新建一个用来存储文件的文件夹,使用git clone命令+复制到的网址
不带其他参数,它会自动checkout到master分支下,耗一定的时间,并且文件夹的名字固定为网址的后半部分的内容
添加--no-checkout和在网址后面添加 文件夹的名字
直接下载压缩包
更新远端仓库的内容变化
git fetch更新远端仓库的变化内容
删除远端分支
使用git push origin --delete +远端分支的名字
仓库迁移
第一步:使用git remote set-url origin +新的地址,更改远程仓库对应的地址
第二步:使用git push --all将本地仓库的内容全部上传到远程仓库
情景演练(常规使用方法)
开发者1
01.新建文件夹,并使用git init初始化
02.使用git clone +远端仓库的地址,将项目的文件下载到本地
03.开始新的工作之前新建一个分支,比如说叫lesson-1,然后切换到新的分支进行编辑工作,最后git add和git commit提交
04.每次完成一部分的工作,都回到master分支,然后执行git merge --no-ff进行合并操作
05.再次开始工作前,同样先进入自己的分支支,比如说lesson-1,然后git merge master将master的内容更新过来,再进行编辑工作,编辑完成,最后git add和git commit提交
06.完成lesson-1工作后,都回到master分支,然后执行git merge --no-ff进行合并操作
07.以此类推,第三次、第四次.........
概要
08.建立一个远程仓库
09.git remote add origin +远程地址,然后git push -u origin master建立远程追踪仓库,然后git push --all将所有的内容上传
10.具有多人开发以后,每次工作前先使用git pull拉取远端分支的内容并进行合并,再进行后续的开发
开发者2
01.新建项目管理文件夹,使用git init初始化目录,使用git clone +远程仓库地址
02.checkout master到主分支,准备开始工作
03.与开发者1一样,开始新的工作之前新建一个分支,比如说叫lesson-2,然后切换到新的分支进行编辑工作,最后git add和git commit提交
04.每次完成一部分的工作,都回到master分支,然后执行git merge --no-ff进行合并操作
05.使用git push 将内容提交到远端分支
06.具有多人开发以后,每次工作前先使用git pull拉取远端分支的内容并进行合并,再进行后续的开发
相关学习资料
知乎:https://zhuanlan.zhihu.com/p/54127454
https://www.zhihu.com/question/22195970
其他资料自行搜索