Git介绍和基本使用方式

**

git介绍和基本使用方式

**

简单介绍 : git是一种管理或记录文件、代码变化的一种方式,是目前世界上最先进的分布式版本控制系统。

如何下载安装使用?

下载地址:https://git-scm.com/downloads
全部默认,无脑下一步
在文件夹中右击,选择"Git Bash Here",在弹出的窗口中输入“git --version”回车查看版本,输出版本号即为安装成功

基本工作流

工作目录:项目目录
缓存区:临时存放将要被提交的文件
仓库:最终存放的位置
	本地
	远程
工作目录 --> 缓存区 --> 仓库

基本配置

如何配置提交人姓名?
	git config --global user.name "andremao"
如何配置提交人邮箱?
	git config --global user.email "********@126.com"
以上两项配置只需配置一次即可,若需修改,重复执行即可
--global表示全局配置,所有项目都有效,可以理解成默认值,如果不加--global表示本地配置,优先级要高于全局配置
如何查看配置信息?
	git config --list
如何删除配置?
	git config --global --unset user.name/user.email

基本使用

如何初始化仓库?
	git init
如何查看当前状态?
	git status
如何添加到缓存区?
	git add 文件列表
		文件列表多个用空格隔开
	新建的文件在第一次被add时将被追溯,好比有根线牵着它
	可以通过 git add . 一次性将当前命令行工作目录下所有的文件提交到缓存区
如何将缓存区的文件提交到仓库?
	git commit -m "提交信息"
	没有写提交信息是不可以提交
如何查看提交记录?
	git log
	当记录过多,导致一个屏幕显示不全时,仅仅只会显示最后的几个版本,需要手动按上下方向键查找,可以按Q键直接退出
	简要日志,每个版本记录只有一行:git log --oneline
如何用缓存区的文件覆盖工作目录的文件?
	git checkout 文件名
如何删除缓存区中的文件?
	git rm --cached 文件名
	仅仅是从缓存区删除,并不会删除工作目录中的文件,如果要直接将文件都删除,可以执行命令 git rm  --f 文件名(慎用)
如何将缓存区中的文件回退到上一次修改的版本?
	git reset 文件名
如何从提交记录中恢复?
	git reset --hard 提交记录ID
	如果不写提交记录ID,那么默认是最新的版本ID
	会覆盖缓存区和工作目录
	恢复后,该commitID之后的提交记录都会被删除
	加了--hard会直接将文件删除,不会保留,如果需要保留文件,就不要加--hard

分支

分支是什么?
	就是当前工作目录的副本
分支常见的分类?
	主分支(master)
		什么时候产生?
			第一次提交时自动产生
		用来管理什么代码?
			稳定的、发布上线了的代码
	开发分支(develop)
		什么时候创建?
			开发的时候
		用来管理什么代码?
			日常开发的代码
		什么时候合并?合并到哪里去?
			开发完成后,合并到测试分支上
	测试分支(test)
		什么时候创建?
			需要测试的时候
		用来管理什么代码?
			提供给测试妹纸测试的代码
		什么时候合并?合并到哪里去?
			测试通过后,合并到主分支上
	功能分支(feature)
		什么时候创建?
			需要开发一个新功能的时候
		用来管理什么代码?
			本次新功能的代码
		什么时候合并?合并到哪里去?
			开发完成后,合并到开发分支上
	BUG分支(bug1001)
		什么时候创建?
			测试妹纸提出bug,需要修复时
		用来管理什么代码?
			本次bug修复的代码
		什么时候合并?合并到哪里去?
			开发完成后,合并到开发分支上
基本操作
	如何查看分支?
		git branch
	如何创建分支?
		git branch 分支名
		创建的分支是基于当前分支进行复制的,并不一定是master分支
		git checkout -b 分支名,可以在创建的时候一并切换到该分支
	如何切换分支?
		git checkout 分支名
		切换分支前,需要把工作目录中有变动的文件和缓存区中的文件处理掉,不然这些文件会跟着到切换的这个分支上
		撤销中也有checkout,在执行这个命令时,git会优先看你跟的是否是分支名,如果是,就执行切换分支操作,如果不是,就看是否是文件名,执行撤销操作
	如何合并分支?
		git merge 来源分支名
		这里是将来源分支合并到当前分支,在合并前先确认当前分支是哪个
		合并后,来源分支并不会删除,还是会存在的
	如何删除分支?
		git branch -d 分支名
		分支如果有改动,被合并后才可以被删除,如果还未被合并就想删除,可以使用大写的-D来强制删除
		不能删除当前分支,必须先切换到其他分支上再来删除
	如何获取远程的新分支?
		git fetch

暂存区

什么是暂存区?
	暂时存放文件的地方
	所有分支共享
如何将文件放到暂存区?
	git stash
	没有被添加到缓存区中的文件也可以添加到暂存区中
	只有被追溯的文件才会被放到暂存区
