git 是一个分布式版本控制软件。
分支创建
-
首先切换工作目录到你想要作为仓库的文件夹(例如
/home/repo
),然后运行git init
初始化当前文件夹为 git 仓库1
git init
也可以使用
git clone
命令克隆远程仓库到本地1
git clone https://github.com/example/repo.git
该命令将会在当前工作目录下创建名为
repo
的目录并将其初始化为 git 仓库 -
创建并切换至新分支
1
git checkout -b <branch_name>
-
修改或者添加本地代码,此时只有硬盘上的文件有改动,可以随时使用
git diff
查看本地代码与当前 branch 的代码的区别 -
上传更新后的代码至暂存区
1
git add <changed_file>
-
将暂存区里更新后的代码更新到本地 git 的当前分支
1
git commit -m "commit message"
其中
-m
参数指定改动说明。 -
将本地的某分支上传到远程仓库
1
git push <remote> <branch>
注意:当你使用
git clone
命令克隆一个远程仓库时,Git 会自动将该远程仓库的信息保存为origin
。可以使用git remote
查看远程仓库的简略信息,使用git remote -v
查看远程仓库的详细信息。
同步更新
在多人项目中,本地代码还没有修改完毕,远程的主分支 main 就已经更新了。此时本地需要同步更新。
-
本地切换到 main 分支
1
git checkout main
-
将远程仓库主分支修改过的代码更新到本地仓库的当前分支 (main)
1
git pull origin main
/* 注:git pull 的语法为
git pull <remote> <remote_branch>
,所以以上代码中的第二个 main 指的是远程仓库的 main 分支 */ -
本地切换到改动分支
1
git checkout <branch>
-
同步更新:以新的 main 为基底,尝试融合
<branch>
上的 commit 。此过程可能会有一些 conflict 需要手动处理。1
git rebase main
-
上传同步更新后的分支
1
git push <remote> <branch>
-
等待项目管理者在远端上 squash and merge
-
远端全部完成后删除本地分支
1
git branch -d <branch>
-
同步远端的最新版本
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,以免破坏其他开发者的提交历史。