zoukankan      html  css  js  c++  java
  • 你应该知道的git高级技巧

    1.cherry-pick,把某个分支已经提交的commit放到另一个分支上

    git cherry-pick <commit_id>

    该命令可以将某个分支的提交记录合并到当前分支,如在maser有一个提交,需要合并到dev分支,那么先找到该提交的commit id,再切换到dev分支执行该命令。如果有冲突则解决冲突后手动commit,没冲突则程序会自动产生一个新的commit

    git cherry-pick  -x <commit id>

    同上,不同点:保留原提交者信息。

    Git从1.7.2版本开始支持批量cherry-pick,就是一次可以cherry-pick一个区间的commit。

    git cherry-pick <start-commit-id>..<end-commit-id>

    git cherry-pick <start-commit-id>^..<end-commit-id>

    前者表示把<start-commit-id>到<end-commit-id>之间(左开右闭,不包含start-commit-id)的提交cherry-pick到当前分支;

    后者表示把<start-commit-id>到<end-commit-id>之间(闭区间,包含start-commit-id)的提交cherry-pick到当前分支。

    其中,<start-commit-id>到<end-commit-id>只需要commit-id的前6位即可,并且<start-commit-id>在时间上必须早于<end-commit-id>

    2.从另一分支获取文件内容而不用切换分支

    设想你正在进行重构,你创建了好几个分支并在各分支下进行改动。这时,你想把另一个分支里某一个文件的改动引入到当前工作的分支里,为了达到目的你可能需要好几步:git stash你的改动;切换到那个分支;获取文件的改动;切回工作分支(当然是使用git checkout -);继续进行编辑(译者注:别忘了git stash pop)。但是,你也可以直接检出另一分支的文件,并且合并到你当前所在的工作分支,使用命令(括号部分替换为对应的分支和文件):

    git checkout (branch) -- (path/file)
    

    该命令类似于cherry-pick,都是把一个分支改变的内容copy到另一个分支,不同点在于cherry-pick会在目标分支上自动产生一个新的commit,而checkout则仅做内容的改变,不会自动提交

    3.删除已经缓存进git库的文件

    git rm -r --cached  msite-api/.factorypath tomtop-msite/logs/access.log 

    该命令用于删除已经提交到版本库,而后期要添加到.ignore文件中忽略的文件(日志等)

    4.基于某个commitID或tag创建新的分支

    git checkout -b newbranchName commitId 或  tagName

    例:git checkout -b fixbug v1.2.3

    当远程仓库有人执行了revert操作还原了代码,此时本地再拉代码拉不下来,可以使用以下操作

    git fetch --all
    git reset --hard origin/v1_34   
    git pull

  • 相关阅读:
    Python之struct模块浅谈
    看头发知健康
    ZeroMQ:云计算时代最好的通讯库
    粗盐热敷疗法经验汇总
    百度2011校招笔试算法题一
    new/delete 和malloc/free 的区别一般汇总
    Trie字典树
    百度2012校招笔试题之全排列与组合
    百度2011校招笔试算法题二
    执行程序的内存分布总结
  • 原文地址:https://www.cnblogs.com/oyx305/p/5935984.html
Copyright © 2011-2022 走看看