zoukankan      html  css  js  c++  java
  • Git笔记 整理2

    补充:

    1,如何只克隆git仓库中的一个分支?

    git clone -b <branch> <remote_repo>

    eg:  git clone -b vivien_dev  http://10.XX.XX.XX/APPVivien-ios

    2,

    随便创建分支,然后push到服务器上去。例如:
     git push origin anbot_dev

    git push --set-upstream origin dev_ifa (初次上传)

     
    3,Git 获取远程分支
    git checkout -b  vivien_dev  origin/vivi_dev
    两个名字可以不一样
    删除本地分支:git branch -d vivien_dev
     
    4, Git 回退版本后强制上传

    git push -u origin master -f  (master为分支名)

    git push --force 将本次变更强行推送至服务器。这样在服务器上的最后一次错误提交也彻底消失了

     
     
    二,git pull

    git pull命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并。它的完整格式稍稍有点复杂。

    $ git pull <远程主机名> <远程分支名>:<本地分支名>

    比如,取回origin主机的next分支,与本地的master分支合并,需要写成下面这样。

    $ git pull origin next:master

    如果远程分支是与当前分支合并,则冒号后面的部分可以省略。

    $ git pull origin next

    上面命令表示,取回origin/next分支,再与当前分支合并。实质上,这等同于先做git fetch,再做git merge。

    $ git fetch origin
    $ git merge origin/next

    在某些场合,Git会自动在本地分支与远程分支之间,建立一种追踪关系(tracking)。比如,在git clone的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的master分支自动”追踪”origin/master分支。

    Git也允许手动建立追踪关系。

    git branch --set-upstream master origin/next

    上面命令指定master分支追踪origin/next分支。

    如果当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名。

    $ git pull origin

    上面命令表示,本地的当前分支自动与对应的origin主机”追踪分支”(remote-tracking branch)进行合并。

    如果当前分支只有一个追踪分支,连远程主机名都可以省略。

    三,  回滚

     总有一天你会遇到下面的问题.

    (1)改完代码匆忙提交,上线发现有问题,怎么办? 赶紧回滚.

    (2)改完代码测试也没有问题,但是上线发现你的修改影响了之前运行正常的代码报错,必须回滚.

     这些开发中很常见的问题,所以git的取消提交,回退甚至返回上一版本都是特别重要的.

    大致分为下面2种情况:

    1.没有push

    这种情况发生在你的本地代码仓库,可能你add ,commit 以后发现代码有点问题,准备取消提交,用到下面命令

    reset
    git reset [--soft | --mixed | --hard

    上面常见三种类型

    --mixed

    会保留源码,只是将git commit和index 信息回退到了某个版本.

    git reset 默认是 --mixed 模式 
    git reset --mixed  等价于  git reset

    --soft

    保留源码,只回退到commit 信息到某个版本.不涉及index的回退,如果还需要提交,直接commit即可.

    --hard

    源码也会回退到某个版本,commit和index 都回回退到某个版本.(注意,这种方式是改变本地代码仓库源码)

    2.已经push

    对于已经把代码push到线上仓库,你回退本地代码其实也想同时回退线上代码,回滚到某个指定的版本,线上,线下代码保持一致.你要用到下面的命令

     revert , git revert 撤销 某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销

    git revert用于反转提交,执行evert命令时要求工作树必须是干净的.

    git revert用一个新提交来消除一个历史提交所做的任何修改.

    revert 之后你的本地代码会回滚到指定的历史版本,这时你再 git push 既可以把线上的代码更新.(这里不会像reset造成冲突的问题)

    revert 使用,需要先找到你想回滚版本唯一的commit标识代码,可以用 git log 或者在adgit搭建的web环境历史提交记录里查看.

         git revert HEAD                  撤销前一次 commit
         git revert HEAD^               撤销前前一次 commit

      git revert c011eb3c20ba6fb38cc94fe5a8dda366a3990c61 //撤销指定的版本,撤销也会作为一次提交进行保存。

    revert合并

    git revert -m 1 c011eb3c20ba6fb38cc94fe5a8dda366a3990c61

    将会保留 master 分支上的修改,撤销 dev 分支上的修改。//(1就是1,表示312a518对应的父来源,2表示fa87415对应的父来源)

    通常,前几位即可

    git revert c011eb3

    git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit

    看似达到的效果是一样的,其实完全不同.

    第一:

    上面我们说的如果你已经push到线上代码库, reset 删除指定commit以后,你git push可能导致一大堆冲突.但是revert 并不会.

    第二:

    如果在日后现有分支和历史分支需要合并的时候,reset 恢复部分的代码依然会出现在历史分支里.但是revert 方向提交的commit 并不会出现在历史分支里.

    第三:

    reset 是在正常的commit历史中,删除了指定的commit,这时 HEAD 是向后移动了,而 revert 是在正常的commit历史中再commit一次,只不过是反向提交,他的 HEAD 是一直向前的.

     
     四,远程重命名项目分支
    1,重命名 本地分支:

    git branch -m dev-ifa dev_ifa (将分支名丛dev-ifa 改为dev_ifa)

    2,上传新分支
    git push origin dev_ifa(将新分支提交到远程)
    3,删除旧分支
    git  push --delete origin dev-ifa

    4,删除远程分支

    git push origin :branch-name 

    冒号前面的空格不能少,原理是把一个空分支push到server上,相当于删除该分支。
     
    git branch -r -d origin/branch-name : 只是删除的本地对该远程分支的track
     
     
     
     
  • 相关阅读:
    iOS 程序内国际化的一些心得(2)
    iOS 程序内国际化的一些心得(1)
    写个自己的Xcode4插件
    iOS命令行获取工程内所有的国际化资源并且整合
    用xib自定义UITableViewCell的注意事项——重用问题
    遍历类成员
    iOS 键盘取消晃动撤销动作
    iap验证。
    4 WPF学习---系统的学习XAML语法
    webService访问加密-Soapheader
  • 原文地址:https://www.cnblogs.com/developer-qin/p/5311138.html
Copyright © 2011-2022 走看看