# 查看本地所有分枝

git branch

# 查看远程所有分支

git branch -a

# 2. 拉取本地没有的远程分支

  • 拉取远程分支:
git fetch origin 分支名称
  • 新建并切换到
git checkout -b 分支名称 origin/分支名称
  • 只执行切换分支:
git checkout 分支名称

# 3. 提交修改并推送到远程分支

git add 文件名 或 git add .
  • 从暂存区添加到缓存区
git commit -m “自填提交内容信息”
  • —从暂存区添加到本地仓库
 git push
// 推送主分支所有内容
git push origin master
// 推送其他分支(dev)
git push origin dev

# 删除本地分支

git branch -D <BranchName>

# 删除本地全部分支

// 强制删除所有分支(慎用,有些本地修改你可能没有提交)
git branch |xargs git branch -D

// 删除本地所有与远程仓库同步分支(本地修改过未提交的不会删除)
git branch |xargs git branch -dz

# 获取某次提交的代码

git cherry-pick 分支id

# git stash 的使用

  1. 保存 stash title 为 saveName
git stash save 'saveName'
  1. 查看 stash 列表
git stash list
  1. 找回 stash 且不删除 stash list 中的内容
git stash apply stash@{0}
  1. 删除指定 stash 中的内容
git stash drop stash@{0}

# 打 tag 标签

npm run pub

# git merge 和 git rebase

# git merge

  1. 直接使用 git merge

  2. git --no-ff --no-ff:不使用 fast-forward 方式合并,保留分支的 commit 历史。

  3. git --squash --squash 是用来把一些不必要 commit 进行压缩,比如说,你的 feature 在开发的时候写的 commit 很乱,那么我们合并的时候不希望把这些历史 commit 带过来,于是使用--squash 进行合并,此时文件已经同合并后一样了,但不移动 HEAD,不提交。需要进行一次额外的 commit 来“总结”一下,然后完成最终的合并。

  4. 什么是 fast-forward

  • 解释: 就是当条件允许的时候,git 直接把 HEAD 指针指向合并分支的头,完成合并。
    • 自己理解为:自己本地分支 commit 的多次代码直接压缩为一次提交,然后合并到远程分支
  • 可能出现的问题:
    • 删除分支,会丢失分支信息,因为 commit 已经压缩为了一次提交