Git-logo.svg.png## 创建

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