eng|Github - 第三篇(分支操作案例)


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 - 第三篇(分支操作案例)】

    推荐阅读