简介
git是一个工具,用于管理代码版本的工具。
解决的问题:
开发版本
- 功能A ===> V1.0
- 功能A + B ===> V2.0
- 功能C ===> V3.0
- 功能A + C ===> V4.0
- 代码合并
- 。。。
仓库:被git工具管理的文件夹
- 本地仓库:本地计算机硬盘上的文件被git管理
- 将文件夹变成仓库
git init
被存储的代码分为3个状态:
工作区
暂存区
历史/版本区
- 查看仓库状态
git status
- 将工作区的代码放在暂存区
git add .
ait add 文件名称或文件夹名称
- 将暂存区代码拿回工作区
git reset .
git reset 文件名称或文件夹名称
- 将暂存区代码放在历史/版本区
git commit -m "版本描述"
将暂存区内容全部放在历史区
查看所有的分支
git branch
创建分支
git branch 新的分支名称
创建分支的时候,默认会将master分支的代码给新的分支上复制一份
切换当前分支
git checkout 分支名
创建并切换到新的分支
git checkout -b 新的分支名
合并分支
git merge 被合并的分支
删除分支
git branch -D 分支名
查看所有版本
git log
切换版本
git reset --hard HEAD^ # 切换到上一个版本,^1个表示回退1个版本;2个^表示回退两个版本 git reset --hard 版本号 # 切换到指定的版本,版本号只要用前7位就ok
找版本号,可以从.git隐藏文件夹中,找到:.git/logs/HEAD
设置提交的用户名和邮箱
git config --global user.name '用户名' git config --global user.email '邮箱'
- 远程仓库: 远程服务器上文件夹被git管理
借助github/gitee/gitlab服务器
github:由微软收购的,服务器在国外,不方便访问。个人仓库免费的,默认是私有的;企业仓库都是私有的,仓库安全机制由github提供。
gitee:由国内开发的,服务器在国内,方便访问。个人仓库是免费的;企业仓库是私有的,仓库的安全机制由gitee提供。
gitlab:由乌克兰的一个程序员开发的,服务器在国外,但是国内有cdn加速,国内打开也方便;企业版没有提供,需要我们手动创建,所有的安全机制由自己把控。
创建远程仓库克隆到本地
将远程仓库克隆到本地
git clone 仓库地址 git clone 仓库地址 自定义文件夹名称
将本地仓库内容推送到远程
git push
创建仓库不选择初始化
- 在本地创建文件
- 初始化成仓库
- 在本地仓库中最少有一个版本
跟远程仓库建立连接
git remote add 变量名 远程仓库地址
推送到远程
git push -u 变量名 master
后续推送到远程
git push
- 冲突解决
冲突的原因:远程仓库每个版本的形成,都必须基于上一个版本形成的,不可以从版本1直接生成版本3
解决原理:先将远程仓库代码跟本地仓库同步一份,远程版本是多少,先在本地形成多少,在原本的基础上再次推动形成新的版本。
git pull # 将远程仓库的内容同步到本地一份
git push
执行 git pull 的时候,命令行窗口中会打开一个文件,我们需要通过:q命令将文件关闭。
夸分支操作
先将master克隆到本地,在本地创建跟远程分支名相同的分支,在新的分支上进行开发,推送.... 用:git push --set-upstream origin 分支名
后续推送:
git push
也可以直接克隆远程指定的分支:
git clone -b 指定的分支名 仓库地址
给本地同步远程指定的分支代码:
git pull 仓库地址 分支名
通常是在本地创建一个跟远程相同名字的分支名进行操作。
文件操作:
git工具默认提供了两个特殊文件:- .gitignore: 用来设置黑名单。将黑名单文件的路径放在当前文件中即可。
- .gitkeep:git是不会管理空文件夹的,如果希望空文件夹被管理,git规定必须在空文件夹中新建.gitkeep文件。
shh提交:
创建公钥秘钥:
检测当前计算机是否有公钥和秘钥:如果没有C:\Users\Admin.ssh这个文件夹或者文件夹中只有known_hosts文件,表示我们没有公钥和秘钥。
ssh-keygen -t rsa -C "自己的邮箱"
<<<<<<< HEAD 公钥需要设置在自己账号的公钥管理中。
有了公钥和秘钥后,我们就可以使用仓库的ssh链接进行推送了。
=======
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。