基础

Repository 仓库

Checkout 检出

Remote不过是分布式系统的一个节点,姑且叫做remote。

命令

git config

几种粒度

  1. --system 所有用户
    • git config --system --list --show-origin 查看配置文件路径
  2. --global ~/.gitconfig
  3. --local 当前仓库

git init

git clone [url]

  • ssh:ssh-keygen -t rsa -C "email@example.com"
    • ~/.ssh/id_rsa or id_rsa.pub
    • -t type, -c comment

git add

  1. file1 file2 ...
  2. directory
  3. . 表示全部

git status

git diff

  1. 暂存区有时,比较工作区与暂存区,暂存区无时,比较工作区与最后一次commit的版本库

  2. --cached/--staged 比较暂存区与最后一次commit的版本库

    ……

git commit

  1. -m 带上commit info
  2. -a - m 跳过add,直接commit
  3. commit info修改
    1. 最后一次,git commit --amend,编辑保存
    2. 前面某次
      • git rebase -i HEAD~n
      • pick --> edit
      • git commit --amend 编辑 git rebase --continue,如此反复

git log

  1. --oneline 精简版
  2. -p -3 p-patch,具体哪些文件变更

git remote

  1. 默认名称为origin
  2. -v remote url
  3. add remote-name remote-url
  4. show remote-name
  5. rename old new
  6. rm remote name

git push

  1. remote-name brach-name 分支名相同时
  2. remote-name [local-branch]:remote-branch local-branch为空时表示删除远端分支

git rm

  1. 无参数时,删除工作区某文件,类似shell的rm
  2. cached 工作区和暂存区都删除

git stash

  1. save 'message',stash工作区和暂存区所有修改(untrack无法暂存)
  2. list statsh列表
  3. apply/pop 最后一次stash 都恢复到工作区,pop会删除stash
  4. apply/pop --index 恢复到工作区和暂存区,取决于stash时状态
  5. applypop stash@{n}

git branch

  1. xxname 创建分支
  2. -d xxname 删除分支

git checkout

  1. git checkout 检出分支
  2. git checkout -b 创建并检出

git merge

  1. remote-name/branch-name 合并远程分支到当前分支

git pull

  1. remote-name remote-branch:local-branch
    • 是当前分支可以不要:local-branch
    • git pull [--rebase] = git fetch + git merge/rebase,可能产生merge
  2. clone时所有本地分支都与远程同名分支建立了追踪关系,简写为git pull origin
  3. 默认远端为origin,简写为git pull

remote-name branch-name

  1. git fetch origin master 要拉取一个远程分支到本地,从哪拉?所以空格分开写
  2. git merge origin/master 将origin/master合并到当前分支,其实origin/master也不过是本地的一个分支而已所以不需要remote-name
  3. git push origin master 要推送到一个远端分支,推到哪?所以空格分开写

squash

  1. git rebase -i HEAD~n
  2. pick --> squash 最上面也即最后一次commit要pick
  3. git commit --amend 修改压缩提交的commit meesage
  4. git rebase --continue 执行压缩

git reset

  1. git reflog 查看md5
  2. --hard id 丢弃更改
  3. --soft id 更改会保留在暂存区
  4. id 更改会回到工作区

discard change

  1. 工作区

    • git checkout -- xx/.
  2. 暂存区

    • git reset --hard HEAD [xx] 全部discard

    • git reset --soft HEAD [xx] 回到暂存区(无用?)

    • git reset HEAD [xx]暂存区回到工作区

git push

  1. -f 强推,远端reset?

git tag

  1. git tag -a x.x.x -m "xxmessage", git push origin --tags
  2. git tag -d x.x.x, git push origin :refs/tags/x.x.x

git cherry-pick

  1. commitid
    • rebase/merge时不会产生重复提交

git format-patch

  1. HEAD^^ 最近两次commit打两个patch
  2. id1..id2 1-2差异patch,共一个
  3. -1 id1 某次commit打patch
  4. id1 id1到HEAD patch,多个

git apply

  1. --stat
  2. --check 是否能打,可能输出冲突

git am

  1. xx.patch 作者直接提交
  2. apply 只打在工作区,且可以接受diff文件
  3. /*.patch
  4. --abort
  5. --resolved
 posted on 2024-06-17 14:28  kabofang  阅读(21)  评论(0)    收藏  举报