git简介
- git是一个分布式的版本控制系统。例如我们一个小团队合作开发一个项目,我们可以先建立一个远程仓库,需求分析,搭建大体框架,将项目框架上传至远程仓库,队员可以git clone项目,各自完成自己负责的部分,完善项目等,写好之后还可以比对之前的版本,本地项目写好之后上传至远程仓库,出现错误还可以版本回退等等,总之,git很强大,非常好用。
git安装
windows计算机安装git
linux 计算机安装git
- 例如Ubuntu:
sudo apt install git
即可。
git实用教程
git配置
- 用户配置,相当于个人身份证,每一次 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改:
git config --global user.email "xx@xxx.com " git config --global user.name "xxx"
- 查看git配置
git config --list
认识使用git
- git图解
git的理解及简单使用
- git可分为工作区、暂存区、本地仓库和远程仓库
- 工作区:git版本库所在的目录即为工作区。
- 暂存区:英文叫stage, 或index。一般存放在 “.git目录下” 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
- 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
- 远程仓库:建立在远程服务器上的版本库。
git init
在当前目录初始化一个版本库git add .
提交工作区所有变化到暂存区git add -u
提交工作区更改过的文件到暂存区git commin -m "提交说明"
将暂存区文件提交到版本库git pull [shortname] [分支]
拉取远程仓库到本地仓库git push [shortname] [分支]
将本地仓库推送到远程仓库- 注意
origin
是git clone
的默认shortname
git常用命令
-
git 基本使用:
git init
——初始化仓库git status
——查看仓库的状态git log
——查看提交日志git diff
——查看更改前后的差别
-
git 分支操作:
git branch
——显示分支表git checkout -b "分支名"
——创建、切换分支git merge
——合并分支git log -graph
——以图表形式查看分支
-
git 更改提交的操作
git reset
——回溯历史版本git commit --amend
——修改提交信息git rebase -i
——压缩历史
-
git 推送至远程仓库
git remote add [shortname] [url]
——添加远程仓库git push [shortname] [分支名]
——推送至远程仓库
-
git 从远程仓库获取
git clone
——获取远程仓库git pull [shortname] [分支名]
——获取最新的远程仓库分支
-
git使用技巧:
- git查看远程仓库:
git remote
- git 更改远程仓库:
git remote rm origin [url] git remote add origin [url]
- git创建远程仓库:
- git查看远程仓库:
容易出现的一些错误
-
git push时出现错误:
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.Please make sure you have the correct access rights and the repository exists.
即:git@github.com: Permission denied (publickey).
fatal: 无法读取远程仓库。- 原因:缺少公钥
- 解决方法:生成公钥并添加至你的github,可以参考官网的这篇文章。
-
git push时出现错误:
ERROR: Permission to commonyzb/job.git denied to deploy key
fatal: Could not read from remote repository.- 原因:错误,允许此git仓库部署密钥。因为之前的密钥只绑定了之前的仓库,这个仓库就不能用了。
- 解决方法:将此公钥绑定到账号上,而不是某一个仓库,在账号-setting中绑定公钥。
-
git pull时出现错误:
fatal: refusing to merge unrelated histories- 原因:远程库觉得和本地库不相干,拒绝了请求,参考这篇文章
- 解决方法:强制合并分支
git pull origin master --allow-unrelated-histories