zoukankan      html  css  js  c++  java
  • git用法集锦

    重要!

    一切记录都可以通过如下命令获取,一切操作都可以得益于这个命令找回

    # git reflog

    一:Commit


    场景1: 修改前一次commit的message信息

    # git log
    commit 16a60240aa5328fe47b23b00bf752b21fe634bca (HEAD -> add-upload-api, origin/add-upload-api) ---第2次commit
    …
    commit 60b3e9b90cfb75dfbfcb0f8b82b932ebb56657e5 ---第1次commit,待修改log的commit
    Author: root <root@lcmaas-wksp-g.novalocal>
    Date: Thu Nov 11 08:45:30 2021 +0000
    
    ....some message should be correct....
    
    commit f3da70fe98c083781335e61a35a18c52b91392ac (origin/master, origin/HEAD, master) ---第0次commit,基commit

    【操作步骤】
    1. 重置前两个commit, 将待修改的commit的操作由 "pick" 改成 "edit", 注意这里的顺序和log的是相反的

    # git rebase -i HEAD~2
    
    edit 60b3e9b ...some message should be correct.... ---由pick改成edit
    pick 16a6024 fix style mistakes detected by golint
    
    # Rebase f3da70f..16a6024 onto f3da70f (2 commands)

    保存退出
    Ctl + O (Write Out) -> 回车
    Ctl + X (Exit)

    2. 修改message

    # git commit --amend
    
    保存退出
    Ctl + O (Write Out) -> 回车
    Ctl + X (Exit)

    3. 提交修改

    # git rebase --continue
    Successfully rebased and updated refs/heads/add-upload-api.

    # git push origin xxx (maybe need -f)

    场景1.5:修改之前某一次commit的message信息

          整体思路: 基于指定commit的前一个commit进行rebase,因为这样会“涉及”这次commit

    # git log --oneline
    e33ad59  message3
    e95f51f    message2    ###待修改commit
    2418162  message1
    
    #git rebase -i 2418162a79fe52efea8dd0818f4c47b43583d9b0

    ...pick -> edit, 保存退出...

    # git commit --amend
    ...修改,保存,退出...

    #git rebase --continue

    场景2:间隔合并commit, 比如想针对之前的某个commit(即不是最近的那个)做一些修改

          整体思路: 将新的修改作为一次commit,然后做rebase,即重置base

          例如如下的情况下,想针对第一次commit再增加一些修改:

    # git log --oneline
    be6ce3c my second commit --第2次commit
    60b3e9b my first commit --第1次commit
    f3da70f (origin/master, origin/HEAD, master) Add CONTRIBUTING.md  --第0次,将作为base commit

    0. 将当前的修改作为一次新的commit提交

    # git add
    # git commit -m"test"

    1. 修改

    # git rebase -i HEAD~3
    pick 60b3e9b my first commit
    pick be6ce3c my second commit
    pick 5d9a124 test
    
    修改顺序, 将最新commit放到待修改commit的后面,并将该commit操作改成"squash", 表示与前一次合并:
    pick 60b3e9b my first commit
    squash 5d9a124 test
    pick be6ce3c my second commit
    
    
    保存退出
    Ctl + O (Write Out) -> 回车
    Ctl + X (Exit)

    3. 提交修改

    3 # git rebase --continue
    Successfully rebased and updated refs/heads/add-upload-api.
    
    4. # git push origin xxx (maybe need -f)

     场景3:为commit增加body信心

    完整的commit message包含title(必选), body(可选), footbar(可选)

    • 常用方式:只提交title字段,如下
    #git commit -m"这是一个title"
    • 官方方式:编写message文档,然后提交

        参考:https://cbea.ms/git-commit/#separate

                             https://cbea.ms/git-commit/#separate

    • 补救方式:命令行只提交title后增加body
    # git commit --amend
      <这是一个title>
    
      <在这里可以增加你的body>

    二. Push


    命令标准:

    git push <remote 名字> <本地分支的名字> : <远程库的名字>

    用法1:# git push origin HEAD:refs/for/master

    【解析】

    origin : 是远程的库的名字
    HEAD: 是一个特别的指针,它是一个指向你正在工作的本地分支的指针,可以把它当做本地分支的别名,git这样就可以知道你工作在哪个分支
    refs/for :意义在于我们提交代码到服务器之后是需要经过code review 之后才能进行merge的
    refs/heads 不需要
    【实操场景】

    
    
  • 相关阅读:
    行为的封装
    分页功能-----》链表实现
    python入门教程链接
    作用域 属性链接 存储类型
    Codeforces Round #598 (Div. 3)
    CCPC2018-湖南全国邀请赛
    【洛谷P2494】 [SDOI2011]保密(分数规划+最小割)
    【洛谷P3329】 [ZJOI2011]最小割(最小割树)
    【BZOJ3716】[PA2014]Muzeum(贪心+网络流)
    【洛谷P4542】 [ZJOI2011]营救皮卡丘(费用流)
  • 原文地址:https://www.cnblogs.com/shuiguizi/p/15568415.html
Copyright © 2011-2022 走看看