Git常用命令整理

配置命令

配置用户名和邮箱

git config --global user.name "JohnieXu" // 配置全局用户名为JohnieXu
git config --global user.email "[email protected]" // 配置全局邮箱为[email protected]

查看配置

git config -l // 查看git全局配置信息
or
git config --list

常用命令

初始化项目

git init

克隆项目

git clone

git clone https://github.com/JohnieXu/eleme-web-vue.git
or
git clone [email protected]:JohnieXu/eleme-web-vue.git

查看项目信息

  • 综合信息
git status // 查看当前项目的所有综合信息
  • commit提交信息
git log --graph --pretty=oneline --abbrev-commit // 以图形的形式显示commit的提交记录

推送更新

git add . => git commit => git push

git add . // 添加所有修改修改过的文件,仅添加**当前目录下**的所有修改过的文件,主要运行git命令的路径
git commit -m 'fix a bug' // 将修改提交到(本地项目的)暂存区, 提交的描述内容为"fix a bug"
git push -u origin master // 推送当前分支下已提交的更新到origin仓库的master分支下,同时设置当前提交的origin和master为默认设置

管理修改

  • 已修改文件未添加到暂存区
git checkout -- . // 撤销当前所有文件做的修改

-- file: file为需要撤销修改的文件路径

  • 已修改文件并已添加到暂存区
// 撤销全部文件
git reset HEAD // 撤回暂存区的所有文件到工作区(没有撤销对文件的修改)
git checkout -- . // 撤销所有文件的修改
// 撤销指定文件
git reset HEAD readme.txt // 将暂存区的readme.txt文件撤回工作区
git checkout -- readme.txt // 撤销readme.txt文件的修改
  • 已提交commit未push到远程仓库
git reflog // 查看最近的commit列表
git reset --hard commit_id // 退回到commit_id对应的commit版本

commit_id:需要退回的版本的commit的ID(hash值)

分支管理

  • 查看分支
git branch // 查看所有分支, *对应当前分支
git remote -v // 查看关联的远程分支详情
  • 创建分支
git branch dev // 创建dev分支
  • 切换分支
git checkout dev // 切换到dev分支
or
git checkout -b dev // 创建并切换到dev分支
  • 拉取特定分支
git checkout -b dev origin/dev // 创建并且换到dev分支,同时将origin上的dev分之同步pull到本地dev分支

本地分支和origin上的分之关联不要求分之名称一致,推送分之时候注意推送的本地分之名称和origin上的分之名称

  • 合并分支
git checkout master // 切换到master分支
git merge dev // 将dev分支合并到master分支
or
git merge --no-ff -m "merge with no-ff" dev // 非fast-forward模式合并dev分支到master分支

--no-ff: 合并方式为禁用Fast-forward, 即合并的时候会另外提交一个commit记录

-m: 本次合并commit的描述内容

  • 推送分支
git push origin master // 将master分支推送到远程的origin关联的仓库上
or
git push -u origin master // 将master分支推送到远程的origin关联的仓库上, 设置默认推送master至origin

-u: 第一次推送时候加上-u的话, 将第一次的推送源和分支保存为默认设置, 下次git push就相当于git push origin master

  • 删除分支
git branch -d dev // 删除dev分支(dev已经被合并)
git branch -D dev // 强制删除dev分支(dev分支未被合并)

  • Bug分支

应用场景: 当前正在自己的分支-dev-xu上进行新功能开发, master分支发现Bug需要立即修复。

git stash // 将当前的工作区储存起来, git status查看工作区是干净的
git checkout master // 切换到master分支
git checkout -b bug-101 // 从master分支创建新的对应的bug-101分支
git add . && git commit -m 'fix bug 101' // 修复bug并提交修改
git checkout master && git merge --no-ff -m 'merged bug fix 101' bug-101 // 将bug-101分支的修改合并到主分支
git branch -d bug-101 // 删除bug-101分支
git stash pop // 恢复之前工作区以便继续新功能的开发, 同时删除stash记录(git stash list看不到stash的任何内容) <==> git stash apply && git stash drop
  • 分支策略

master分支: 最稳定的分支,仅用来发布新版本,平时对代码做的修改不能直接网上push

dev分支: 是不稳定的, 一般在新版本发布的时候把dev分支合并到master上,在master分支发布新版本

个人分支: 每个人都有自己的分支,提交代码的时候往dev分支上合并

分支策略

标签管理

  • 创建标签

适应场景: 对当前最新的提交commit打标签

git checkout master // 切换到需要打标签的分支
git tag v1.0 // 打一个名为v1.0的标签
git tag // 查看已打标签列表

适应场景: 对当历史提交的commit打标签

git log --pretty=oneline --abbrev-commit // 以简洁的形式列出所有commit记录
git tag v0.9 commit_id // 对commit_id对应的这次commit打一个名为v0.9的标签
git tag // 查看标签记录

带有说明的标签

$ git tag -a v0.1 -m "version 0.1 released" commit_id // 创建带有说明的标签
  • 查看标签
git show v0.9 // 查看v0.9这一个标签的详情

-a: 指定标签名

-m: 指定说明文字

  • 推送标签
git push origin v1.0 // 推送v1.0这一个标签到origin关联的远程仓库
git push origin --tags // 一次性推送所有标签到origin关联的远程仓库
  • 删除标签

适用场景: 要删除的标签仅创建在本地未推送到远程仓库

git tag -d v0.9 // 删除v0.9这一个标签(仅本地删除该标签)

适用场景: 要删除的标签已经推送到远程仓库, 并且也要删除远程仓库上相应的标签

git tag -d v0.9 // 本地删除v0.9这一个标签
git push origin :refs/tags/v0.9 // 删除origin关联的远程仓库的v0.9这一标签(删除也用push), 这是github删除远程仓库标签, coding等其他的远程仓库未测试

进阶命令

多个远程仓库管理

适用场景: 当前本地的git项目是clone自https://github.com/JohnieXu/eleme-web-vue.git, 同时这个项目又需要同步关联coding上的另一个远程仓库https://git.coding.net/JohnieXu/eleme-web-vue.git, 要求每次push代码同步push到两个远程仓库。

git remote add origin https://github.com/JohnieXu/eleme-web-vue.git
git remote add coding https://git.coding.net/JohnieXu/eleme-web-vue.git
git remote add all https://github.com/JohnieXu/eleme-web-vue.git // 将all关联到github上的远程仓库
git remote set-url --add --push all https://github.com/JohnieXu/eleme-web-vue.git // 在all上追加push对应的远程仓库地址为github的地址
git remote set-url --add --push all https://git.coding.net/JohnieXu/eleme-web-vue.git // 在all上追加push对应的远程仓库地址为github的地址
git add . && git commit -m 'init' && git push -u all master // all分支同时关联了origin和coding两个远程仓库, 推送all即可同步push代码到两个远程仓库

你可能感兴趣的:(Git常用命令整理)