git是什么
Git 是目前世界上最先进的分布式版本控制系统(没有之一)
www.github.com、www.gitee.cn、https://gitlab.cn/
git的诞生
作者是 Linux 之父
当初开发 Git 仅仅是为了辅助 Linux 内核的开发(管理源代码)
版本控制工具的区别 (画图演示)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5RsSIIZZ-1665627090616)(./git03.png)]
工作区、暂存区、本地库(版本区)
工作区(Working Directory)
暂存区 (Stage)
本地库 版本区 本地仓库库(Repository)
git的作用
源代码管理
1. 协同开发
2. 版本记录
3. 冲突解决
4. 代码备份与还原
5. 权限与分支管理
6. ...
git的安装
最早git是在linux上开发的,很长一段时间在linux和unix上运行,后来逐步移植到window、macOS等主流平台上
下载地址:https://git-scm.com/downloads
window: Gitbash / PowerShell / cmder
macos: terminal / iterm2. macos
linux(Ubuntu) : sudo apt-get intall git
全局配置
git config --global user.name ''
git config --global user.email ''
git config -l 查看配置信息
git目录初始化
git init
git status
将工作区代码, 添加到暂存区(工作区–>暂存区)
git add .
git add xxx.html
将工作区代码,添加到仓库区(暂存区—>仓库区)
git commit -m "备注"
将工作区,直接添加到仓库区(工作区–>暂存区—>仓库区)
git commit -am '注释信息'
查看版本历史
git log 查看版本的详细信息
git reflog 查看版本的大致信息
git log --pretty=oneline
回退历史版本
git reset --hard HEAD
git reset --hard 版本号
git reflog
撤销工作区,暂存区修改
撤销工作区: git checkout 文件名
撤销暂存区: git checkout HEAD 文件名 (暂存区-工作区)
仓库区代码不能撤销
版本对比
git diff HEAD HEAD^ -- xxx.py
误删除文件,恢复
格式1: rm 文件名
恢复1: git checkout 文件名(必须提交记录到暂存区才可以恢复)
格式2: git rm 文件名
恢复2: git reset --hard HEAD^
分支
-
查看分支 git branch -v
-
创建分支 git branch 分支名称
-
切换分支 git checkout 分支名称
git checkout -b 分支名
-
合并分支
git checkout master
git merge 分支名
git push -u origin dev
推送分支到远程分支上 1.git config --global user.name ''
git config --global user.email ''
2.git remote add origin git@gitee.com:bq1183/0816_test2.git
git push -u origin "master"(新建创库)
3.cd existing_git_repo
git remote add origin git@gitee.com:bq1183/0816_test2.git
git push -u origin "master"(已有仓库)
tag标签
例如: git tag -a 标签名 -m '标签描述'
例如: git push origin 标签名
例如: git tag -d 标签名
例如: git push origin --delete tag 标签名
多人操作
例如: git clone 项目地址
例如: git push origin (分支)
git config --global credential.helper cache 十五分钟有效期
git config credential.helper 'cache --timeout==3600' 一个小时有效期
git config --global credential.helper store 长期有效
例如: git pull
多人协作解决冲突
在github上添加多人协作,Collaborators==》添加账号
当push的时候发现冲突
一 git fetch: 同步过来远端文件
然后可已查看 并且可以手动合并
然后在进行提交 ,再push到远端=( git push origin main 同步到远程的仓库)
git diff main origin/main 查看
git merge origin/main 合并一下,之后再取舍,在进行一次提交
git fetch
git diff main origin/main
git merge origin/main -m ""
改完之后在push
二 git pull origin master 拉取过来之后直接合并
配置ssh
cd ~/.ssh
ls 或者 ll
看是否存在 id_rsa 和 id_rsa.pub文件,如果存在,说明已经有SSH Key
ssh-keygen -t rsa -C "xxxxxx@gmail.com"
cat id_rsa.pub
//拷贝秘钥 ssh-rsa开头
新建一个SSH Key
取个名字,把之前拷贝的秘钥复制进去,添加就好啦。
验证: ssh -T git@github.com
之前已经是https的链接,现在想要用SSH提交怎么办? 直接修改项目目录下 .git文件夹下的config文件,将地址修改一下就好了
其他
.gitignore配置忽略文件
.gitkeep 允许空目录提交git
下班push 上班pull
|