Git:免费、开源分布式版本管理系统。客户端并不只是提取最新的文件快照,而是把代码仓库完整地镜像下来,每个客户端都是服务器,每个服务器也都是客户端。 是linux之父,linus Benedict Torvalds发明的。
和SVN相比:svn服务器挂掉就不能提交和管理版本;git可以将版本提交到本地就进行管理。
下载地址:Git - Downloads
注意:推送到远程服务器时,一定要先pull,合并成功,并没有问题后才能进行push
3. 本地结构:
1. 和linux命令类似:比如:cd , ls, cat, vi, clear 等等
git --version
git config --global user.name "wangdy001"
git config --global user.email "449602327@qq.com"
3. 初始化本地库(仓库中会有一个.git的隐藏文件,不能随便修改和删除)
git init
git add 【filename】
git commit -m "注释"
git status
demo(刚创建Demo2.txt文件,该文件没有被git管理状态):
Demo(Demo2.txt已经被add到暂存区但是没有被commit状态):
Demo(Demo2.txt被修改了,但是没有被add到暂存区):
Demo(Demo2.txt修改后,执行add操作后):
Demo(Demo2.txt执行commit后状态):
Demo(工作区和暂存区都已经提交完成状态):
说明:新增、修改、删除操作文件后都需要add、commit才能同步到本地库
git log
git log --pretty=oneline
git log --oneline
git relog
说明:HEAD@{数字}表示,指针要回退到该版本需要走多少步
git reset --hard 21b6835
说明:reset后面参数可以有:--soft(会在重置 HEAD 和 branch 时,保留工作目录和暂存区中的内容,并把重置 HEAD 所带来的新的差异放进暂存区。)、--mixed(reset 不加参数(mixed):保留工作目录,并清空暂存区)、--hard(会在重置 HEAD 和branch的同时,重置stage区和工作目录里的内容)
1. 执行reset --hard HEAD将暂存区、工作区保持和HEAD版本一致
9. 比对文件差异(详细说明:git diff的最全最详细的4大主流用法_快乐李同学的博客-CSDN博客):
git diff --对比工作区与暂存区所有文件
git diff 【文件名】 --对比工作区与暂存区指定文件
git diff HEAD 【文件名】 --对比工作区与仓库最新版本指定文件
git diff 【历史版本】【文件名】 --对比工作区与仓库指定索引号版本指定文件
git diff <分支名1> <分支名2> --比较两个分支上最后 commit 的内容的差别
git branch -v --查看分支
git branch branch01 --新建branch01分支
git checkout 【分支名】 --切换到对应分支
git merge 【被合并分支】
--需要先切换到被保留的分支上,再执行该命令,将被合并分支进行合并
git merge 【被合并分支】 --需要先切换到被保留的分支上,再执行该命令,将被合并分支进行合并
2. 创建对应名称的远程库(详见github和gitee具体操作界面)
git remote -v --查看关联的远程库
git remote add origin https://gitee.com/wangdy001/project02.git --添加origin别名
git push origin 【本地指定分支】--将本地库【指定分支】推送到origin库
git clone 【远程库地址】
15. 成员权限管理(详见gitee的设置、github的Settings相关操作)
(代码简单,省事)pull = fetch + merge(为了保险、慎重)
git fetch origin master --将远程库对应分支拉取到本地,不改变工作区(工作区没有文件更新)
git checkout origin/master --切换到远程库的master上,查看内容是否正确
git merge origin/master --将master分支合并到本地master分支上(合并前注意将工作区切换到master上)
git pull origin master --直接将远程master拉取并合并到本地分支
17. 跨团队合作(gitee、github都是通过pull requests):
18. SSH免密登录(详见gitee、github指引):主要:如果地址是https,是需要密码的,那就改为ssh。只能针对当前电脑
cd ~ --进入用户主目录中
pwd --打印主目录地址 /c/Users/wdy
ssh-keygen -t rsa -C 17665366519 --生成对应key,后面三次回车(默认值)
vi ~/.ssh/id_rsa.pub --查看公钥信息,将该值添加到对应地址
git clone git@gitee.com:wangdy001/project02.git --不用账号凭据,通过SSH方式通信
4. 将远程库和本地库(两个不同项目)合并到一起(只解决两个仓库有不同的开始点)
git pull origin master --allow-unrelated-histories
git push -u origin master -f
9.冲突处理:(注意push前一定要pull到本地没有问题,才能push,尽量避免冲突)