• Git远程操作


    1 git clone

    1.1 克隆远程库

    # https协议
    git clone https://github.com/yysue/test.git
    
    # ssh协议 推荐这种
    git clone git@github.com:yysue/test.git
    

    克隆时,指定远程主机名

    git clone -o test git@github.com:yysue/test.git
    # -o 指定远程主机名,默认是origin
    

    2 git remote

    2.1 列出所有远程主机

    git remote -v
    # -v显示远程主机的网址
    # origin git@github.com:yysue/test.git 表示远程主机及它的网址
    

    2.2 查看主机详细信息

    # 查看主机详细信息
    git remote show origin
    

    2.3 添加远程主机

    # 添加远程主机,注意这里的url是gitee.com
    git remote add for_rm git@gitee.com:yysue/test.git
    git remote add for_rename git@gitee.com:yysue/test.git
    
    # 添加之后,查看一下远程主机
    git remote -v
    

    2.4 删除,重命名远程主机

    # 删除远程主机
    git remote rm for_rm
    
    # 重命名远程主机
    git remote rename for_rename gitee_origin
    
    # 修改之后,查看一下远程主机
    git remote -v
    

    3 git fetch

    3.1 将远程主机的更新取回本地

    git fetch <远程主机名> <分支名> 
    # 取回特定分支需要指定分支名
    # 将某个远程主机的更新全部取回本地
    
    git fetch <远程主机名> 
    # 默认取回所有分支的更新
    
    git fetch
    # 默认取回origin主机的所有分支
    

    3.2 查看远程分支

    git branch -r
    # -r查看远程分支
    # 在本地主机上要用"远程主机名/分支名"的形式表示远程分支,如origin/master
    

    3.3 查看所有分支

    git branch -a
    # -a查看所有分支
    # 本地主机的当前分支是master,远程分支是origin/master
    

    3.4 以某分支为基础,创建新分支

    git checkout -b dev origin/master
    # 以远程主机origin上的master分支为基础创建分支dev并切换到分支dev
    

    4 git pull

    4.1 合并分支

    git pull <远程主机名> <远程分支名>:<本地分支名>
    # 这是完整格式 取回远程主机的某个分支的更新,再与本地的指定分支合并
    
    git pull origin next
    # 省略<本地分支名>表示与当前分支合并
    # 取回origin/next分支,再与当前分支合并
    # 等同于如下两个操作
    git fetch origin
    git merge origin/master
    
    git pull origin
    # 如果当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名
    # 本地的当前分支自动与对应的origin主机进行合追踪分支(remote-tracking branch)进行合并
    
    git pull
    # 如果当前分支只有一个追踪分支,连远程主机名都可以省略
    # 当前分支自动与唯一一个追踪分支进行合并
    # 默认git pull <===> git pull origin master:master
    # 默认远程主机为origin,远程分支为master,本地分支为master
    
    git pull --rebase
    # 等同于如下两个操作
    git fetch origin
    git rebase origin/master
    

    4.2 追踪关系

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

    手动建立追踪关系

    git branch --set-upstream master origin/next
    # 指定master分支追踪origin/next分支
    

    4.3 本地同步删除分支

    如果远程主机删除了某个分支,默认情况下,git pull不会在拉取远程分支的时候,删除对应的本地分支。这是为了防止,由于其他人操作了远程主机,导致git pull不知不觉删除了本地分支

    git pull -p
    # -p 在本地删除远程已经删除的分支
    # 等同于下面的命令
    git fetch --prune origin
    git fetch -p
    

    4.4 git merge

    假设初始的分支情况如下图:

    # A在mywork上的操作
    git checkout -b mywork origin
    echo 'a' >> a.txt
    git commit -am 'update a.txt'
    echo 'b' >> b.txt
    git commit -am 'update b.txt'
    
    # B在origin/master上的操作
    echo 'c' >> c.txt
    git commit -am 'update c.txt'
    echo 'd' >> d.txt
    git commit -am 'update d.txt'
    git push
    

    下面来区分git mergegit rebase的区别

    在这里,你可以用"pull"命令把"origin"分支上的修改拉下来并且和你的修改合并; 结果看起来就像一个新的"合并的提交"(merge commit):

    # A在mywork上操作
    git pull
    

    4.5 git rebase

    但是,如果你想让"mywork"分支历史看起来像没有经过任何合并一样,你也许可以用 git rebase:

    git checkout mywork
    git rebase origin
    

    这些命令会把你的"mywork"分支里的每个提交(commit)取消掉,并且把它们临时 保存为补丁(patch)(这些补丁放到".git/rebase"目录中),然后把"mywork"分支更新 为最新的"origin"分支,最后把保存的这些补丁应用到"mywork"分支上。

    当'mywork'分支更新之后,它会指向这些新创建的提交(commit),而那些老的提交会被丢弃。 如果运行垃圾收集命令(pruning garbage collection), 这些被丢弃的提交就会删除. (请查看 git gc)

    5 git push

    5.1 将本地的更新推送到远程主机

    git push <远程主机名> <本地分支名>:<远程分支名>
    # 分支推送顺序写法是<来源地>:<目的地>
    # git pull <远程分支>:<本地分支>
    # git push <本地分支>:<远程分支>
    
    git push origin master
    # 省略<远程分支名>
    # 将本地的master分支推送到origin主机的master分支,如果后者不存在,则会被新建
    
    git push origin :master
    # 省略<本地分支名>
    # 表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支
    # 等同于下面的命令,删除origin主机的master分支
    git push origin --delete master
    
    git push origin
    # 如果当前分支与远程分支存在追踪关系,则<本地分支名>和<远程分支名>都可省略
    # 将当前分支推送到origin主机的对应分支
    
    git push
    # 当前分支只有一个追踪分支,主机名也可以省略
    
    git push -u origin master
    # 如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,
    # 这样后面就可以不加任何参数使用git push
    

    5.2 push默认模式

    不带任何参数的git push,默认只推送当前分支,这叫做simple方式。此外,还有一种matching方式,会推送所有有对应的远程分支的本地分支。Git 2.0版本之前,默认采用matching方法,现在改为默认采用simple方式。如果要修改这个设置,可以采用git config命令。

    git config --global push.default matching
    # 或者
    git config --global push.default simple
    

    5.3 推送所有本地分支

    不管是否存在对应的远程分支,将本地的所有分支推送到远程主机,这时需要使用--all选项。

    git push --all
    # 将所有本地分支推送到远程主机
    

    5.4 强制覆盖远程版本

    如果远程主机的版本比本地版本更新,推送时Git会报错,要求先在本地做git pull合并差异,然后再推送到远程主机。这时,如果你一定要推送,可以使用--force选项。

    git push --force
    # 本地版本覆盖远程版本,即使远程版本比本地版本新
    

    5.5 推送标签

    git push origin --tags
    # --tags推送标签(tag),默认不推送
    

    参考

  • 相关阅读:
    几种sap增强的查找方法
    BAPI_ACC_DOCUMENT_POST Enter rate / GBP rate type M for Error SG105
    SAP TAX CODE 自动计算税金(BAPI_ACC_DOCUMENT_POST CALCULATE_TAX_FROM_GROSSAMOUNT)
    Python入门资料
    认知决定你的格局,和财富差距 (转)
    微信支付,支付宝支付,银联支付——三大支付总结
    Android 日志记录杂谈-Logger,Timber,logback-android
    好全的Android面试题
    Android界面性能调优手册
    50 篇 Android 干货文章
  • 原文地址:https://www.cnblogs.com/okokabcd/p/9246697.html
Copyright © 2020-2023  润新知