一.基本概念
Git版本控制系统时一个分布式系统,是用来保存工程源代码历史状态的命令行工具
简单来说Git的作用就是版本管理工具。
Git的应用场景:多人开发管理代码;异地开发,版本管理,版本回滚。
Git 的三个区域:
- 工作区:处理工作的区域
- 暂存区:临时存放的区域
- 本地git仓库:最终的存放区域
在文件夹的体现如下:
工作区就是电脑里的本地文件,工作区有一个隐藏目录.git
,不算工作区,而是Git的版本库。往版本库里添加文件的两步操作,第一步用git add
把文件添加进去,实际上就是把文件修改添加到暂存区,第二步用git commit
提交更改,实际上就是把暂存区的所有内容提交到版本库。
二.基本使用
(码云gitee示例)
1.新建仓库:
2.打开git bash配置git全局变量
在用户文件下可以查看配置信息:
又或者运行:
git config --list
3.初始化:
新建一个空文件夹后git bash
git init
开启显示隐藏文件即可看到.git文件
4.查看状态
git status
5.将文件添加/删除到暂存区
git add . // .的意思是添加所有文件至暂存区。
再次查看状态:
如果想从缓存区删除:
git rm --cached 文件名 #将文件从暂存区删除(此时还没有记录历史版本,只有commit时才会有历史版本)
6.提交到本地库
git commit -m
git commit -m "remove 文件"//从本地库删除
7.查看差异
git diff //工作区和暂存区差别
git diff -cache //暂存区和版本库区别
7.查看日志信息
git reflog #查看历史版本
git log #可以查看更详细的提交日志
8.修改文件内容
显示文件被修改:
再次添加到暂存区和版本区:
提交文件后,提示一个文件被修改,一行新增,一行删除,是因为git中通过行来维护文件,修改一行,它无法表示,它是把修改之前的那一行删掉,再把修改之后的一行的内容新增进来。
查看日志:
9.版本回溯
git reset --hard 历史版本号"
已经回溯:
上述总结:
10.分支管理
Git分支是在Git版本控制系统中用于并行开发和管理不同功能或版本的代码的重要概念。分支可以让开发者在不影响主线代码的情况下,独立地进行开发、测试和修改。在Git中,主要的分支是master(或main)分支,它包含了项目的主要代码。除了主分支外,开发者可以创建其他分支,比如feature分支用于开发新功能,bugfix分支用于修复bug,release分支用于发布版本等。
分支的优势在于它能够提供一种安全的方式来进行并行开发,避免了直接在主分支上进行修改可能带来的风险。同时,分支也可以帮助团队协作,每个成员可以在自己的分支上进行开发,最后合并到主分支上。
在Git中,创建、切换、合并、删除分支都是非常简单的操作,开发者可以根据需要随时创建新的分支,并在不同分支之间切换,以便进行不同的工作。因此,合理地使用分支可以帮助开发团队更高效地进行代码管理和开发工作。
①查看分支
git branch -v //查看当前存在的的分支
②创建分支
git branch 分支名
git branch -d 分支名 //删除分支
第一次创建并切换到 分支,你会发现 master 分支上的所有代码 (和当前节点所有提交记录) 都被复制了过来 了,我们只需要在这个基础上接着往后开发就行
③切换分支:
git checkout 分支名
git checkout -b分支名 //创建并切换到分支
在分支上修改内容:
④合并分支
正常情况下执行:
git merge 目标分支名
执行合并:
但是如果 在两个分支修改了同一个文件并提交过,在合并的时候,就会产生冲突
合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个。必须人为决定新代码内容
切换回master分支合并,产生冲突:
打开vscode:
四选一点击修改,选择保留方式后,需要再次暂存提交一次:
我这里选择采用传入的更改:
查看结果:
11.团队协作
简述:A和B是同一团队的成员,A将代码push至代码远程仓库,B可以将其clone下来然后修改,再push到远程仓库,A就可以pull下B修改的部分代码。
下面回到之前的码云(gitee)操作:
①链接到仓库
git remote add 别名 链接
②本地推入远程仓库
git push 别名 分支
如果出现报错:
出现这个错误提示是因为远程仓库包含了一些本地没有的更新内容,所以推送被拒绝了。
通常的解决办法如下:
方法一:先拉取再推送
按照提示所说,先执行 git pull
命令将远程仓库的更新拉取到本地,合并到当前分支后,再尝试执行 git push
操作。
git pull
git push git-test master
不过在执行 git pull
时,如果存在合并冲突,需要手动解决这些冲突。解决冲突后,再进行推送就可以了。
方法二:使用 --force
选项(谨慎使用)
如果你确定要覆盖远程仓库的当前状态(比如远程仓库的更新你并不在意,只想用本地的内容强行覆盖),可以使用 git push
的 --force
选项。
但要特别注意,这种方式会强制覆盖远程仓库的内容,可能会导致其他人在远程仓库上所做的工作丢失,所以除非你非常确定不会影响到其他人或者整个项目的正常进展,否则不要轻易使用。
③拉取远程库到本地
git pull 远程仓库的别名或链接 分支名
git pull
是 git fetch
和 git merge
的组合,但你也可以分开执行这两个命令以获得更多控制。首先运行 git fetch
来获取远程更改但不合并它们,然后你可以使用 git merge
或其他Git命令(如 git rebase
)来合并这些更改
④克隆远程仓库到本地
本地新建一个文件夹
git clone 远程仓库的别名或链接
⑤清空远程仓库但不删除
git rm -rf * //先将工作区所有文件删除
git commit -m 'Empty the repository' //然后提交
git push
Git命令操纵总结
git init //初始化本地库 并且生成一个.git文件
git status //查看本地库状态
git add . //将所有文件添加到暂存区
git commit -m 文件名 //提交暂存区的文件到版本库
git reflog//查看历史记录
git reset --hard 版本号 //版本控制
git branch -v //查看当前存在的分支
git branch 分支名 //创建分支
git branch -d 分支名 //删除分支
git checkout 分支名 //切换分支
git checkout -b分支名 //创建并切换到分支
git merge 目标分支名 //合并分支
参考文章:https://juejin.cn/post/7325132211312492570