## 创建
git init//创建
常用操作
git add <filename> //添加文件
git commit -m "<info>" //提交
git status //查看仓库当前状态
git log //查看历史记录
git reset --hard HEAD //回退到上一个版本
git reset --hard <commit id> //定位版本到commit id
git reflog //查询操作过的命令(命令历史)
git checkout -- <filename> //用版本库版本替代工作区版本(未commit前)
git rm <filename> //删除文件
git clone git@<git url>:<git url> //克隆仓库
Commit ID
由SHA1计算得出,分布式,不能用顺序ID
工作区
电脑里能看到的目录(被控制的目录及文件)
版本库
/.git
暂存库
于版本库下,Git会自动创建第一个分支master,以及一个指向其的指针HEAD
远程仓库
创建SSH Key
ssh-keygen -t rsa -C "[email protected]"
id_rsa私钥,id_rsa.pub为公钥
git push -u origin master //本地库推送到远程
git remote add origin git@server-name:path/repo-name.git //关联一个远程库
加上了-u参数,Git不但会把本地的
master分⽀支内容推送的远程新的master分⽀支,还会把本地的master分⽀支和远程的master 分⽀支关联起来,在以后的推送或者拉取时就可以简化命令
分支管理
增删查改
git branch //查看当前分支
git branch dev //创建dev分支
git checkout dev //切换到dev分支
git checkout -b dev //创建并切换到dev分支
git merge dev //将dev分支的工作成果合并到master分支上
git branch -d dev //删除dev分支
冲突控制
先解决冲突后提交,再合并
git log --graph
//查看分支合并图
管理策略
git merge --no-ff -m "<comment>" //强制禁用Fast forward(此功能在合并后,删除分支会丢掉分支信息)
- 保证master分支是稳定的,dev分支不稳定,用于开发,提交提交到dev分支上
bug分支
git stash //存储当前工作现场(搁置当前未完成工作进行bug修复)
git stash list //查看保存的stash现场id列表
git stash apply |<stash@{0}> //恢复stash现场(stash的内容并不删除)
git stash pop //恢复现场的同时将其删除
Feature 分支
增添一个Feature最好开一个新的分支
若要丢弃一个没有被合并过的分支,可以通过git branch -D name
强⾏行删除
多人协作
git remote origin <git url> //查看远程库信息
git pull
git push origin <branch-name>
git branch --set-upstream branch-name origin/branch-name //建⽴立本地分⽀支和远程分⽀支的关联
git checkout -b branch-name origin/branch- name //在本地创建和远程对应的分支
创建标签
git tag <tag name> //创建标签
git show <tag name> //查看标签信息
git tag -a tagname -m "blablabla..."可以指定标签信息;
git tag -s tagname -m "blablabla..."可以⽤用PGP签名标签;
git push origin tagname //可以推送⼀一个本地标签;
git push origin --tags //可以推送全部未推送过的本地标签;
git tag -d tagname //可以删除⼀一个本地标签;
git push origin :refs/tags/tagname //可以删除⼀一个远程标签。
自定义
- 忽略特殊文件:./gitignore