zoukankan      html  css  js  c++  java
  • GIT非常见命令使用笔记

    1:修改已经提交N次代码的user.name和user.email

    解决我在多电脑间,使用不同账户,git config 的global,system,local配置忽略改动,而添加了多台电脑ssh key的默认提交问题。

    #分两次复制执行以下两行

    git filter-branch -f --env-filter "GIT_AUTHOR_NAME='wujuguang'; GIT_AUTHOR_EMAIL='1154545932@qq.com';
    GIT_COMMITTER_NAME='wujuguang'; GIT_COMMITTER_EMAIL='1154545932@qq.com';" HEAD

    #强制更新

    git push origin master -f

    2:某分支提交合到另分支上
    在本地 dev 分支上的一个commit,如何把它放到本地ky-dev分支上?

    git使用cherry-pick. 
    简单用法:git cherry-pick <commit id>

    Apply the changes introduced by some existing commits.
    就是对已经存在的commit 进行apply (可以理解为再次提交)

    checkout 到这个 dev 分支,使用 git log 获取这个 commit 的 <commit id>,假定为 6211d4912ec6752ee39b1c7b3ef9c76d01c2a49e,然后执行以下:
    $ git checkout ky-dev
    $ git cherry-pick 6211d4912ec6752ee39b1c7b3ef9c76d01c2a49e
    $ git log

    3:减少无用Merge消息的干扰

     如果您正在团队中工作并且整个团队都在同一条branch上面工作,那么您就得经常地进行fetch/merge或者pull。Git中,分支的合并以所提交的merge来记录,以此表明一条feature分支何时与主分支合并。但是在多团队成员共同工作于一条branch的情形中,常规的merge会导致log中出现多条消息,从而产生混淆。因此,您可以在pull的时候使用rebase,以此来减少无用的merge消息,从而保持历史记录的清晰。
        
      git pull --rebase

    您也可以将某条branch配置为总是使用rebase推送:
        
      git config branch.BRANCH_NAME_HERE.rebase true

    4,修改commit的内容,包含最近一次,和任意某个commit两种情况

    git修改last提交:
      在git中,其commit提供了一个--amend参数,可以修改最后一次提交的信息.
      但是如果你已经push过了,那么其历史最后一次,永远也不能修改了。

      git commit --amend 的用法,shell下 git commit --amend 然后在出来的编辑界面,直接编辑注释的信息。

    git修改历史提交:
           git使用amend选项提供了最后一次commit的反悔。但是对于历史提交呢,就必须使用rebase了。
           git rebase -i HEAD~3
           表示要修改当前版本的倒数第三次状态。

           这个命令出来之后,会出来三行东东:
            pick:*******
            pick:*******
            pick:*******
            如果你要修改哪个,就把那行的pick改成edit,然后退出。

            这时通过git log你可以发现,git的最后一次提交已经变成你选的那个了,这时再使用:
            git commit --amend
            来对commit进行修改。

            修改完了之后,要回来对不对?
            使用git rebase --continue
            OK,一切都搞定了

    5,删除远程分支

      git push origin :branch-name
      冒号前面的空格不能少,原理是把一个空分支push到server上,相当于删除该分支。

    6,Git Tag相关

    git push origin --tags

    git tag -a 0.1 -m ""  66338cc
    git tag -a 0.2 -m ""

    git tag -u "" -a 0.1 -m ""  66338cc
    git tag -u "" -a 0.2 -m ""

    gpg --gen-key
    gpg --list-keys
    gpg --list-secret-keys
    git push origin :refs/tags/v

    git fetch --tags

  • 相关阅读:
    洛谷P2330: [SCOI2005]繁忙的都市(最小生成树)
    洛谷P1019: 单词接龙(dfs)
    洛谷P1019: 单词接龙(dfs)
    hdu1598:find the most comfortable road(并查集)
    hdu1598:find the most comfortable road(并查集)
    洛谷P1616 :疯狂的采药(完全背包)
    洛谷P1616 :疯狂的采药(完全背包)
    洛谷P1119: 灾后重建(最短路)
    洛谷P1119: 灾后重建(最短路)
    1008 N的阶乘 mod P(51NOD基础题)
  • 原文地址:https://www.cnblogs.com/kylinfish/p/4413707.html
Copyright © 2011-2022 走看看