Git 情景处理

  • 本地代码尚不能提交,但是又必须同步服务器代码

    • 执行git stash :将本地代码保存;
    • 执行git pull origin (rBranch):(lBranch) :同步服务器代码;
    • 执行git stash apply [(stashName) ] :将stash中的代码合并到工作区,解决好冲突;
  • 需要将远程分支checkout到本地并且在本地建立对应分支

    • git checkout (–track) -b (lBranch) origin/(rBranch):以远程分支为准新建本地分支,并本地分支和远程分支track起来
      这种做法要注意一点,因为此时rBranchName分支上的内容是上一次从服务器同步后的代码,并不是最新代码,所以需要执行git pull,拿到仓库的最新代码;
  • 有A,B两个分支,A分支上添加了一个新功能,现在想将这个功能也添加到B上,但是A分支的其它代码不方便合并到B分支

    • git commit -m “”:先在A分支上执行commit;
    • git log:查看此次commit的id;
    • git checkout (bBranch):切换到B分支;
    • git cherry-pick (commit_id):将此前那次commit提交到B分支上,有冲突就解决冲突;
  • 本地提交了多个commit,需要push到服务器上时,希望将这些commit合并成一个,以便其他开发者阅读
    ,假设提交了a,b,c三个commit,现在需要将bc合并成d

    • git reset –soft [commit a id]:此时代码不会有任何改变,但是执行git log时会发现只有commit a的信息了,执行git status会发现b,c的修改全部都在暂存区,还没有提交;
    • git commit -m “合并commit bc to d”:push到仓库后,其他开发者就看不到commit bc的信息啦。
  • 回退远程仓库

    • 本地执行git reset –hard [commit id]
    • 执行git push –force:强行提交代码到远程仓库.
  • 回退正在操作的代码

    • git reset HEAD:将暂存区的内容回退到最近的commit版本
    • git reset HEAD~:将暂存区的内容回退到最近的第二个commit版本;
    • git checkout – . :将工作区的内容回退到暂存区
  • 恢复远程仓库的代码

    • 某个功能在开发中,但是由于某些原因,该功能不能上线,需要在分支中删除该功能代码;
    • 按从近到远的时间顺序,找到该功能的所有commit,在每个commit下,对所涉及的文件进行revert操作,恢复每次的修改。
  • 将另一个分支的代码合并到当前分支

    • 当前分支1可能是基于分支2开发的,所以要经常将分支2的代码合并过来。
    • 不要采用git pull origin branch2 :branch1。这样可能会出错,因为branch1可能是基于本地的branch2开的分支,所以必须和本地的branch2合并,如果和服务器的branch2合并,拿到的数据会不全;
    • 正确的做法是先将远程仓库中的branch2同步到本地的branch2分支,然后将本地的branch2分支代码merge到当前branch1分支。
  • 找回丢失的commit

    • git reflog:只要commit被提交过,就一定能找的回来
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值