先创建远程 Git 仓库,比如在 Github 上创建一个示例仓库:
https://github.com/icexmoon/learn-git
如果没有 Github 账号或者未安装 Git 命令行工具,可以参考文章。
如果是新项目,可以通过 clone 命令将项目拉取到本地:
git clone git@github.com:icexmoon/learn-git.git
新建的目录与项目名称一致,如果已经存在同名目录,可以:
git clone git@github.com:icexmoon/learn-git.git learn-git2
如果本地已经存在开发中的项目代码,就会变得复杂一些。
先让代码接受 Git 管理:
cd D:\workspace\learn-git
git init
添加代码到暂存区:
git add .
提交到本地代码仓库:
git commit -m 'init'
为本地代码创建一个新的分支:
git branch init
切换到新分支:
git checkout init
git status
关联远程仓库:
git remote add origin git@github.com:icexmoon/learn-git.git
查看是否关联成功:
git remote -v
从远程仓库拉取代码:
git fetch --all
切换到主分支:
git checkout main
将本地的 init 分支合并进主分支:
git merge init --allow-unrelated-histories
因为这里的 init 分支与主分支完全没有关系(初始化代码),所以这里必须使用
--allow-unrelated-histories参数,否则会报错。如果有冲突需要处理冲突。
提交代码到本地 main 分支(如果有冲突并修改了代码):
git commit -m 'merge init code'
推送到远程仓库:
git push
分支管理
查看当前本地仓库存在的分支:
git branch
这里有三个分支:
-
main
-
master
-
init
其中 main 是与远程仓库主分支 origin/main 关联的本地分支,init 是之前用于初始化代码创建的分支,master 是一个默认分支。
删除已经不需要的分支:
git branch -d init
git branch -d master
git branch -d只能用于删除已经合并到其它分支的分支,比如这里的init分支,否则会报错。如果要强行删除分支,无论目标分支有没有合并到其它分支,可以使用git branch -D,当然这很危险。
通常我们开发都需要一个主分支和一个开发分支。
从主分支创建一个开发分支:
git branch dev
请先确保已经切换到主分支,并且拉取了最新代码。
推送开发分支到远程仓库:
git push -u origin dev
这里的
-u origin dev可以在远程仓库创建origin/dev分支,并与本地 dev 分支关联。
所有的功能开发和 bug 修复都可以基于开发分支创建对应的功能开发分支或 BUG 修复分支,比如:
git branch feature/home_page
git checkout feature/home_page
操作前请确保当前已经处于开发分支,且拉取了最新代码。
可以自行规定分支命名规则,比如功能开发使用
feature/...,Bug 修复使用fix/...。
对应的新功能的开发和代码提交都可以在这个分支中进行,当然,为了避免本地出现问题导致的代码丢失,同样要定期推送到远程仓库保存:
git push -u origin feature/home_page
远程分支命名似乎有一定要求,这里如果是
home_page就会报错,如果是feature/home_page则不会。
要发布代码前最好创建一个预发布分支,用于合并此次发布的功能或 BUG 修复,并进行充分测试:
git checkout main
git pull
git branch release/260122
git checkout release/260122
可以按照需要决定是否推送到远程仓库(比如多人协同合并代码或测试时间较长):
git push -u origin release/260122
所有需要在这个版本发布的功能和 bug 修复都可以合并到这个分支,并基于这个分支进行测试:
git merge feature/home_page
git push
测试无误后,将这个分支合并回主分支,并发布代码:
git checkout main
git pull
git merge release/260122
git push
成功发布后,之前的功能分支和预发布分支可以删除:
git branch -a
git branch -d feature/home_page
git branch -d release/260122
git push origin --delete feature/home_page
git push origin --delete release/260122
如果预发布分支的内容没有合并到开发分支中,此时可以从主分支合并回开发分支。
以上是通常的开发情况,如果是紧急修复,可以从主分支创建一个热修复分支:
git checkout main
git branch hot_fix/demo
git checkout hot_fix/demo
git push -u origin hot_fix/demo
可以基于这个分支进行测试,测试通过后直接合并回主分支并发布:
git checkout main
git pull
git merge hot_fix/demo
git push
同样的,可以在发布后将无用的分支删除:
git branch -a
git branch -d hot_fix/demo
git push origin --delete hot_fix/demo

文章评论