创建和回退
下载地址
https://git-scm.com/download
Git 全局设置:
设置用户信息
git config --global user.name "name"
git config --global user.email “hello@tea.cn”
查看配置信息
git config --list
注意:上面设置的user.name和user.email并不是我们在注册码云账号时使用的用户名和邮箱,此处可以任意设置。
创建本地仓库执行命令:
git init
git分为工作区、暂存区、版本库:
版本库:.git隐藏文件夹就是版本库,版本库中存储了很多配置信息、日志信息和文件版本信息等
工作区:包含.git文件夹的目录就是工作区,也称为工作目录,主要用于存放开发的代码
暂存区:.git文件夹中有很多文件,其中有一个index文件就是暂存区,也可以叫做stage。暂存区是一个临时保存修改文件的地方
使用如下命令可以查看版本记录:
git log
//简短log
git log --pretty=oneline
git log --pretty=oneline --graph
查看我们的操作记录,查看版本号:
git reflog
使用如下命令查看当前工作树的状态:
git status
使用如下两条命令可以创建一个版本:
git add 文件名.格式
//git add *
git commit –m '版本提交说明1'
撤销工作区修改可以使用(没使用add):
git checkout -- 文件名.格式
把暂存区的修改撤销掉,重新放回工作区(使用了add,没使用commit):
git reset HEAD 文件名.格式
现在若想回到某一个版本,可以使用如下命令(使用了commit):
git reset --hard HEAD^
//或者回退1个/100个版本
git reset --hard HEAD~1
git reset --hard HEAD~100
假如我们现在又想回到回退前的版本(使用了commit),可以使用如下命令:
git reset --hard 版本号
对比工作区和某个版本文件的不同:
git diff HEAD -- 文件名.格式
对比两个版本间文件的不同:
git diff HEAD HEAD^ -- 文件名.格式
删错了,可以直接使用(还在工作区,没使用add):
git checkout –- 文件名.格式
确实要从版本库中删除文件:
git rm 文件名.格式
git commit –m '版本提交说明'
远程仓库
查看远程仓库:
git remote
git remote -v
本地仓库,添加到远程仓库:
git remote add
git remote add <shortname> <url>
git remote add origin https://gitee.com/...../....git
从远程仓库克隆:
git clone
git clone [url]
推送到远程仓库:
git push
git push [remote-name] [branch-name]
git push origin master
从远程仓库拉取:
git pull
git pull [short-name] [branch-name]
git pull origin master
如果当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,此时再从远程仓库拉取文件的时候会报错(fatal: refusing to merge unrelated histories )。解决此问题可以在git pull命令后加入参数–allow-unrelated-histories:
git pull origin master --allow-unrelated-histories
分支管理
截止到目前只有一条时间线,在git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交0的,所以,HEAD指向的就是当前分支。
查看当前有几个分支并且看到在哪个分支下工作:
git branch
列出所有远程分支:
git branch -r
列出所有本地分支和远程分支:
git branch -a
创建一个分支dev,并切换到其上进行工作:
git checkout -b dev
//只创建分支
//创建分支命令格式:git branch [name]
git branch dev
推送至远程仓库分支命令格式:
git push [shortName] [name]
切换回master分支:
//切换分支命令格式:git checkout [name]
git checkout master
当前在master分支,把dev分支的工作成果合并到master分支上:
git merge dev
//情况一:Fast-forward,这次合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快
//情况二:冲突了,先处理冲突文件,在add、commit提交冲突文件。
//情况三:快速合并不能成功而且合并时没有冲突,这个时候会合并之后并做一次新的提交,ctrl+x
强制禁用fast-forward
模式:
git merge --no-ff -m '版本提交说明' dev
合并完成后,就可以放心地删除dev分支:
git branch -d dev
想把当前分支“储藏”起来,切换到别的分支:
git stash
//切换回来后
//git stash list
git stash pop //恢复工作现场
标签
列出已有的标签:
git tag
创建标签,将标签推送至远程仓库:
git tag [name]
git push [shortName] [name]
检出标签:
git checkout -b [branch] [name]
github
克隆项目
git clone ...ssh...
推送分支,就是把该分支上的所有本地提交推送到远程库:
git push origin 分支名称
将本地分支跟踪服务器分支:
git branch --set-upstream-to=origin/远程分支名称 本地分支名称
推送分支,就是把该分支上的所有本地提交推送到远程库:
git push
git push origin 分支名称
从远程分支上拉取代码:
git pull orgin 分支名称
git三剑客
配置
作用域:
//local只对某个仓库有效
git config --local
//global对当前用户所有仓库有效
git config --global
//system对对系统所有登陆的用户有效
git config --system
显示config的配置-加--list
git config --list --local
git config --list --global
git config --list --system
配置user信息
git config --global user.name 'your_name'
git config --global user.email 'your_email'