• 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

  • 相关阅读:
    强制类型转换
    《thinking in java》 接口与内部类
    JAVA强制类型转换(转载+自己的感想)
    Java 面试题问与答:编译时与运行时
    Java注解处理器
    Java反射详解
    BZOJ5072:[Lydsy1710月赛]小A的树(树形DP)
    BZOJ4987:Tree(树形DP)
    BZOJ3791:作业(DP)
    BZOJ1972:[SDOI2010]猪国杀(模拟)
  • 原文地址:https://www.cnblogs.com/kylinfish/p/4413707.html
Copyright © 2020-2023  润新知