1. 版本控制工具
集中式:CVS、SVN---版本库是集中存放在中央服务器,依赖网络
分布式:Git ---不必联网、分支管理
2. 初始化配置
cd E:
mkdir Git
cd Git
git config --global user.name 'zyanwei*'
git config --global user.email 'zyanwei*@163.com'
git config --list 测试
git init
git config --list
3. 公钥设置
1 . ssh-keygen -t rsa -C "zyanwei*@163.com" -f "gitee_id_rsa"
2 . 一直按回车( Enter) ,不要输入任何密码之类,生成 ssh key pair,win下位置:C:\ Users\ zy\ .ssh
3 . ssh-add C:/Users/zy/.ssh/id_rsa
如果出现:Could not open a connection to your authentiacation agent,则执行` ssh-agent` ,再执行` ssh-add C:/Users/zy/.ssh/id_rsa`
4 . cat C:/Users/zy/.ssh/id_rsa.pub,将公钥复制出来
5 . gitee右上角设置--SSH公钥-添加公钥
6 . 测试公钥设置:ssh -T git@gitee.com
出现:You've successfully authenticated, but GITEE.COM does not provide shell access 即为成功。
4. 连接远程仓库
git remote rm origin
git remote add origin git@gitee.com:zyanwei*/python10.git
git pull origin master
git push -u origin master
git branch jenkins
git checkout jenkins
git branch --set-upstream-to= origin/jenkins jenkins
5.常用命令
+ Add文件
git add README.md
+ commit文件
git commit -m "add a readme file"
+ 查看状态
git status
+ 恢复到暂存
git reset README.md
+ 文件暂存时可恢复到修改前
git checkout -- README.md
+ 查看历史(id)
git log -- 查看当前分支之前的log
git flog -- 查看当前版本之后的log
git log --decorate --oneline --graph
+ reset命令
语法:git reset --mixed HEAD~ ( ~代表上一个版本,~2或~~上上一个版本并依次类推)
- 移动HEAD的指向,将其指向上一个快照
- 将HEAD移动后指向的快照回滚到暂存区域
语法:git reset --soft HEAD~
- 移动HEAD的指向,将其指向上一个快照
语法:git reset --hard HEAD~
- 移动HEAD的指向,将其指向上一个快照
- 将HEAD移动后指向的快照回滚到暂存区域
- 将暂存区域的文件还原到工作目录
对比总结:
- 移动HEAD的指向(--soft)
- 将快照回滚到暂存区域([ --mixed] ,默认)
- 将暂存区域还原到工作目录(--hard)
+ 回滚快照:
- 语法:git reset id -- 回滚版本,只需输入id前5位
- 语法:git reset id file -- 回滚个别文件
+ 比较快照
- 语法:git diff id1 id2 -- 比较任一2个版本
- 语法:git diff idn -- 比较当前目录和任一版本
- 语法:git diff -- cached idn -- 比较任一版本和暂存区域
+ 更正提交
- 语法:git commit --amend 进入编辑,编辑方法同vim,i进入编辑,q!保存退出
- 语法:git commit --amend -m "。。。" 修改提交说明
+ 删除文件
- 语法:git rm < file> 删除工作区域和暂存区域的文件,即取消跟踪.如果文件已经commit,则需要使用命令:git reset --soft HEAD~
- 语法:git rm -f < file> 强制删除Stage和Working Directory的文件
- 语法:git rm --cached < file> 删除Stage中的文件
+ 重命名文件
- 语法:git mv < oldFilename> < newFilename>
+ 创建分支
- 语法:git branch < name>
+ 切换分支
- 语法:git checkout < name>
- 语法:git checkout -d < name> 创建并切换
+ 合并分支
- 语法:git merge < name> 合并到当前分支
+ 删除分支
- 语法:git checkout < name>
- 语法:git branvh -d < name>
强制覆盖本地分支
- git fetch --all //只是下载代码到本地,不进行合并操作
- git reset --hard origin/分支名如master //把HEAD指向最新下载的版本
远程提交
- git add *
- git commit -m '*'
- git pull
- git push origin master:zhangyi 本地分支/远程分支
- 远程merge必须在page页中操作
服务器代码合并本地代码
- git pull
error: Your local changes to the following files would be overwritten by merge
Please commit your changes or stash them before you merge.
解决办法
- git stash //暂存当前正在进行的工作。
- git pull origin master //拉取服务器的代码
- git stash pop //合并暂存的代码
服务器代码覆盖本地代码
- git reset --hard //回滚到上一个版本
- git pull origin master
6. gitee和gitlab同时配置
在.ssh目录下生成公钥,并将公钥添加到网站中
ssh-keygen -t rsa -C "zyanwei*@163.com" -f "gitee_id_rsa"
ssh-keygen -t rsa -C "zyanwei*@163.com" -f "gitlab_id_rsa"
配置config(无文件则创建),文件内容如下
vi .ssh/config
-------------------------------------------------
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitee_id_rsa
Host gitlab.com
HostName ssh.gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab_id_rsa
-------------------------------------------------
测试
ssh -T git@gitee.com
ssh -T git@gitlab.com
7. 其他配置
git config --global core.autocrlf false
git config --global gui.encoding utf-8
git config --global core.quotepath off
git config --global core.ignorecase false
git config --global core.autocrlf input
git config --global color.branch auto
git config --global color.diff auto
git config --global color.interactive auto
git config --global color.status auto
git config --global color.ui auto