廖雪峰老师官方博客
尊敬的阮一峰老师官方博客
官方git学习地址
Git中文件的状态周期
- Untracked:未跟踪(新建文件/删除文件)
- Unmodified:未修改(commit之后或clone之后的文件)
- Modified:已修改(编辑文件之后)
- Staged:已暂存(add之后commit之前)
Git文件所属区域概念解读
- Workspace:工作区
- Index / Stage:暂存区
- Repository:仓库区(或本地仓库)
- Remote:远程仓库
git 指令学习
1、基本配置
git config --global user.name “your Name” 全局设置你的登陆账号
git config --global user.password “your Password” 全局设置你的登陆密码
git config --global user.email "email@pingan.com.cn" 全局设置你的邮箱
git config --list 查看所有全局配置
注意git config命令的–global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,
当然也可以对某个仓库指定不同的用户名和Email地址。
2、常用命令
madir npm 创建文件夹指令
cd npm 进入指令
pwd 显示当前目录
git init 把目录变成git可以管理的仓库
git add . 把所有修改文件推送到暂存区
git add test.txt 把指定文件推送到暂存区
git add -f test.txt 强制添加文件到暂存区
git commit -m “add title” 把所有暂存区文件添加到仓库
git status 查看当前工作区的状态
git diff 查看工作区和暂存区的对比差异(difference)
git diff – cached 查看暂存区和分支的对比
git diff HEAD – test.txt 查看工作区和版本库里面最新版本的区别
git log 显示从近到远的提交日志
git log --pretty=oneline 单行显示所有提交日志
git log --pretty=oneline 文件名 显示某个文件的所有提交日志
git show [commit时的ID号] 显示某次的修改记录
git reset --hard HEAD^ 回退到上一个版本 (HEAD^^回退到上上一个版本,以此类推,HEAD~100往上100个版本)
git reset --hard 3628164 回退到指定的版本,commit时会自动升成一个十六进制id号,一般会很长,可只写前几位
git reflog 显示所有操作仓库的命令历史,可以用git reset + 命令历史ID 方便地回退到特定版本
git rm test.txt 删除工作区中文件
git checkout – test.txt 撤销test.txt文件在工作区的修改或删除,回退到最近一次add、commit或rm时的状态
git push 把本地仓库的最新提交到远程仓库
git pull 把远程仓库的最新版本下载到工作区
3、远程仓库
git remote -v 查看当前所有远程仓库
git remote rm <远程库名> 解除其中一个远程仓库
git remote add origin git@server-name:path/repo-name.git 添加远程仓库地址
要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。
Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。
4、分支管理
git branch 查看分支
git branch dev 创建dev分支
git checkout master 切换到master分支
git checkout -b dev 创建dev分支并切换到此分支
git merge dev 合并指定分支到当前分支
git merge --no-ff -m “describe” dev 合并dev分支,并禁用Fast forward
git branch -d dev 删除dev分支
git branch -D dev 强行删除dev分支
git log --graph 查看分支合并图(git log --graph --pretty=oneline --abbrev-commit)
5、bug分支
git stash 把当前工作区分支“储藏”起来
git stash list 查看‘储藏’的分支
git stash apply 恢复储藏的内容,stash内容并不删除
git stash drop 删除stash内容
git stash pop 恢复储藏并删除
6、多人协作
git remote 查看远程仓库的名称,默认是origin
git remote -V 查看远程仓库的详细信息(没有推送权限就看不到push地址)
git remote add origin git@server-name:path/repo-name.git 添加远程仓库地址
git push -u origin master 将本地仓库推送到远程仓库的主分支上面,第一次推送才加-u
git push origin dev 把dev分支推送到远程分支
git checkout -b dev origin/dev 创建远程仓库origin的dev分支到本地,并进入分支
git branch --set-upstream dev origin/dev 建立本地分支与远程分支的链接关系
git pull 从远程仓库抓取分支到本地工作区
7、合并冲突
git status 查看有哪些冲突文件
git mergetool 通过git默认的合并工具查看冲突的详情代码,也可以通过git config 命令配置第三方的图形化合并工具
git add 通过暂存文件标记为已解决状态
git merge --abort 撤销当前合并
git reset --hard 如果合并完成后又发现了一个错误,可以通过此命令回滚到冲突前的状态
8、标签管理
git tag 查看所有标签
git tag v1.0 给当前分支创建一个v1.0的标签
git tag -a v0.1 -m ‘describe’ 3628164 创建带有说明的标签,-a指定标签名,-m指定说明文字
git show v1.0 显示标签v1.0对应的commit id号所有信息
git push origin v1 推送指定标签到远程仓库
git push origin --tags 推送本地所有标签到远程仓库
git tag -d v1.0 删除本地v1.0标签
git tag origin :refs/tags/v1.0 删除远程仓库的v1.0标签
9、自定义git
工作区根目录下有一个.gitignore 文本文档,里面可以添加要忽略的特殊文件
git config --global alias.st status 设置status的别名,现在可用git st 代替
git config --global alias.co checkout 设置checkout的别名为co
git config --global alias.ci commit 设置commit的别名为ci
git congig --global alias.br branch 设置branch的别名为br
git config --global alias.last ‘log -1’ 配置一个git last,让其显示最后一次提交信息