Git 日常工作中使用的命令记录
前言
这篇文章主要是介绍我在使用Git中的有一些忘记了,但是很重要的命令。
20190424 Git 历史信息 username 和 email 更改
git config alias.change-commits '!'"f() { VAR=\$1; OLD=\$2; NEW=\$3; shift 3; git filter-branch --env-filter \"if [[ \\\"\$\`echo \$VAR\`\\\" = '\$OLD' ]]; then export \$VAR='\$NEW'; fi\" \$@; }; f "
git change-commits GIT_AUTHOR_NAME "old name" "new name"
git change-commits GIT_AUTHOR_EMAIL "old@email.com" "new@email.com" HEAD~10..HEAD
20190314
本地分支的重命名
git branch -m oldbranchname newbranchname
如果想重命名当前分支
git branch -m newbranchname
20190311Update
如何在已存在的仓库里添加gitigonore
问题是:之前 Add 和 Commit 时发现把 bin 和 obj 文件包含进去了,后来再加了 .gitignore 发现没用了。解决问题如下
git rm -r --cached .
git add .
git commit -am "Remove ignored files"
20171127更新
分支
查看各个分支所指的当前对象
git log --oneline --decorate
git log --oneline --decorate --graph --all //输出你的提交历史,各个分支的指向,以及项目分支分叉的情况
git merge [branchname] 把 branchname 合并到当前分支
遇到冲突时分支的合并
任何因包含合并冲突而有待解决的文件,都会以未合并状态标识出来。 Git 会在有冲突的文件中加入标准的冲突解决标记,这样你可以打开这些包含冲突的文件然后手动解决冲突。 出现冲突的文件会包含一些特殊区段,看起来像下面这个样子:
<<<<<<< HEAD:index.html <div id="footer">contact : email.support@github.com</div> ======= <div id="footer"> please contact us at support@github.com </div> >>>>>>> iss53:index.html
这表示 HEAD 所指示的版本(也就是你的 master 分支所在的位置,因为你在运行 merge 命令的时候已经检出到了这个分支)在这个区段的上半部分( ======= 的上半部分),而 所要合并分支所指示的版本在 ======= 的下半部分。 为了解决冲突,你必须选择使用由 ======= 分割的两部分中的一个,或者你也可以自行合并这些内容。 例如,你可以通过把这段内容换成下面的样子来解决冲突:
查看每一个分支的最后一次提交
git branch -v
git branch --merged / --no-merged 查看已经合并或者未合并的分支
git branch -d / -D(强制删除)
Origin 并无特殊含义
远程仓库名字 origin 与分支名字 master 一样,在 Git 中并没有任何特别的含义一样。 同时 master 是当你运行 git init 时默认的起始分支名字,原因仅仅是它的广泛使用, origin 是当你运行 git clone 时默认的远程仓库名字。 如果你运行 git clone -o booyah ,那么你默认的远程分支名字将会是 booyah/master 。
2017 11 23 更新
查看文件提交历史
git log
git log -p //显示每次提交的内容差异
git log --stat //显示每次提交的简略的统计信息
git log --pretty=format:"%h - %an, %ar : %s"


限制输出长度
git log --sine=2.weeks
git log -<n> 显示 前 n 条提交
git log --author 指定作者的提交
git log -SFunctionName 可以列出那些添加或移除了某些字符串的提交

