git的使用
git是一个工具,用于管理代码版本的工具。
解决的问题:
-
开发版本
- 功能A ===> v1.0
- 功能A + B ===> v2.0
- 功能C ===> v3.0
- 功能A + C ===> v4.0
-
代码合并
-
。。。
仓库:被git工具管理的文件夹
-
本地仓库:本地计算机硬盘上的文件夹被git管理
-
将文件夹变成仓库
git init被存储的代码分为3个状态:
工作区
暂存区
历史/版本区
-
查看仓库状态
git status -
将工作区的代码放在暂存区
git add . git 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文件。
ssh提交:
创建公钥秘钥:
检测当前计算机是否有公钥和秘钥:如果没有C:\Users\Admin.ssh这个文件夹或者文件夹中只有known_hosts文件,表示我们没有公钥和秘钥。
ssh-keygen -t rsa -C "自己的邮箱"
<<<<<<< HEAD 公钥需要设置在自己账号的公钥管理中。
有了公钥和秘钥后,我们就可以使用仓库的ssh链接进行推送了。
=======
c4176e6375bf060e98beb5d9d5d2df2567aca226