概念
文件周期
(工作区 - 缓存区 - 提交区 )
(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
- 《<mark>Git Reset 三种模式</mark>》- https://www.jianshu.com/p/c2ec5f06cf1a
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−stash−pop冲突的解决》 - https://blog.csdn.net/jy692405180/article/details/78520251
git merge --no-ff -m “…” <分支>
(合并分支,留下信息,禁止快速合并)
<mark>一定要先切换到更重要的版本中(如master
)</mark>
- 《
--no-ff
的作用》-- https://blog.csdn.net/zombres/article/details/82179122
<mark>no fast forward</mark>
merge
-
dev 分支修改
-
master分支修改
- <mark>无法直接合并,提示手动修改</mark>
- 解决冲突,commit
文章目录
【+】git rebase
- 初始状态
git rebase <节点>
- 提示冲突
- 查看当前branch -
git branch
git rebase --continue (看提示)
git rebase --continue
<mark>可以看到,原本的master节点 c51a23f 已经不见了</mark>, 相当危险!!
文章目录
【+】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 fetch & pull详解》https://www.cnblogs.com/runnerjack/p/9342362.html
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 & pull详解》https://www.cnblogs.com/runnerjack/p/9342362.html
git fetch
是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。
文章目录
【+】git clone
git clone -b xxx .git地址
直接指定clone某个分支即可:
文章目录
【+】Other
- 《git基本命令ls、cat、mv、touch简述》https://www.jianshu.com/p/23b816884f89
clear (清屏)
pwd (当前目录)
cat
touch
- (用于<mark>修改</mark>文件或者目录的<mark>时间属性</mark>,包括存取时间和更改时间。<mark>若文件不存在</mark>,系统会<mark>建立</mark>一个新的空白文件)
ls -1(每行列出一个文件,即以单列形式列出)
文章目录
【+】vi编辑
【+】vim
- 《vim常用快捷键》https://www.cnblogs.com/junwen5599/p/9996873.html
按i之后进入编辑
保存命令
按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秒