删除已经提交到远程仓库中的文件并在本地取消跟踪

1
2
3
git rm -r --cached fileName or folder
git commit -m 'delete fileNmae or folder/'
git push origin branch

将指定文件夹里的文件推送到 gh-pages 分支

1
git subtree push --prefix folder origin gh-pages

merge 和 rebase

merge: 合并。把另一分支的提交合并到当前分支,这一次的合并操作会在当前分支上形成一个新的提交
rebase: 取出另一个分支的提交记录,“复制”它们,然后在当前分支逐个放下去

1
git merge main

main分支merge bugFix

1
git rebase main

main分支rebase bugFix

相对引用:

  • 使用 ^ 向上移动 1 个提交记录
  • 使用 ~ 向上移动多个提交记录,如 ~3

撤销更改

还未提交到暂存区

1
git checkout -- fileName

该命令可理解为撤销最近的未提交的修改

已提交到暂存区

  • git reset:通过把分支记录回退几个提交记录来实现撤销改动。向上移动分支,原来指向的提交记录就跟从来没有提交过一样(处于未加入暂存区状态),相当于“改写历史”
  • git revert:reset只能修改本地,当远程协作时是无效的。revert回退会生成一个新的提交,且这次提交和要回退到的版本是一模一样的

cherry-pick

把指定的提交记录复制到当前分支

git cherry-pick a1 a2 // 把 a1 a2 两次提交的内容复制到当前分支

交互式 rebase

如果知道所需要的提交记录(并且还知道这些提交记录的哈希值)时,用 cherry-pick 再好不过了!

如果不知道这些信息,可以使用 交互式 rebase