版本库基本操作
git init 创建版本库,默认本地master分支
git diff filename 对比查看修改前后的文件变化
git diff head -- filename 查看版本库与当前版本文件区别
git rm filename 删除文件
pwd 用于显现当前目录
ls -ah 查看隐藏文件
git config --list 查看所有git配置数据
cat ~/.gitconfig 查看当前配置数据
1、版本回退
第一步: git reset --hard head~n 回退到倒数第n个版本
git reset --hard 版本ID 回退到指定版本
第二步: git checkout -- . 本地代码与版本库保持一致
2、撤销操作
第一步:git reset head 清除暂存区内容
第二步:git checkout -- .
3、本地版本库初始化远程仓库
第一步:github上创建远程库,默认勾选即可。最后一步不要创建README.md文件。
第二步:git remote add origin git://github.com/pencejz/learn_git_dell.git 关联远程库
(git remote remove org 取消远程库)
第三步:git push -u origin master 将本地代码推送到远程库(初始化远程库)
注意:由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
4、分支管理
git branch 查看本地分支
git branch -a / -vv 查看所有分支 / 查看关联分支
git branch 分支名 创建新分支
git checkout 分支名 切换分支
git checkout -b 分支名 创建并切换到新分支
git push origin 本地已存在的分支名 将本地分支推送到远程仓库
git branch -d 本地分支名 删除本地分支
git branch -m [旧分支名] 新分支名 修改分支名称
git push origin -d 远程分支名 删除远程分支
git branch -u origin/远程分支名称 【本地分支名称】 将本地分支和远程分支相关联
git branch --unset-upstream 取消当前关联分支
git fetch --all 获取所有远程分支(当git branch -a 不能获取到所有远程分支时,使用此命令更新分支即可)
5、代码管理
git pull origin 远程分支 拉取远程分支代码到本地当前分支
git push origin 远程分支 将本地当前分支代码推送到远程分支
6、历史查询
git log --author=abc --oneline --before={3.weeks.ago} --after={2010-04-18} --no-merges -5
//--author=abc 作者
//--oneline 简洁显示
//--before={3.weeks.ago} 3周前
//--after={2010-04-18} 18年4月18日后
//--no-merges 隐藏 “合并”提交记录
//-5 显示结果数量
查看本地操作日志
git reflog 【-n】 n表示查询结果显示条数
7、stash暂存
git stash push -m "备注信息" 指定文件地址 //暂存指定文件
git stash push -m "备注信息" -p //暂存多个指定文件(针对每一处改动,y表示确认暂存,n不暂存)
//注意:此命令会创建2个stash,分别对应选中y和n的改动。
git stash //暂存当前分支所有改动。没有备注信息,不建议直接使用
git stash save "备注信息" //暂存所有。执行存储时,添加备注,方便查找
git stash list //查看stash了哪些存储
git stash show //显示第一个暂存的所有文件改动情况,默认show第一个存储
git stash show stash@{$num} //显示指定stash改动,比如第二个 git stash show stash@{1}
git stash show -p //显示第一个存储的代码详细改动
git stash show stash@{$num} -p //显示指定存储代码改动。比如第二个:git stash show stash@{1} -p
git stash apply //应用存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0}
git stash apply stash@{$num} //应用指定存储,比如第二个:git stash apply stash@{1}
git stash pop //命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0}
git stash pop stash@{$num} //应用并删除指定暂存。比如应用并删除第二个:git stash pop stash@{1}
git stash drop stash@{$num} //丢弃stash@{$num}存储,从列表中删除这个存储
git stash clear //删除所有暂存
8、压缩合并(--squash)
定义:将一条分支上的若干个提交条目压合成一个提交条目,提交到另一条分支的末梢。
场景:当一个功能开发完成时,在你的开发分支上,可能会产生几十上百次commit记录。这时你需要你的功能代码合并到主开发分支develop上,这个时候,我们就希望能够将其合并成一次commit,提交到develop分支上。
//dev分支上的所有提交已经合并到当前工作区并暂存
git merge --squash dev
//可以像其他提交一样,把这个改动提交到版本库中
git commit –m "something from dev"
git push origin 指定分支
如果你使用的是gitee,那就更简单了,如下图,合并时选择“扁平化分支”即可。
9、仓库协议切换
//设置为ssh协议
git remote set-url origin git://仓库地址.git
10、忽略已经提交过的文件
// 1、取消跟踪
git rm -r --cached 【目录/文件】
// 2、修改 .gitignore
// 3、提交 .gitignore
11、修改本地已经commit的注释
// 修改最近一次的本地commit(未push到云端)
git commit --amend
// 然后出现命令行编译文件,按i,进入编辑。
//编辑完成后,按:wq,即可。