Git 工作流
fengxiaot Lv4

git 是一个分布式版本控制软件。

分支创建

  1. 首先切换工作目录到你想要作为仓库的文件夹(例如 /home/repo ),然后运行 git init 初始化当前文件夹为 git 仓库

    1
    git init

    也可以使用 git clone 命令克隆远程仓库到本地

    1
    git clone https://github.com/example/repo.git

    该命令将会在当前工作目录下创建名为 repo 的目录并将其初始化为 git 仓库

  2. 创建并切换至新分支

    1
    git checkout -b <branch_name>
  3. 修改或者添加本地代码,此时只有硬盘上的文件有改动,可以随时使用 git diff 查看本地代码与当前 branch 的代码的区别

  4. 上传更新后的代码至暂存区

    1
    git add <changed_file>
  5. 将暂存区里更新后的代码更新到本地 git 的当前分支

    1
    git commit -m "commit message"

    其中 -m 参数指定改动说明。

  6. 将本地的某分支上传到远程仓库

    1
    git push <remote> <branch>

    注意:当你使用 git clone 命令克隆一个远程仓库时,Git 会自动将该远程仓库的信息保存为 origin 。可以使用 git remote 查看远程仓库的简略信息,使用 git remote -v 查看远程仓库的详细信息。


同步更新

在多人项目中,本地代码还没有修改完毕,远程的主分支 main 就已经更新了。此时本地需要同步更新。

  1. 本地切换到 main 分支

    1
    git checkout main
  2. 将远程仓库主分支修改过的代码更新到本地仓库的当前分支 (main)

    1
    git pull origin main

    /* 注:git pull 的语法为 git pull <remote> <remote_branch>,所以以上代码中的第二个 main 指的是远程仓库的 main 分支 */

  3. 本地切换到改动分支

    1
    git checkout <branch>
  4. 同步更新:以新的 main 为基底,尝试融合 <branch> 上的 commit 。此过程可能会有一些 conflict 需要手动处理。

    1
    git rebase main
  5. 上传同步更新后的分支

    1
    git push <remote> <branch>
  6. 等待项目管理者在远端上 squash and merge

  7. 远端全部完成后删除本地分支

    1
    git branch -d <branch>
  8. 同步远端的最新版本

    1
    git pull <remote> main

详细语法

git rebase

git rebase 用于将另一分支的变更提交到当前分支上,换言之,以另一分支为基底,尝试将当前分支的 commit 融合在该分支上。

1
git rebase <branch>

其中 <branch> 是基底分支的名称。

在执行 git rebase 之后,Git 会将当前分支上的提交一个个应用到目标分支上,如果有冲突发生,你需要手动解决冲突。在解决冲突后,使用 git add <file> 标记为已解决,并使用 git rebase --continue 继续 rebase 操作。如果你希望中止 rebase 操作,可以使用 git rebase --abort

需要注意的是,由于 rebase 操作会改变提交的历史顺序和结构,因此请确保只在本地分支上使用 rebase 操作,避免在已共享或公共分支上进行 rebase,以免破坏其他开发者的提交历史。