如何从暂存区恢复文件?
	git stash pop
	这里是恢复到当前分支,所以在恢复的时一定要确认当前分支是不是你要恢复的分支
	一旦pop之后,如果没冲突,暂存区的文件就木有了
如何查看暂存区中的列表?
	git stash list

GitHub

GitHub是什么?
	是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub
	远程仓库
可以用来做什么?
	线上托管项目代码
	多人远程协同开发
如何将本地仓库的代码推送到远程仓库?
	git push 远程仓库地址 本地分支名
	在第一次push时需要输入用户名和密码,之后就不用了这个功能不是Git或GitHub提供的,而是操作系统给我们保存起来了
	如果远程仓库的版本高于本地仓库的版本,是不允许本地仓库向远程仓库push的,必须先pull远程仓库后才可以push,所以我们养成在add或者commit之前先pull一下的习惯,如果有冲突是pull不下来的,如果pull不下来,我们先把当前状态放入暂存区,然后再pull,然后再从暂存区弹出之前的状态
	如果回退至之前的版本时,是push不上去的,因为本地版本比远程版本要低,可以通过“git push -f”强制推送
如何给远程仓库地址起别名?
	git remote add 别名 远程仓库地址
	这个别名在业内约定俗成就叫origin
git push时,如何记住远程仓库地址和分支名?
	git push -u 远程仓库地址 远程分支名
	可以通过git branch -vv 查看本地分支和远程仓库的映射关系
git push上传文件到别人仓库的时候,必须要先clone别人的仓库地址,才能上传
如何克隆远程仓库?
	git clone 远程仓库地址 项目名
		项目可以省略,默认是远程仓库的名字
	只需要在加入项目开发时执行一次即可
	克隆public的远程仓库需要身份认证吗?
		不需要
	克隆会把远程仓库所有者设置的别名和分支映射关系也会一并克隆下来(如果设置了别名,会自动创建一个origin)
	push到远程仓库需要身份认证吗?
		需要该远程仓库的所有者向你发出合作邀请,并且你同意邀请
	一般克隆的话会把仓库的所有分支全部克隆下来(而且默认在主分支上),如果想只克隆仓库中的某一个分支直接显示的话用 git clone -b 分支名 仓库地址 (其实还是把整个仓库克隆下来了) 
查看当前的远程库
	git remote
	git remote -v   执行时加上 -v 参数,你还可以看到每个别名的实际链接地址。
查看远程仓库分支
	git branch -r
删除远程仓库
	git remote rm [别名]
如何拉取远程仓库中的最新代码?
	git pull 远程仓库地址 远程分支名
	pull与clone不同,是需要在已有本地仓库的基础上才能执行的
	拉取需要身份认证吗?
		不需要
冲突是怎么产生的?
	别人和你修改了同一个文件的同一个地方,并且他比你先push,当你再push时就冲突了
如何解决冲突?
	第一种方式:先commit,然后push,发现push不上去时,就是有冲突了,这时,先pull一下,然后手动调整好冲突文件,然后再add、commit、push(这种方式不推荐,会产生过多了垃圾版本记录)
	第二种方式:在commit之前,先pull,如果pull不下来,说明有冲突,这时,我们将当前状态保存至暂存区中,这时仓库已经是干净的了,然后再pull,然后再git stash pop弹出暂存区中的状态,然后再手动整好冲突文件,然后再add、commit、push(推荐使用这种方式,没有垃圾版本记录)
如何发送pull request?
	先fork别人的
pull request
	什么是pull request?
		就是向其他团队的远程仓库push代码的途径
	如何发送pull request?流程是怎样的?
		1. 进入别人的远程仓库页面,fork,fork后,会复制一份到自己GitHub中
		2. clone刚复制的远程仓库到本地进行开发
		3. add,commit,push
		4. 发送pull request
		5. 原拥有者收到请求后审核代码
		6. 原拥有者接受请求,合并代码,也可以拒绝请求
ssh免登陆
	ssh的作用?
		当我们push时,可以不用输入账号密码,git会默认帮我们携带私钥去与公钥进行匹配
	实现免登陆的原理是什么?
		公钥与私钥
	什么是公钥?
		好比一个门锁
	什么是私钥?
		好比打开门锁的钥匙
	公钥保存在哪里?
		保存在GitHub账户中,也就是在远程服务器中
	私钥保存在哪里?
		保存在客户端,也就是你的电脑
	如何生成一对公钥/私钥?
		ssh-keygen -t rsa -C "[email protected]"
			一路回车狂飙
		生成的密钥文件在C:\\Users\当前用户名称\.ssh 文件夹里面
Git忽略清单
	作用?
		在执行“git add .”命令的时候,可以忽略这些文件
	文件名叫什么?
		.gitignore(固定不变)
			这个文件一般都放在项目跟目录下
仓库的详细说明文件名叫什么?
	README.md(固定不变,大小写可以忽略)

猜你喜欢

转载自blog.csdn.net/weixin_47929185/article/details/106738351