https://gitee.com/all-about-git git大全
概述
- 官网:https://git-scm.com/
- Git是一个免费的、开源的分布式版本控制系统
- 代码托管中心(远程库):局域网GitLab、互联网GitHub、码云Gitee
安装Git
- 官网下载,直接默认安装即可(尽量不要修改路径),鼠标右键出现
Git Bash Here
即安装成功。 - 查看版本:git bash 里面执行
git --version
- git bash很卡,清理windows临时目录可以解决:C:\Users\Administrator\AppData\Local\Temp
常用命令
- 查看所有命令
git --help
- 查看某个命令的帮助文档
git add --help
, 会出现网页的文档供查看
# 设置用户签名
$ git config --global user.name xxx
$ git config --global user.email xxx@example.com
# 检查配置
$ cat ~/.gitconfig
# 初始化本地库 将当前目录变成一个git仓库 会生成一个.git目录
$ git init
# 查看状态
$ git status
# 添加修改到暂存区(新文件、修改文件、删除文件都要add到stage)
$ git add hello.txt
# 删除暂存区里的文件
$ git rm --cached hello.txt
# 提交到本地库 -m说明 不写也会打开一个编辑器让写
$ git commit -m "my first commit" hello.txt # 或者git commit hello.txt -m "comment"
$ git commit -m "my first commit" # 提交所有暂存区的修改
$ git commit -am "hot fix first commit " # 相当于add + commit 自动提交所有修改到暂存区, 并提交到本地库
# 查看版本日志
$ git reflog # 引用日志, 记录所有版本的版本号, 包括回滚, 精简版
$ git log # 查看详细日志(提交作者和提交日期), 只有当前版本和以前的版本信息
$ git log --pretty=oneline # 在一行内显示
# 版本穿梭, 移动的是head指针, master分支 -> head指针 -> 具体的版本
$ git reset --hard xxxxxxx # 根据git reflog中的版本号进行穿梭版本
$ git reset --hard HEAD^ # ^^表示回退两个版本,HEAD~100表示回退100个版本
分支管理
$ git branch --help # 查看所有branch命令
$ git branch # 查看所有分支 *号表示当前分支
$ git branch -v # 查看所有分支
$ git branch hot-fix # 创建分支hot-fix
$ git check hot-fix # 切换到分支hot-fix
$ git merge hot-fix # 将hot-fix分支合并到当前分支 如果两个分支同时修改了同一个文件会有冲突 当前状态会在MERGING状态 此时需要编辑冲突的文件 其中会标出当前分支修改的部分 hot-fix分支修改的部分 修改后再提交
$ git branch -d hot-fix # 删除分支, 需要保证该分支的内容已经合并到它的HEAD版本的分支
团队协作:
- 团队内协作,一个远程库即可,需要创建者加入权限,开发者clone代码到本地库,修改后push,其他成员pull即可
- 跨团队协作,fork别的远程库,修改后push,发起pull request请求远程库拉取自己修改后的代码,审核通过会merge到他们的远程库里
公共库都可以clone,不需要验证,首先需要在github上创建远程仓库git-demo,可以在github上邀请协作
ssh免密登录
# 由于本地git仓库和远程git仓库是通过SSH加密的,所以需要配置ssh,首先本地生成ssh的公钥和私钥,将公钥配置到github上,配置了ssh免密登录才可以使用git@github.com:YourName/xxx.git,否则只能使用https://github.com/YourName/xxx.git,且需要验证
$ ssh-keygen -t rsa -C bingmous@163.com # 直接回车,在用户目录下会生成.ssh目录,里面有公钥和私钥
团队内协作
####已有本地仓库,在github上创建仓库后,将本地仓库同步到远程库
$ git remote add ori https://github.com/bingmous/git-demo.git # 添加远程库 git remote add 别名 地址(远程仓库的地址)
$ git remote add origin https://gitee.com/bingmous/git-demo.git # gitee 注意ori只是一个别名
$ git remote -v # 查看远程库,会有fetch和push两个 -v表示详细
$ git push -u ori master # 推送当前库到远程库(第一次推送)-u使用ori作为上游
$ git pull origin master # 拉取最新代码
####直接从远程库clone
$ git clone https://gitee.com/bingmous/git-demo.git # clone做了三件事 拉取代码 初始化本地仓库 创建远程库别名(默认为origin)
跨团队协作
- fork一下,会在自己的远程库里多一个fork的库
- 修改代码后,提交,并创建pull request,发送pull request,在对方的仓库下就可以看到你的pull request
- 对方看到pull request后可以看到修改的代码,并与自己的代码合并