Git常用指令整理、git rebase和git merge的区别、git pull和git fetch区别

实习期间,公司都用Git来管理代码
这里总结下:

Git

1. 结构图

请添加图片描述

Workspace:工作区
Index / Stage:暂存区
Repository:仓库区(或本地仓库)
Remote:远程仓

2. 基本命令

# 基本操作
git init                       # 初始化
git add filename               # 把文件添加到暂存区
git rm filename                # 删除文件
git commit -m "提交说明"        # 提交暂存区的所有修改到本地仓库
git status                     # 查看git库的状态
git diff filename              # 如果文件修改了,还没有提交,可以比较文件修改前后的差异

# 版本回退
git reset --hard HEAD^         # 回退到上一个版本
git reset --hard d7b5          # 回退到指定的版本(d7b5是想回退的指定版本号的前几位)

# 查看命令历史
git relog                      # 查看仓库的操作历史

# git分支管理
git branch                     # 查看分支
git branch 分支名               # 创建分支
git checkout 分支名             # 切换到指定分支
git checkout -b 分支名          # 创建分支并切换到创建的分支
git merge 分支名                # 合并某分支的内容到当前分支
git branch -d 分支名            # 删除分支

# git标签
git tag 标签名 版本号            # 新建标签
git tag                        # 查看所有的标签
git show 标签名                 # 查看标签的详细信息
git push origin --tags         # 推送所有的tag
git push origin v1.0           # 推送某个tag

# git远端库相关
git remote add origin git://127.0.0.1/abc.git    # 添加远程仓库abc
git remote remove origin       # 移除远端仓库
git push -u origin master      # 将本地仓库内容推送到远端仓库(-u 表示第一次推送,后面再推送就不需要-u了)
git pull                       # 从远端库更新内容到本地

3. 补充

1. git merge 和 git rebase 的区别

  1. git rebase会把你当前分支的 commit 放到公共分支的最后面,所以叫变基。就好像你从公共分支又重新拉出来这个分支一样。
- 如果你从 master 拉了个feature分支出来,然后你提交了几个 commit,
- 这个时候刚好有人把他开发的东西合并到 master 了,
- 这个时候 master 就比你拉分支的时候多了几个 commit,
- 如果这个时候你 rebase master 的话,就会把你当前的几个 commit,放到那个人 commit 的后面。
  1. merge 会把公共分支和你当前的commit 合并在一起,形成一个新的 commit 提交
举个例子:
1-2-3 是现在的分支状态
这个时候从原来的master ,checkout出来一个prod分支
然后master提交了4.5,prod提交了6.7
这个时候master分支状态就是1-2-3-4-5,prod状态变成1-2-3-6-7
如果在prod上用rebase master ,prod分支状态就成了1-2-3-4-5-6-7
如果是merge
1-2-3-6-7-8
........ |4-5|
会出来一个8,这个8的提交就是把4-5合进来的提交

2. git pull 和 git fetch

git pull = git fetch + git merge

  1. 我们本地的git文件夹里面对应也存储了git本地仓库master分支的commit ID 和 跟踪的远程分支master的commit ID
  2. 使用git fetch更新代码,本地的库中master的commitID不变,还是等于1。但是远程分支master的commit ID变成了2,这时候我们本地相当于存储了两个代码的版本号,还要通过merge去合并这两个不同的代码版本
相当于fetch的时候本地的master没有变化,但是与远程仓关联的那个版本号被更新了,我们接下来就是在本地合并这两个版本号的代码。
  1. 使用git pull的会将本地的代码更新至远程仓库里面最新的代码版本
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值