BSSZDS930

博客园 首页 新随笔 联系 订阅 管理

       

1.拉取远程分支并创建本地分支:   

                git clone -b staging  http://1*ce.git   local_dir                       //  -b:  指定远程分支staging

               方法一:git  checkout  -b  本地分支x   origin/远程分支名x      // 本地新建并自动切换分支x。本地分支会和远程分支建立映射关系。

               方式二:git fetch origin 远程分支名x:本地分支名x                  //本地新建分支x但不自动切换,需手动checkout。本地分支不会和远程分支建立映射关系。

 

2. 关联: 目的是在执行git pull/push时就用指定对应的远程分支

        git   branch --set-upstream-to=origin/remote local

        git remote add origin gy(为空时默认master) git@.....git

 

3. 常用命令

git branch –a本地和远程

git branch –r 远程

git branch 本地

git branch –D local删除

git commit --amend 修改msg

git checkout –b dev origin/remote 新建分支并切换

git branch dev  新建分支不切换

git checkout dev分支切换

git stash (pop)

git push origin local:remote    

删除远程仓库:$ git push origin --delete remoteDev

 

git pull origin dev(远程分支名)   [git pull --rebase]

-------------合并代码beyond compare-----------------

-- git reset --hard commit_id 撤销某次提交 ;后git push –f   //远程分支退到指定commit 注:回退风险,防止回退别人的代码

-- git revert –n cmid             撤销某次提交;   解决冲突后add/commit/push 

git rebase -i  【IdBeg】【IdEnd】   // 前开后闭,将本地多次提交合并为一个以简化提交历史。

git  rebase -i   head~3       // 合并前三个

git  rebase  -abort    撤销rebase操作

 git  log  --oneline  -n10  --author="**"

4.分支合并问题:

      4.1.把master分支合并到其它分支用rebase,把其它分支合并到master用merge。rebase不会产生多余的commit,并且保持直线。但会污染本地自开发分支,不建议

    •  首先切换到master分支:  git pull拉取最新分支状态;
    •  然后切回local分支:

                      git rebase -i  【IdBeg】【IdEnd】     // 前开后闭,将本地多次提交合并为一个以简化提交历史。否则git rebase master时会多次解决冲突(最坏情况下,每个提交都会相应解决一个冲突)。

                      git rebase master // 将master同步到本地,可能要手动解决冲突。【解决冲突试运行,用git-add后无需commit,只要执行: git rebase --continue】

    •  切换到master分支:   git merge local后,git push将master分支的提交上传。

      4.2 cherry-pick命令

    1.  git  rebase -i head~3      合并前三个,dev分支上合并提交,然后切换到master
    2.  git  cherry-pick  bc09e8d8   将dev上某次提交内容 合入到master分支上 。 【解决冲突后add/git cherry-pick --continue】

      4.3 推荐merge request

    1. git checkout -t origin/preview   // git checkout –b dev-guo origin/remote
    2. git pull   origin preview
    3. git merge   dev-guyan              //git merge origin/dev-guoyan
    4. git push origin preview

      4.4 撤销git reset

--mixed   不删除工作空间改动代码,撤销commit,且撤销git add . 操作.    默认参数.   

--soft    不删除工作空间改动代码,撤销commit,不撤销git add . 

--hard   删除工作空间改动代码,撤销commit,撤销git add .      注意完成这个操作后,就恢复到了上一次的commit状态。

                1.本地分支落后: Fast-forward合并,可以理解为HEAD指针指向的快速移动。    

                2.本地分支超前:解决冲突后git-add,然后不用-m参数直接git commit:wq保存退出)。

      4.5 插入commit:

  • git  rebase  -i  b0aa963        # edit  commit_d后保存退出
  • [提交本次commit_t] 后 git rebase --continue    #  t会在d之后
  • git  push  -f                          # 有风险  !!

=================================================================================================================

git fetch只会将本地库所关联的远程库的commit id更新至最新. 本地库并没有变化,HEAD没有变化.

git pull会将本地库更新至远程库的最新状态,HEAD也相应指向最新的commit id

-- git pull发生冲突时, 先用git stash命令把当前修改过的工作存储到栈里面, 再git pull拉取代码. 再git stash pop把栈里面的代码还原,这时如果再冲突,需要手动解决.

 

 

 

 

 

 

posted on 2019-12-18 18:43  BSSZDS930  阅读(273)  评论(0编辑  收藏  举报