概念


文件周期

(工作区 - 缓存区 - 提交区 )

(Unmodified - Modified - Staged) --》 commit

  • master - 完美版
  • dev - 开发版 (develop)

【+】git log

git log --graph --oneline --all


文章目录


【+】git status

git status -s


文章目录


【+】git diff

git diff --cached(工作区-缓存区)

git diff HEAD (工作区 - 缓存区 - 提交区 )

(Unmodified - Modified - Staged)


文章目录


【+】git commit

git commit -am “…” (add+commit -m "..."

Note:

  • 提交的文件要先加入git管理。

git commit --amend (修改上次提交) --no-edit(不修改评论)


文章目录


【+】git reset

git reset <文件> (Staged => Modified)

git reset --hard <指针> (HEAD指向<指针>初始状态)

add 到stage 操作就被清除了
其他操作:

  • git reset -- hard HEAD
  • git reset --hard HEAD^
  • git reset --hard HEAD~100
  • git reset --hard a73c020
  • git reset --hard HEAD@{1}



文章目录


【+】git reflog (查看HEAD全部的变化)


文章目录


【+】git checkout

git checkout <指针> -- <文件> (文件回<指针>状态,commit => stage)

  • 和命令 git reset --hard <指针>对比,前者只是修改过去文件的一部分,而后者修改过去的全部!



git checkout <分支> (切换分支)

git checkout -b <分支>

等于
git branch <分支> (创建分支)
git checkout <分支> (切换分支)


文章目录


【+】git branch (查看分支)

git branch -a 先查看当前远端分支情况

git branch <分支> (创建<分支>分支)

git branch -d <分支> (删除<分支>分支)


文章目录


【+】git merge (合并)

git merge --no-ff -m “…” <分支> (合并分支,留下信息,禁止快速合并)

<mark>一定要先切换到更重要的版本中(如master)</mark>

merge

  • dev 分支修改

  • master分支修改

  • <mark>无法直接合并,提示手动修改</mark>

  • 解决冲突,commit

文章目录


【+】git rebase

  • 初始状态

git rebase <节点>

  • 提示冲突

  • 查看当前branch - git branch

git rebase --continue (看提示)

  • git rebase --continue

<mark>可以看到,原本的master节点 c51a23f 已经不见了</mark>, <mstyle mathcolor="&#35;ff0011"> </mstyle> \color{#ff0011}{相当危险!!}


文章目录


【+】git stash

  • 写代码…

  • <mark>git stash</mark>

  • git checkout -b boss (创建要临时操作的节点)

  • git commit -am “…” (修改好临时要求,上传)

  • git merge --no-ff -m “…” <节点> (把临时节点上传,合并)

  • git commit …

  • git checkout dev

  • git brench -D boss

  • git stash pop


文章目录


【+】git cherry-pick


文章目录


【+】 git remote

列出所有远程版本库

git remote -v

详细列出所有远程仓库


文章目录


【+】git push

git push origin :分支名 删除分支

git push origin 分支名 --force 强制覆盖

git push origin master (指定推送到的<远程主机><分支>

git push origin (指定<当前分支>推送到的<远程主机>和对应分支)

git push -u origin master (指定远程<默认远程主机><分支>

git push (simple方式,默认只推送<当前分支><默认远程主机>


文章目录


【+】 git pull

git pull是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge

<mark>这样可能会产生冲突,需要手动解决</mark>。

git pull


文章目录


【+】git tag

git tag <标签名>


git tag <标签名> <指针>

git tag -a <tagname> -m "..." <指针>


文章目录


【+】 git fetch

git fetch是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。


文章目录


【+】git clone

git clone -b xxx .git地址

直接指定clone某个分支即可:


文章目录


【+】Other

clear (清屏)

pwd (当前目录)

cat

touch

  • (用于<mark>修改</mark>文件或者目录的<mark>时间属性</mark>,包括存取时间和更改时间。<mark>若文件不存在</mark>,系统会<mark>建立</mark>一个新的空白文件)

ls -1(每行列出一个文件,即以单列形式列出)


文章目录


【+】vi编辑

【+】vim

保存命令

按ESC键 跳到命令模式,然后:
:w 保存文件但不退出vi
:w file 将修改另外保存到file中,不退出vi
:w! 强制保存,不推出vi
:wq 保存文件并退出vi
:wq! 强制保存文件,并退出vi
q: 不保存文件,退出vi
:q! 不保存文件,强制退出vi
:e! 放弃所有修改,从上次保存文件开始再编辑

撤消与重做(normal模式)

[n] u: 取消一(n)个改动。
:undo 5 – 撤销5个改变。
:undolist – 你的撤销历史。
ctrl + r: 重做最后的改动。
U: 取消当前行中所有的改动。
:earlier 4m – 回到4分钟前
:later 55s – 前进55秒