撤销相关操作
撤销刚刚的一个提交
git commit --amend //由于commit 信息写错,好像经常用
取消暂存文件
当你使用 git add * 时,发现添加了不应该暂存的文件,可以用下面的来取消暂存
git reset HEAD <file>
git checkout -- <file> //取消对一个未加入暂存区文件的修改
远程仓库
添加一个远程仓库
git remote add <shortname> <url>
git remote add pb https://github.com/paulboone/ticgit
从远程仓库抓取与拉取
git fetch [remote-name] //git fetch origin
git push [remote-name] [branch-name]
查看远程仓库
git remote show [remote-name]
远程仓库的移除与重命名
git remote rename <originName> <afterName>
git remote rm <remote-name>
标签
git tag 列出标签
Git 使用两种主要类型的标签: 轻量标签(lightweight) 与 附注标签(annotated)。
一个轻量标签很像一个不会改变的分支-它只是一个特定提交的引用。
附注标签是存储在Git数据库中的一个完整对象。它们是可以被校验的;其中包含打标签者的名字、电子邮件地址、日期时间;还有一个标签信息;并且可以使用GNU Privacy Guard (GPG) 签名与验证。
附注标签
git tag -a v1.4 -m 'my version 1.4'
git show 可以看到标签信息对应的提交信息
轻量标签
git tag v1.4-lw
给以前的提交打标签
git tag -a v1.2 9fsdfdasfa 某个提交的校验和的值
推送标签
git push origin v1.2 推送指定标签
git push origin --tags 一次性推送把所有不在远程仓库服务器上的标签全部推送过去
在特定标签上创建一个新分支
git checkout -b [branchname] [tagname]
git checkout -b version2 v3.3.0
如何跳转到指定的 commit
问题描述: 比如我觉得当前分支可能不适合线上的,那么我需要来一个更加安全的分支?
实现:
git checkout -b new-branch commitId
对 指定的 CommitId 创建新分支。
克隆远程仓库的时候自定义本地仓库名字
git clone http://github.com/xx myName
使用 git status -s 可以看见状态的简写版本,如下所示
查看已暂存的文件差异比较
以前一直不知道,当暂存之后使用 git diff 就无效了,今天发现竟然还有这个
(在未 commit 的状态下!)
git diff --cached
git diff --staged
移除文件
首先先使用 rm filename 然后再使用 git rm filename 进行记录。
另外一种情况是,我们想把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。 换句话说,你想让文件保留在磁盘,但是并不想让 Git 继续跟踪。 当你忘记添加 .gitignore 文件,不小心把一个很大的日志文件或一堆 .a 这样的编译生成文件添加到暂存区时,这一做法尤其有用。 为达到这一目的,使用 --cached 选项
git rm --cached deleteName
Git 日常工作中使用的命令记录的更多相关文章
- git在工作中的用法总结-使用篇
上一篇介绍了git的环境安装配置,本篇对git在工作中常用的用法进行总结,已满足大部分的日常工作需求,对于其他的一些git命令用法在今后使用到时我也会更新上来,文中如有错误,欢迎大家指出来,谢谢~ 一 ...
- 工作中常用Linux命令--服务器运维
工作中常用Linux命令--服务器运维 lsof查看端口使用情况 lsof -i:8080更多lsof命令使用说明:http://www.cnblogs.com/peida/archive/2013/ ...
- 关于git你日常工作中会用到的一些东西
前言 git是一个版本控制工具, 版本控制主要的好处有三点: 从当前版本回退到任意版本 查看历史版本 对比两个版本差异 git 相关术语 repository 仓库 branch 分支 summary ...
- 【Git】工作中99%能用到的git命令
Git使用笔记 1.第一次使用github ============================================= 1)github注册账号 使用邮箱注册账号 先不要创建版本库 2 ...
- 【mysql】工作中mysql常用命令及语句
1.查看mysql版本号 MySQL [release_test_oa]> select version(); +------------+ | version() | +----------- ...
- 工作中常用Lixu命令学习笔记
对于Linux,我是菜鸟,也是在工作中了才开始慢慢接触,用Linux的人都我都会觉得屌屌的,现在把工作中常用的一些Linux命令记录一下,供以后学习和参考. cd 这可能是我觉得Linux最简单的一个 ...
- 博主日常工作中使用的shell脚本分享
前言: 今天给大家分享一篇在我工作中常用的一个shell脚本,里面有一些我们常用到的shell操作.该脚本用于本地电脑和服务器交互上,实现以下功能: 自动拉取自己个人电脑上的源码到服务器上yocto包 ...
- 日常工作中常见的mysql优化技巧
1.介绍一下MYSQL经常使用的优化技巧. MySQL 自带 slow log 的分析工具 mysqldumpslow ,可是没有说明.本文通过分析该脚本,介绍了其用法. slow log 是 MyS ...
- git总结一、工作中常用基础命令
首先来了解两个概念: 工作区:比如你的项目目录 暂存区:git和其他版本控制系统的不同之处就是有这个暂存区的概念. .git不是工作区,而是git 版本库,在版本库中存放着很多东西,比如暂存区(sta ...
随机推荐
- Confluence 6 通过 SSL 或 HTTPS 运行 - 备注和问题解决
备注 在创建证书时候的背景信息: 'keytool -genkeypair' 命令将会创建秘钥对,包括公钥和关联的私钥,然后存储到 keystore 中.这个命令打包公钥为 X.509 v3 自签 ...
- 为 Confluence 6 配置发送邮件消息
如何配置 Confluence 向外发送邮件: 进入 > 基本配置(General Configuration) > 邮件服务器(Mail Servers).这里列出了所有当前配置的 S ...
- js数组的实例方法sort() 排序方法的运用,不再只是.sort()
1, sort() 不传回调函数的话,默认按照字母顺序(字符编码)的顺序进行排序. 2, sort() 通过传回调函数来控制从小到大的排序还是从大到小的排序: var arr = [1,23,5,6, ...
- Data Preprocess
本文试图解决一个问题,即我们自定义的数据如何训练模型?初识深度学习,我们接触手写数字识别模型,但是批次数据是mnist已经定义好的,我们现在有自己的图片如何做成批次进行训练模型. 现在我们将准备好的原 ...
- eclipse maven .jar中没有主清单属性
报错环境: windows系统eclipse maven 打包jar包后, 运行 java -jar 报错 E:\My_java\mysql\target>java -jar original- ...
- Selenium CSS定位语法
大部分人在使用selenium定位元素时,用的是xpath定位,因为xpath基本能解决定位的需求.css定位往往被忽略掉了,其实css定位也有它的价值,css定位更快,语法更简洁.这一篇css的定位 ...
- AI-视图组件-五个接口的最终简化版
五个接口最终版 #url.py # 序列化最贱版本 url(r'^customer/$', views.CustomerView.as_view({"get":"list ...
- 论文阅读笔记十四:Decoupled Deep Neural Network for Semi-supervised Semantic Segmentation(CVPR2015)
论文链接:https://arxiv.org/abs/1506.04924 摘要 该文提出了基于混合标签的半监督分割网络.与当前基于区域分类的单任务的分割方法不同,Decoupled 网络将分割与分类 ...
- OpenCV-Python入门教程5-阈值分割
一.固定阈值分割 import cv2 import matplotlib.pyplot as plt # 灰度图读入 img = cv2.imread('gradient.jpg', 0) # 阈值 ...
- 009-Python-面向对象
1.面向对象: 1.1什么是类? 类:把一类事物的相同的特征和动作整合到一起就是类,类是一个抽象的概念: 1.2什么是对象? 对象:就是基于类而创建的一个具体事物(具体存在的)也是特征和动作整合到一起 ...





