Git

第 1 章 Git 本地常用命令

1.1 提交快照

git 仓库中的提交记录保存的是你的目录下所有文件的快照,使用以下命令创建一个新的提交记录:

git commit

如果在提交时要写备注信息,使用:

git commit -m

如果要将新修改的内容追加到上一次提交中,使用:

git commit --amend
1.2 创建和切换分支

查看所有的远程分支:

git branch -r

查看所有的本地分支和远程分支:

git branch -a

创建一个新分支 bugFix:

git branch bugFix

创建一个新分支 bugFix 并切换到该分支:

git checkout -b bugFix

切换到 bugFix 分支:

git checkout bugFix
1.3 合并分支
       D --- E      bugFix
      /
A --  B --- C --- F main

当我们在 main 分支上,想要合并 bugFix 分支的内容时,可以使用以下两种命令:

git merge bugFix
git rebase main bugFix

执行 merge 会得到以下树:

       D ---------- E
      /               \
A -- B --- C --- F --- G   bugFix, main

执行 rebase 会得到以下树:

A -- B -- D -- E -- C -- F   bugFix, main

rebase 操作不会生成新的节点,并且两个分支线性合并。

1.4 删除分支

当我们想要删除已经合并过的 bugFix 分支:

git branch -d bugFix

当我们想删除还未合并的 bugFix 分支:

git branch -D bugFix
1.5 强制修改分支位置

如果我们想要强制让 main 分支指向 bug Fix 的父节点:

git branch -f main bugFix^

如果我们想要强制让 main 分支指向 bug Fix 的第 3 级父节点:

git branch -f main bugFix~3
1.6 撤销变更

如果我们想要在本地分支中将当前分支回退 2 个提交记录实现撤销变更,使用:

git reset HEAD~2

如果我们想要实现撤销变更,同时能够同步到远程分支,使用:

git revert HEAD

它会在要撤销的提交节点后面新增一个节点,该新节点的状态与你想要撤销到的节点状态相同。我们将该新节点推送到远程仓库即可实现同步。

第 2 章 Git 远程常用命令

2.1 克隆现有仓库

通过仓库的 url 克隆远程仓库,并自定义本地仓库名字:

git clone <url> <repo-name>
2.2 从远程仓库下载本地仓库缺失的提交记录

将本地仓库缺失的提交记录从远程仓库中下载下来,但不会合并到本地仓库中:

git fetch
2.3 下载远程仓库的内容并更新到本地仓库

将本地仓库缺失的提交记录从远程仓库 remote-repo 的 local-branch 中下载下来,并合并到本地仓库的同名分支中:

git pull <remote-repo> <local-branch>

如果想要合并到指定分支,使用:

git pull <remote-repo> <remote-branch>:<local-branch>
2.4 推送到远程仓库并合并

将本地 local-branch 分支推送到远程仓库 remote-repo 的 remote-branch 分支中:

git push <remote-repo> <remote-branch>:<local-branch>

如果想要将本地 local-branch 分支推送到远程仓库 remote-repo 的同名分支中,使用:

git push <remote-repo> <local-branch>

如果我们周一克隆远程仓库进行开发,周五开发完毕。但是其他同事已经将他们的提交推送到远程仓库,我们的工作基于旧版本,与远程仓库最新版本不匹配。这种情况下,我们使用以下几个命令:

git pull --rebase
git push
2.5 创建一个本地分支跟踪远程仓库的 main 分支
git checkout -b <branch-name> origin/main

第 3 章 Git 开发高阶

3.1 整理提交记录

如果想要在 main 分支下得到其他分支的提交记录(比如哈希值为 C1 和 C2 的提交记录),使用:

git checkout main
git cherry-pick C1 C2
3.2 交互式 rebase

如果想要在 main 分支下得到当前分支的提交记录,但不清楚记录的哈希值,使用交互式 rebase 命令。比如我们想要整理当前提交节点到其第 2 级父节点的 3 个提交记录:

git rebase -i HEAD~3

我们可以在打开的 UI 界面做 3 件事:

  1. 调整提交记录的顺序
  2. 删除不想要的提交
  3. 合并提交记录

在实际开发中,我们的分支 bugFix 的提交记录中包含调试、打印语句,这些提交记录我们不希望进行合并。我们就可以通过 git rebase -i 将它们删除,只保留修复好 bug 后的代码。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