Git基础:分支操作
切换分支
查看本地分支,执行命令:git branch -a
当前指向的分支是:wifi_support,现在我想切换到分支:develop。执行命令:git checkout develop
,结果失败了,并提示错误原因,如下图
可以看到,是因为有文件修改了,但没有提交。可以执行:git status
,查看文件的变化。
我不想保留已跟踪且被修改的文件的提交,所以执行命令:git checkout .
,接着执行:git checkout develop
新建分支
我想在develop分支基础上新增wifi项目,但是我不能直接提交代码到develop分支,但是我可以在develop分支上开辟一条新分支wifi-feature,然后在该分支上提交wifi项目。
首先确认分支是否切换到develop分支,通过命令查看:git branch -a
。拉取并合并develop分支数据,执行命令:git pull
。
然后新建分支并wifi-feature,并将HEAD指向新分支wifi-feature,执行命令:git checkout -b wifi-feature origin/develop
推送分支
wifi项目已经修改好了一版,需要提交到远程仓库。首先,需要提交到本地仓库,然后才能推送到远程仓库。
跟踪wifi项目,执行命令:git add app/rk_wifi_app
接着,提交本地仓库,执行命令:git commit -m "Add wifi application"
最后,推送到远程仓库,执行命令:git push -u origin wifi-feature
。这里要注意一下:git push -u origin wifi-feature,要求远程仓库没有 wifi-feature分支,若远程仓库已经有了该分支,则执行:git push
即可。
克隆分支
只想克隆Git仓库的指定Tag,而不想把仓库所有Tag都克隆,例如:
执行命令:git clone -b 5.72 https://github.com/bluez/bluez.git
这样拉取下来是不会创建本地分支并跟踪远程分支的
合并分支
之前从develop分支切了一个新分支:support-wifi,在新分支上编写了wifi-app,然后提交到了远程仓库。但这个期间远程develop分支有了很多提交,我现在要把develop合并到support-wifi分支。
首先,切到develop分支,更新develop分支。然后切换support-wifi分支,合并develop分支。
git checkout develop
git fetch
git merge
git checkout support-wifi
git merge develop
修改分支
将本地master分支修改为main,执行: git branch -m main
.
删除分支
删除分支包括:删除本地分支和删除远程分支
我已经从远程仓库跟踪了一个分支support-bt,并拉取分支support-bt到本地support-bt分支。现在我想删除本地分支support-bt,首先切换到非support-bt分支,然后可以执行:git branch -d support-bt
本地support-bt分支删除后,如果希望将远程support-bt分支也删除,可以执行:git push origin -d support-bt
这样远程仓库的support-bt分支就会被删除。