git是一个开源的分布式版本控制系统,也是个内容管理系统(CMS),工作管理系统;
Git和SVN的区别:
- Git是分布式的,而SVN是集中式的
- Git把内容按元数据方式存储,而SVN是按文件;所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里
- Git和SVN的分支不同,SVN的分支也就是版本库中的一个文件
- Git没有一个全局的版本号,而SVN有
- Git的中央服务器就是方便交流修改,而SVN是真的一个中央服务器
- Git的内容完整性要优于SVN
git提交记录等显示的名字,告诉git你是谁:
git config --global user.name "xxx"
git config --global user.email "xxx@xxxxx"
创建一个空的仓库:
git init
从远程仓库克隆到本地:
git clone 地址
代码提交一般的步骤:
git add . // 提交全部修改
// git add read.txt 交read文件修改
git commit -m "描述"
查看当前项目仓库的状态:
git status
查看某个文件修改的内容:
git diff 文件名
在当前分支下新建分支并且切换:
git checkout -b dev // dev新分支,并且切换到dev
// 相当于以下两个命令的合并
// git branch dev + git checkout dev
查看分支:
git branch // 查看本地所有分支
git branch -d dev // 删除dev这个分支(本地的分支)
git push origin -d dev // 删除dev这个分支(远程分支)
git branch -r // 查看远程分支
git branch --all // 查看所有分支
合并指定分支到当前分支:
git merge release // 将release分支合并到当前分支
取消git合并分支:
git merge --abort // 取消git合并分支
查看远程库信息:
git remote
git remote -v // 查看详细信息
将新建的分支与远程库联系起来:
git checkout -b dev // 新建dev分支
git push origin dev // 先push到远端再设置关联
git branch --set-upstream-to=origin/dev dev // 关联,远程分支名最好与本地一样
关于git的撤销:
git reset --soft HEAD~1 撤回最近一次的commit(撤销commit,不撤销git add, 也可直接写 git reset HEAD~1)
git reset --mixed HEAD~1 撤回最近一次的commit(撤销commit,撤销git add,保留文件修改部分,不会还原修改的文件)
git reset --hard HEAD~1 撤回最近一次的commit(撤销commit,撤销git add,还原改动的代码,之前修改的文件会还原, 慎用--hard参数)
git回滚代码:git reset --soft commit_id 撤回该commit_id的commit
git stash的使用(将修改的内容存储起来), 修改的代码不想提交但是又要切换分支,可以暂时将修改的内容存储起来
git stash save "message" // 存储修改的内容并且加上备注
git stash list // 查看存储列表,git stash save一次会形成一条记录
git stash pop // 弹出第一条存储列表
git stash pop stash@{n} // 弹出第n条存储列表
git stash clear // 清除所有的存储记录
git stash drop stash@{n} // 丢弃第n条存储记录
git commit绕过eslint检测:
git commit -m "message" -n
打标签tag
// 本地新增有备注的tag(默认在当前分支最后一个commit上添加tag)
git tag -a 标签名 -m '备注内容'
git tag 标签名 commit // 在指定commit上新增tag
git push origin 标签名 // 将tag推送到远程分支
查看本地提交历史:
git log // 查看本地提交历史
git log --oneline // 查看本地提交历史简洁版本
git log --grep=word // 查找提交历史中有改动的关键字
git show commitid // 提交历史查找是否存在某个commit id
git show commitid // 查看某个commit中修改的内容