提要:
- git是什么?
- git有什么功能?
- 怎么使用git来协助你的工作?
- git的基本命令是什么?
那么就由我带领大家一起来学习这个"新手杀手"
Git介绍:
git是一个免费开源的版本控制系统,它被设计用来快速高效地管理项目开发的源码。通过git可以跟踪代码的状态,也可以在修改代码后对代码状态进行存储,还可以在需要时将已经修改过的代码恢复到之前存储的状态。更强大的是使用git管理代码时,可以创建代码分支(branch),代码分支相当于一段独立的代码记录,我们可以在分支上对代码进行任意的修改,而这个修改只会影响当前分支,不会对其他分支产生影响。同时,可以对分支进行合并,合并后一个分支的修改便可在另一分支上生效。总之,git是当今最优秀的版本控制工具!
然后去官网下载安装,我相信大家应该都会这一步了!
git功能:
- 可以方便快速的克隆远程仓库中完整的代码,并下载在本机上,便于修改和维护。
- 可以根据各种不同的开发功能或者目的,创建不同的分支,使其自己的代码的修改。
- 可以在不同的分支上提交代码。
- 可以合并分支,并且可以和主分支合并。
- 生成补丁,然后将补丁发送给其他开发者进行修改。 6.提交修改并可以撤回再次修改提交。
git的使用
第一步:git配置
配置个人的Name以及Email
Name:
git config --global user.name xxx(名)
Email:
git config --global user.email xxx(邮箱)
1.先初始化仓库:git init命令
2.要检查已有的配置信息,可以使用 git config --list命令
基本概念:
- 工作区: 就是你在电脑里能看到的目录。
- 暂存区: 英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
- 版本库: 工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。
文件状态:
- 暂存,表示文件修改已经保存,但是尚未提交到git仓库。
- 未修改,表示磁盘中的文件和git仓库中文件相同,没有修改。
- 已修改,表示磁盘中文件已被修改,和git仓库中文件不同。
刚添加到项目中的文件处于未跟踪状态:
未跟踪 --> 暂存
git add <文件名>
git add * 将所有已修改(未跟踪)的文件暂存
暂存 —>未修改
git commit -m " xxx " 将暂存文件存储到仓库中
git commit -a -m " xxx " 提交所有已修改的文件(未跟踪的文件不会提交)
未修改 --> 修改
进入文件后,直接修改代码,文件会变为修改状态
我们可以通过git status来查看文件的状态
第二步:常用命令
1.重置文件
git restore
恢复文件
git restore – staged取消暂存状态
2.删除文件
git rm
删除文件
git rm -f强制删除文件
3.移动文件
git mv from to
移动文件 重命名文件
git reset
回退版本
4.分支
git在存储文件时,每一次代码的提交都会创建一个与之对应的节点,git就是通过一个一个的节点来记录代码的状态的,节点会构成一个树状结构,树状结构就会存在着分支,命名为master,在使用git时,可以创建多个分支,分支与分支之间相互独立,在一个分支修改代码也不会影响其他分支
git branch
查看当前分支
git branch创建新的分支
git branch -d删除分支
git switch切换分支
git switch -c创建并切换分支
git merge合并分支
变基(rebase)
在开发中除了通过merge,来合并分支外,还可以通过变基完成分支的合并。
我们通过merge合并时,在提交记录中会将所有的分支合并的工程全部显示出来,这样的当项目比较复杂,开发过程比较波折时,我们必须要反复的创建、合并、删除分支,这样一来会使得我们代码的提交记录变得极其混乱。
- 当我们发起变基时,git会首先找到两条分支的最近的祖先。
- 对比当前的分支相对于祖先的历史提交并且将它们存储到一个临时的文件中。
- 将当前部分指向目标的基底。
- 以当前基底开始,重新执行历史操作
变基和merge对于合并分支来说最终的结果是一样的,但是变基会使得代码提交记录更整洁更清晰!注意!大部分情况下合并和变基是可以互换的,但是如果分支已经提交给了远程仓库,那么这时尽量不使用变基
远程仓库
远程的git仓库和本地的本质没有什么区别,不同点是在于远程仓库可以同时被多人访问使用,方便我们协同开发.
将本地库上传git:
git remote add 【remote name 】 url(https地址)
git branch -m main
修改分支的名字为maingit push -u origin main
git push 将代码上传服务器上
远程库操作的命令
git remote
列出当前的关联的远程库
git remote add <远程库名>
关联远程仓库
git remote remove <远程库名>
删除远程库
git push -u <远程库名> <分支名>
向远程库推送代码,并和当前分支关联
git push <远程库> <本地分支>:<分支名>
git clone
从远程下载代码
git push
如果本地的版本低于远程库,push默认是推不上去
git fetch
要想推送成功,必须确保本地库和远程库的版本一致,fetch它会从远程仓库下载所有代码,但是它不会将代码和当前分支自动合并,需要手动处理
git pull
从服务器上拉取代码并自动合并
git log
打印历史日志
-
推送代码之前,一定先从远程库中拉取最新的代码
Tag标签
- 当头指针没有指向某个分支的头部时,这种状态我们称为头指针(HEADdetached),分离头指针状态下也可以操作代码,但是这些操作不会出现,在任何分支上,所以注意不要在分离头指针状态下操作仓库
- 如果非得要回到后边得节点对代码进行操作,则可以选择创建分支后再操作
git swith -c <分支名> <提交id>
-可以为提交记录设置标签,设置标签后,可以通过标签快速识别出不同得开发节点:
git tag
查看当前版本
git tag 版本
git tag 版本 提交id
git push 远程仓库 标签名
git push 远程仓库 --tags
git tag -d 标签名
删除标签
git push 远程仓库 --delete 标签名
删除远程标签
-
默认情况下,git会监视项目中所有内容,但是有些内容比如node——modules目录中得内容,我们不希望被git所管理。我们可以在项目目录中添加一个 ".gitignore"文件,来设置那些需要git忽视得文件。
本文章简单讲述了git的操作,听取于前端的李立超老师的课程,将文章之中的命令学会后,对付git就游刃有余了,希望有‘码友’指点,我也会持续更新。