前言
Git 是日常开发中常用的版本控制工具,配合代码托管仓库(如,Github,GitLab,Gitee 等)用来实现多人多版本的协作开发。
但是 Git 的命令纷繁复杂,多如累卵,不可能也不需要全部搞懂,只需要掌握常用的 Git 命令即可。
然而,单个 Git 命令不足以支撑一个完整的 Git 版本管理流程,因此本文主要介绍实际开发场景中,如何通过组合 Git 命令来实现一套完整的代码管理流程。
建仓,拉仓,关联仓库
- 建仓:一般开发场景中,会从远程主仓 fork 一份仓库到自己名下的远程仓库中。我们之后提交代码,并非直接向远程主仓提交,而是提交给远程个人仓库,由个人仓库提起向远程主仓的合并请求,来合入我们的新代码
- 克隆到本地:通过
git clone
将远程个人仓库克隆到本地 - 新建本地开发分支:执行
git checkout -b 本地分支名
- 关联远程个人仓库:执行
git branch --set-upstream-to=origin/远程个人仓库分支名
- 关联远程主仓,用来更新远程主仓最新的代码:执行
git remote add upstream https://gitxxx.com/A/xxxx.git
,其中 upstream 为你给远程主仓取的名字,它和 origin 是同级的,一般我们也称远程主仓为上游仓库
修改代码
完成上述任务后,你就可以修改代码了。
更新本地仓库,并解决冲突
很多时候,在我们修改代码的时候,其他人也会给远程主仓提交合入代码,这个时候我们的代码就不是最新的。
所以我们需要更新我们的本地仓库,一般是一天更新一次。
更新的时候可能我们现在的代码会和更新的代码有冲突,这就需要我们手工的去解决这些冲突。如果没有,则直接合入本地仓库即可。
- 拉取远程主仓:执行
git fetch upstream
- 保存当前正在修改的代码:通过
git stash
,可以将你正在修改的代码先保存起来 - 合入拉取的代码:执行
git merge upstream/远程主仓分支名
会将该分支的新代码合入当前你的本地分支 - 恢复自己正在修改的代码:通过
git stash pop
将自己修改的代码恢复到当前工作区,如果和新代码有冲突,就可以在这个时候解决冲突了
提交代码,合入代码
git add
:将需要的文件添加到暂存区。如果要将所有修改内容都提交,则可以使用 git add *git commit
:通过该指令将暂存区的内容提交到本地仓库中。一般情况下,执行 git commit -m “提交描述信息”git push
:通过该指令将本地仓库的内容推送到远程个人仓库MR 或者 PR
:远程个人仓库托管在对应的代码托管平台,这些平台都会提供 MR 或者 PR 的页面或功能,来完成将你修改的代码合入到远程仓库的最终代码中
其他常用 Git 工作流
删除本地仓库和远程仓库中的文件
git rm xxx # 删除文件
git rm -r yyy # 删除文件夹git add *
git commit -m ""
git push
日志打印
# 以一行的方式显示日志
git log --oneline# 打印最近 n 次日志
git log -n 5 # 打印最近 5 次日志# 打印某个日期前的日志
git log --before="2023-01-01" # 打印 2023-01-01 前的日志
commit 相关
# 查看某次 commit 的改动
git show commitId# 比较两次不同的 commit
git diff <commit-hash1> <commit-hash2># 新增修改,但不改变上一次 commit message
git commit --amend --no--edit# 合并多次 commit 的内容
git rebase -i HEAD~3 # 合并最近三次 commit 的内容为一次,因图文限制,这里仅列出语法,不深入