##快捷键
##一. 快捷键
1. 清屏快捷键  control+L
2. vim快捷操作
* control+b 往上翻页
* Control+f 往下翻页
* shift+g 回到末尾
3. oh my sh(https://ohmyz.sh/)
4. 数据库查询工具 Data grip
5. control+a 快速跳到命令头部
6. control+e 快速跳到命令尾部
##二. Git基本命令
1. git add
* 作用: 将未追踪的文件纳入追踪文件中/将工作去修改添加到缓存区中/当文件出现冲突时,手动修改冲突后使用git add filename表示已解决冲突
* git add test.txt 提交指定文件到缓存区
* git add . 提交当前工作区的所有修改到缓存区(并忽略.gitignore中的文件)
* git add * 提交当前工作区中所有修改到缓存区(不忽略.gitignore中的文件)
2. git rm --cached test.text 删除提交的缓存
3. git commit
* git commit -m "tips" 提交到版本库
* git commit -am "tips" 提交到缓存区并提交到版本库 4. git status
5. git log 查看提交历史
* -p 展开显示每次提交内容的差异
* -n 仅显示最近的n次更新
* --stat 仅显示简要的增改行数统计
* --pretty=oneline
* --pretty=format:"%h - %an, %ar : %s"
* git log --graph --pretty=oneline --abbrev-commit 查看log的简易版
6. git config(3种)
* 修改用户名和密码
git config --global credential.helper osxkeychain 清除用户信息后再次拉取代码即可
* 设置name和email
git config --system user.email luoli@qq.com 修改/etc/gitconfig文件 全局配置
git config --global user.email luoli@qq.com 修改~/.gitconfig文件 针对用户的配置
git config --local user.email luoli@qq.com 修改.git/config文件 针对项目的配置
* 删除name或者email
git config --global --unset user.emial
* 查看config用法
git help config
git config --help
man git-config
* **别名**
git config --global alias.br branch 设置git别名
git config --global alias.unstage "reset HEAD" 两个以上的单词设置git别名
git config --global alias.ui '!gitk' 给外部命令设置git别名
7. 删除文件
* 使用 git rm
删除并提交
git rm test.txt 删除文件并将删除文件提交到暂存区
git commit -m "del test.text"
删除并恢复
git rm test.txt 删除文件
git add test.txt
git reset HEAD test.txt 将待删除的文件恢复到工作区
git checkout -- test.txt 将工作区中的修改丢弃
* 使用 rm
8. git mv oldFileName newFileName 重命名
9. git commit --amend -m "修改最近一次提交的commit消息"
10. .gitignore 改文件放在项目根目录下
* \*.a 忽略所有.a结尾的文件
* !lib.a lib.a文件除外
* /TODO 忽略根目录下的TODO文件
* build/ 忽略build/目录下的所有文件
* doc/\*.txt 忽略doc/note.txt 但不包括 doc/server/arch.txt
* /\*/doc.txt 忽略一层目录下的doc.txt文件
* /\*\*/doc.txt 忽略任何目录下的doc.txt文件
##三. 分支重要操作
1. git checkout
* git checkout new_branch 切换分支
* git checkout - 切换最近一个分支
* git checkout -d new_branch 删除分支(当前分支不能为将删除的分支) 该分支未做任何修改
* git checkout -D new_branch 删除分支 不管该分支是否已合并
* git checkout -b new_branch1 创建并切换到新分支(新分支是基于master创建的/相当于master分支的副本)
* git merge new_branch 将mew_branch合并到当前分支
* git checkout -b develop origin/develop 创建并切换到develop分支且该分支与远程develop分支对应
* git checkout --track origin/develop 与上述效果一样
* 删除本地所有分支
* git checkout master 切换到master分支
* git branch | grep -v 'master' | xargs git branch -D 将git branch的结果进行筛选,除去master,将处理后的结果作为git branch -D的参数来进行删除分支
2. 快进(Fast-forward) master未修改 new_branch在master的基础上修改
* **HEAD指向当前分支 master指向提交**
* git checkout -b new_branch (master上新建分支new_branch,HEAD指向当前分支new_branch)
* git add test.txt git commit -m "add test.txt" (new_branch上提交commit1)
* git checkout master (HEAD指向master)
* git merge new_branch (master上合并new_branch的所有commit)
3. master已修改 new_branch也修改 * master分支修改并已commit
* new_barnch分支修改并已commit
* master分支merge分支new_branch 若有冲突解决冲突 解决后进行git add 和 git commit
* new_branch分支合并解决冲突后的master分支 以master分支内容为准 因为此时master分支的commit在new_branch分支的commit之后
4. git merge new_branch --no-ff 禁用fast_forward 这样master在合并分支的时候会新建一个commit id
5. git merge new_branch fast-forward模式直接将master指向new_branch最新的commit 不会新建一个commit id
6. git checkout -- text.txt **将工作区的内容与缓存区最近一次添加的内容对比,丢弃掉工作区中相对新增的修改**
7. git reset HEAD text.txt **将提交到暂存区的内容从暂存区回退到工作区**
8. git branch
* git branch 查看当前分支(只包含本地分支)
* git branch -a 查看分支(包含本地分支和远程分支)
* git branch new_branch 创建新分支
* git branch -m "new_name" 本地分支重命名
* git branch -av 查看分支以及最近一次的操作信息
* git branch -d br1 删除本地分支
##四. 版本回退
1. 回退到上一个版本
* git reset --hard HEAD^ 回退到上一个版本(上两个版本用 ^^ )
* git reset --hard HEAD\~10 回退到倒数第10个版本
* git reset --hard commit_id 回退到指定commit_id版本
* git reflog 查看操作日志 可以找出最新提交的commit_id
##五. 保存工作现场
1. 保存现场
* git stash
* git stash list
2. 恢复现场
* git statsh apply (stash 内容并不删除,需要通过 git stash drop stash@{0}手动删除)
* git stash pop (恢复的同时也将stash内容删除)
* git stash apply stash@{0} 恢复并并删除stash{0}
##六. 标签
1. git tag v1.0  轻量级标签
* git show v1.0 查看标签的信息
* git tag 查看所有标签
2. git tag -a v1.0.2 -m 'release version' 带有标注的标签
3. git tag -d tag_name 删除标签
4. git tag -l '\*.2' 查看标签
5. git blame --help
6. 远程标签
* git push origin v1.0 将本地标签推送到远程
* git push origin v1.0 v2.0 推送多个标签
* git push origin --tags 把本地尚未推送的标签都推送到远程
* git push origin :refs/tags/v6.0 删除远程标签
* git push origin -delete tags v6.0 删除远程标签(同上)
##七. diff
1. git diff  比较暂存区和工作区的差别
2. git diff HEAD 比较工作区和版本库的差别
3. git diff --cached commit_id 比较暂存区和版本库的差别
##八. 远程和github
1. git push
* git push **将本地版本库中的远程分支origin/master更新到最新/将本地修改推送到远程版本库**
* git push origin src:dest git push的完整写法/将本地的src分支提交到dest分支,一般src=dest
* git push origin :develop 将本地的空分支推送到develop分支 == 删除远程develop分支
* git push origin --delete develop 删除远程develop分支(同上)
* git push --set-upstream origin br1 **新建远程分支br1并将本地br1分支用来追踪远程br1分支(当远程分支br1不存在时)**
* git push --set-upstream origin br1:br2 新建远程分支br2并将本地分支br1用来追踪远程分支br2
* git push origin HEAD:develop2 本地分支与远程分支不同名时的推送命令
* git push origin develop:develop2 同上
* 远程分支的重命名:删除远程分支->本地分支重命名->推送到远程分支
2. git pull
* git pull **获取远程版本库(git fetch)/将远程版本库和本地版本库合并(git merge)**
* git pull origin src:des git pull的完整写法 将远程分支src拉取到本地分支des
* fetch + merge
* git checkout -b develop origin/develop **当本地不存在develop分支时,创建并切换到develop分支且该分支与远程develop分支对应**
3. 远程版本库和本地版本库关联
* git remote add origin https://\*.git 添加远程版本库且默认命名为 origin
* git push -u origin master 将本地master与远程master关联并推送到远程master
* git remote show origin 查看远程版本库的详细信息
* ssh-keygen 生成公钥 生成的的文件地址为 \~/.sh
* git remote rm origin 删除远程仓库
4. git clone
* git clone git@github.com:..../\*.git 将远程代码克隆到本地且项目名称默认为远程项目名称
* git clone git@github.com:..../\*.git mygit 将远程代码克隆到指定文件夹(mygit)中
* git clone -b new_branch git@github.com:..../\*.git mygit 将远程代码指定分支克隆到指定文件夹(mygit)中
5. commit_id的生成
* HEAD标记:HEAD文件是一个指向当前所在分支的引用标识符,该文件内部并不包含SHA-1值(即commit_id值),而是一个指向另一个引用的指针
* 当执行git commit命令时。git会创建一个commit对象,并将该对象的parent指针设置为HEAD所指向的引用的SHA-1值
* git commit的提交记录都会被git log记录下来
* 对于HEAD修改进行的任何操作,都会被git reflog记录下来
6. git remote prune origin 当远程分支develop被删除但本地版本库中仍然存在origin/develop时,使用该命令清除本地origin/develop
7. 在缺省情况下,refspec会被git remote add命令所自动生成,git会获取远程上refs/heads下的所有引用,并将它们写到本地的refs/remotes/origin目录下,因此如果远程上有一个master分支,在本地就可以通过下面几种方式获取它们的历史记录
* git log origin master
* git log remotes/origin/master
* git log refs/remotes/origin/master
8. 拉取远程分支时,舍弃本地修改
* git fetch --all 下载代码到本地,不进行合并操作
* git reset --hard origin/new_branch 将HEAD指向new_branch
##九. 子仓库
1. submodule
* git submodule add git@xxx.git mymodule 将远程仓库的内容拷贝到mymodule文件夹下作为子仓库
* git submodule foreach git pull 拉取所有子模块的更新
* git clone git@xxx.git --recursive 克隆带有子仓库的父仓库
* git rm --cached mymodule 删除缓存区中的子仓库
* rm -rf mymodule 删除子仓库文件
* rm .gitmodules 删除子仓库配置文件,完成之后执行git push,远程也删除了
2. subtree
* git remote add origin git@xxx.git
* git remote add subtree_origin git@xxxx.git
* git subtree add --prefix=subtree subtree-origin master --squash 将仓库subtree-origin作为origin的子仓库
* git subtree push --prefix=subtree subtree-origin master 在父仓库的总工作区中将子仓库的更新推送到子仓库上
* --squash 将多个提交合并成一个提交
3. subtree和submodule的区别
* submodule子仓库的更新无法在父仓库工作区进行提交,subtree可以
##十. 其他
1. git cherry-pick commit_id  快速复制另一个分支的commit
2. git 裸库(没有工作区的仓库 ) git init --bare
3. git gc 压缩功能
4. git 图形化
* gitk brew cask install tcl 使用gitk报错"unknown-color-name-lime"的解决办法 (mac上使用homebrew安装)
* git gui git图形化界面
5. git rebase 和merge功能相似,但会修改commit历史
* git reabse master 在develop分支上合并master分支,并且分支commit历史以master为准
* git rebase --continue rebase过程中解决冲突后,使用git add 添加,然后执行该命令
* git rebase --abort 终止rebase,分支会恢复到rebase开始前的状态
* 不要对master分支执行rebase,否则会引起很多问题
* 一般来说,执行rebase的分支都是自己的本地分支,没有推送到远程版本库
 
 

git命令合集的更多相关文章

  1. git命令合集及github的克隆推送

    安装git 初始化仓库 提交相关 撤销相关 远程推送 分支相关 其他 遇到的错误 github的克隆上传 此文章只是对命令的一个统计,起备忘和复习git只是的作用,不建议从没接触过git的同学通过它来 ...

  2. Git 经常使用命令合集

    ====== Git 经常使用命令合集 ====== === 1.Git 文档 ===     Git 中文文档观看地址:http://git.oschina.net/progit/      === ...

  3. Git&GitHun 命令合集

    Git&GitHun 命令合集 基本操作 git --version 查看git版本信息 git add 本地库初始化 设置签名 git config user.name xxx git co ...

  4. [转载]VIM命令合集

    Vim命令合集 http://www.cnblogs.com/softwaretesting/archive/2011/07/12/2104435.html 命令历史 以:和/开头的命令都有历史纪录, ...

  5. linux-Vim命令合集

    Vim命令合集 命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中输入以下命令即可 vim 直接启动vim vim filena ...

  6. 05-Vim命令合集

    Vim命令合集 命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中输入以下命令即可 vim 直接启动vim vim filena ...

  7. Timesten 日常管理命令合集

    Timesten 日常管理命令合集 以下所有操作都是基于TT  11 版,早前版本本人没用过,命令是否适用我不清楚啊! 各类服务管理 一.TT的启停  停服务:  1.停止复制与cache 进程:  ...

  8. Linux常用命令合集

    常用命令合集 命令选项和参数 Linux中的命令格式为:command [options] [arguments]  //中括号表示可选的,即有些命令不需要选项也不需要参数,但有的命令在运行时需要多个 ...

  9. Vim命令合集(四)

    Vim命令合集 命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中输入以下命令即可 vim 直接启动vim vim filena ...

随机推荐

  1. 学Go语言能找到实习吗,年前聊聊Go和Java

    前言 快过年了,来公司的人越来越少,估计明天都没什么人了,白泽也要收拾收拾回老家过年了.今天就随便写写零碎的事,所以行文当中难免思路跳跃,请大家一笑了之. 每次冷不丁收到公司给发的礼品袋,心头总是莫名 ...

  2. KL散度非负性证明

    1 KL散度 KL散度(Kullback–Leibler divergence) 定义如下: $D_{K L}=\sum\limits_{i=1}^{n} P\left(x_{i}\right) \t ...

  3. jsp 中 include指令 用法, <%@ include file="..."%> 和 <jsp:include page="..." flush="true" />的区别?

    原文链接https://blog.csdn.net/u012187452/article/details/51779052 1. 什么是jsp 文件? 个人理解.  jsp 是一个容器,可以将我们编写 ...

  4. 解决SpringBoot连接Nacos集群报400问题

    问题描述 搭建一个Nacos集群,使用 SpringBoot 程序连接 Nacos 集群,在启动的时候报异常,程序启动失败,而后程序假死.详细控制台日志信息如下: failed to req API: ...

  5. Nginx配置转发

    nginx location proxy_pass 后面的url 加与不加/的区别 在nginx中配置proxy_pass时,当在后面的url加上了/,相当于是绝对根路径,则nginx不会把locat ...

  6. Spring学习七:ComponentScan注解

    今天主要从以下几个方面来介绍一下@ComponentScan注解: @ComponentScan注解是什么 @ComponentScan注解的详细使用 1.ComponentScan注解是什么 其实很 ...

  7. <select><option></option></select> 操作

    转载请注明来源:https://www.cnblogs.com/hookjc/ function FlySwapSelect(s1,s2,myvars,calldbclick){ var mSel1= ...

  8. MyEclipse工程中Java Build Path中的JDK版本和Java Compiler Compiler compliance level的区别

    感谢大佬:https://blog.csdn.net/shan9liang/article/details/17266519 问题起源: 今天再在ESB调用WebService测试,需要在jboss上 ...

  9. 微擎site.php函数以及路由连接

    任务1: 微擎模块设计: module.php 规则类: 会调用module.php manifest.xml中业务菜单对应的模块 如果在site.php中没有相应的函数 比如 /web/index. ...

  10. 直播媒体流red5

    第一步下载 安装setup-Red5-1.0.1-java6.exe 安装教程网上有很多 显示如下页面说明安装成功 第二步 下载oflaDemo的 解压放在 第三步  打开 然后 ok了 注意:下面的 ...