git 常用命令总结(最新版)

Git

面试常考的 git merge 和 git rebase 区别
https://www.jianshu.com/p/f7ed3dd0d2d8

在什么场景下,使用git rebase 和 git merge
从目前的开发流程来看,在合并分支的时候最好使用 git merge,使用 git rebase 是有风险的
当你要拉去的分支的是你当前开发的分支,可以使用 git pull --rebase

  1. 分布式
  2. 版本控制
  3. 软件/安装工具

集中式版本控制

svn

缺点:

  1. 断网后无法连接版本中心控制器,无法提交

git 结构

  1. 工作区 — 写代码

  2. 暂存区 — 暂时存储

  3. 本地库 — 历史版本

  4. 从工作区 – 暂存区

git add .
  1. 从暂存区 – 本地库
git commit 

代理托管中心

维护远程库

  1. gitlab
  2. github
  3. 码云

git 命令行操作

  1. git 初始化
git init
  1. 设置签名

项目级别/用户级别

git config 
git config --global
1. git status

查看工作区/暂存区的状态

2. 撤销 git add

**git add **

**git add ** 将文件从工作区添加到暂存区

1)撤销 git add 新添加的文件(git add <file>)

从暂存区撤销到工作区

git rm --cached <file>
2)撤销工作区的修改(还没有 git add)
git restore <file>
git checkout <file>
3)撤销暂存区的修改(git add -u)

从暂存区到工作区

git restore --staged <file>
git reset Head <file>
3. git log
1)log 格式化显示
git log --oneline
2)git reflog

HEAD@{0} 移动当前版本需要多少步

$ git reflog
c6adb25 (HEAD -> master) HEAD@{0}: commit: v5
40203f7 HEAD@{1}: commit: v4
494e90f HEAD@{2}: commit: v3
b13ff4e HEAD@{3}: commit: v2
f969935 HEAD@{4}: commit: update
625bf57 HEAD@{5}: commit (initial): first commit
4. git reset 版本前进和后退
  1. 基于索引值操作 【推荐】
$ git reset --hard 5b1a394
$ git reflog
5b1a394 (HEAD -> master) HEAD@{0}: reset: moving to 5b1a394
51da3d4 HEAD@{1}: commit: v8
214196b HEAD@{2}: commit: v7
5b1a394 (HEAD -> master) HEAD@{3}: commit: v6
c6adb25 HEAD@{4}: commit: v5
40203f7 HEAD@{5}: commit: v4
494e90f HEAD@{6}: commit: v3
b13ff4e HEAD@{7}: commit: v2
f969935 HEAD@{8}: commit: update
625bf57 HEAD@{9}: commit (initial): first commit
  1. 使用 ^ 符号

返回上一次提交

git reset --hard Head^
  1. 使用 ~ 符号
git reset --hard Head~3
1)–soft

仅仅本地库移动 Head 指针

2)–hard

在本地库移动 Head 指针,并重制暂存区、工作区

3)–mixed

在本地库移动 Head 指针,并重制暂存区

撤销 git commit
$ git reset --hard Head^ # 不保存本地修改,返回上一个版本
$ git reset --soft Head^ # 保存本地修改,暂存区中还存在(git add)
$ git reset --mixed Head^ # 保存本地修改,工作区保存修改

删除文件并找回:

  1. 前提是删除前已经提交到本地库
  2. git reset --hard Head
4. git diff
$ git diff <file> # 工作区文件和暂存区进行比较
$ git diff [指针] <file> # 工作区文件和历史版本库进行比较
5. git 分支
$ git branch -v # 显示所有的分支
$ git checkout # 切换分支
$ git merge # 合并分支
6. Hash 算法

MD5

SHA-1

CRC32

7. 关联远程仓库
$ git remote add origin <url>

origin 新建关联远程仓库的别名

1)推送到远程分支
$ git push origin <branch>
2)git clone
3)git pull

fetch + merge

8. Git 工作流
  1. 集中式工作流

SVN

  1. git-flow
  2. forking
9. Git 拉去远程分支
# 查看远程分支
git branch -r
# 创建本地分支并关联
git checkout -b 本地分支 origin/远程分支

# 已有本地分支创建关联
git branch --set-upstream-to origin/远程分支名  本地分支名
# 拉取
git pull

# 如果远程没有分支,推送本地分支到远程
git push origin dev:dev
10. git rebase 使用
1)分支合并
# 先checkout 到 feature 分支
$ git checkout feature
$ git rebase master
# 如果有冲突,解决冲突
$ git add <file>
$ git rebase --continue
# 切回原分支
$ git checkout master
$ git merge feature
2)远程分支
$ git pull --rebase
-----------------------------------
$ git pull
$ git reabse
11. Git 设置别名
1)命令设置
git config --global alias.st status
git config --replace-all --global alias.brv "branch --v"
2)配置文件

.gitconfig

[alias]
	st = status
	cf = config
	ck = checkout
	fh = fetch
	br = branch
	brv = branch --v
	lg = log
12. Git 对比两分支diff
$ git diff branch1 branch2 --stat
$ git diff branch1 branch2 <file>
$ git diff branch1 branch2 
13. Git 对比暂存库和本地库的区别
$ git diff --cached 
$ git diff --cached HEAD
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值