1.本地分支与远程分支 建立或撤消关联
1)本地没有dev分支,远程有dev分支
- git checkout --track origin/dev
- #本地会新建分支dev并自动跟踪远程分支dev
2)本地已有分支dev,但远程没有
- git push --set-upstream origin dev
- #远程会创建dev分支,并本地分支dev会自动跟踪远程分支dev
3)本地与远程都没有分支dev
- git checkout -b dev
- git push origin dev
4)已有本地分支dev与远程分支dev
- git checkout -b dev #新建并切换到本地dev分支
- git branch --set-upstream-to=origin/dev dev #本地dev与远程dev建立关联
- 或
- git pull origin dev #新建远程分支,并本地分支与远程分支相关联
5)本地与远程分支不同名建立关联
- git checkout -b local_branch remote_branch
6)撤消本地分支与远程分支关联关系
- git branch --unset-upstream
2.本地分支 与 远程分支合并
1)合并两本地分支:将本地分支dev合并到本地分支master
- git checkout dev #切换到dev
- git commit #提交commit
- git checkout master #切换到master
- git commit #提交commit
- git merge dev #将dev 合并到master
2)远程分支合并到本地分支:将远程master合并到本地分支dev
- git remote -v查看远程仓
- 将远程orgin仓master分支下载到本地,并新建一个dev分支
- git fetch origin PtahRevitDesigner:dev
- git diff dev查看dev分支与本地原有分支的不同
- git merge dev将dev分支和本地分支合并
- git branch -d dev删除temp分支
3)将远程分支dev合并到远程master
- [1]方法一: 在gitlab 或 github 页面上进行merger操作
- [2]方法二: 将本地dev分支合并到本地master,将本地master推送到远程master
- update hello.py #更新hello.py
- git add hello.py #添加hello.py到暂存区
- git commit -m "add sys module" #将hello.py从暂存区提交到仓库区
- git checkout master #切换到master分支
- git merge dev #本地的dev合并到master上
- git push origin master#推送到远程的master上
3.提交代码
1)本地master提交至远程master
- git checkout master
- git add hello.py #添加hello.py到暂存区
- git commit -m "output ok" #将hello.py从暂存区提交到仓库区
- git push 或 git push origin master
2)本地dev提交至远程dev
- git status #查看当前分支
- git checkout dev #切换至dev分支
- update hello.py #更新hello.py
- git status #查看dev更新情况
- git add hello.py #添加hello.py到暂存区
- git commit -m "add sys module" #将hello.py从暂存区提交到仓库区
- git push origin dev #将从仓库区推送到远程分支dev
3)将远程分支dev合并到远程master
- [1]方法一: 在gitlab 或 github 页面上进行merger操作
- [2]方法二: 将本地dev分支合并到本地master,将本地master推送到远程master
- update hello.py #更新hello.py
- git add hello.py #添加hello.py到暂存区
- git commit -m "add sys module" #将hello.py从暂存区提交到仓库区
- git checkout master #切换到master分支
- git merge dev #本地的dev合并到master上
- git push origin master#推送到远程的master上
4)当远程库与本地库不一致,如何merge和push
- #先将远程master pull到本地master
- git pull origin master 或 git pull --rebase origin master
- #将本地dev合并到本地master上
- git checkout master
- git merge dev
- git push origin master 或 git push -u origin master
4.撤消修改或commit
- git reset --soft HEAD^
- #--soft不删除工作空间改动代码,撤销commit,不撤销git add .
- git reset --hard f1c13bfd921e085d8b8d18ace9d69c25bc00b878
- #--hard 删除工作空间改动代码,撤销commit,撤销git add .
- #注意完成这个操作后,就恢复到了上一次的commit状态。
1)恢复暂存区的指定文件到工作区
- git checkout [file]
- 2)恢复某个commit的指定文件到暂存区和工作区
- git checkout 7a6847c test.md
- 3)恢复暂存区的所有文件到工作区
- git checkout .
- # 重置暂存区与工作区,与上一次commit保持一致
- $ git reset --hard
- # 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变
- $ git reset [commit]
- # 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致
- $ git reset --hard [commit]
【eng|Github - 第三篇(分支操作案例)】
推荐阅读
- eng|Github - 第一篇(Github安装与配置)
- 理解git暂存区
- 源代码管理SVN|源代码管理工具SVN和Git小结
- git使用|git---主分支同步到子分支
- CSCI 2134 Using Git
- Git合并策略选项及示例
- github|【GitHubShare】AI开发七巧板,快速训练、部署与监控机器学习模型,清晰查看模型的各项统计数据
- 经验分享|【githubboy】技术面试题、编程设计理念、机器学习资料,助你更好的实践训练
- git|Ubuntu 20上安装 gitlab git 服务器