如果你想精通Git,直接到 Git官网 把这本ProGit掌握已足以Pro Git

配置用户信息


user和email,--global参数全局配置,当然你也可以不加此参数,不同的项目用不同的用户名和email

git config --global user.name Super
git config --global user.email 1342449****@163.com

配置全局别名


此配置在开发中相当重要,尤其是对于使用Terminal,习惯使用命令行的朋友,由于git不支持tab自动补全,每次想要看下工作目录 状态都要git status,相当耗时。除非你能确定你敲两个字母比六个字母用时少。

git config alias.st "status"

全局别名
git config --global alias.st "status -s"
git config --global alias.ci "commit -m"
git config --global alias.aci "commit -a -m" (该配置很是方便,节省好多时间)
直接将git add . 和 git commit -m 合并(在一本Pro Git书籍上看到过,网上我没有找到)
git config --global alias.lg "log --color --pretty=format:'%Cred%h - %Cgreen%an %C(yellow)| %ad | %Creset%s' --graph" (自定义log)

第一条:git status是开发中使用最多最频繁的,至于-s 是简洁输入(Give the output in the short-format)

第二条:此条也使用频繁,但是我在开发中直接使用第三条跳过。

第三条:配置git aci 因为这样直接跳过使用暂存区域,对于已经跟踪的文件,我不要再此次使用git add加入暂缓区,然后再git commit提交到本地数据库,为了方便省事,直接将两条命令合并为一条,使用git aci "提交说明" 即可。省不省事,用下自然知道。

版本回退


没有提交的情况下进行版本回退
git reset --hard HEAD
回退到上一个版本
git reset --hard HEAD^
回退到上上个版本
git reset --hard HEAD^^
回退到指定回退到某个版本
git reset --hard 版本号(至少前5位)
回退到前几个版本
git reset --hard~1 注意下面一行命令 reset和revert有本质区别
git revert c011eb3c20ba6fb38cc94fe5a8dda366a3990c61

分支管理


多人开发或则多处管理分支时,可能会出现远程分支已经删除,但是在本地使用
'git branch -a'
依旧可以看到 此时可以使用
'git fetch -p'
使fetch之后删除没有与远程分支对应的本地分支 当然也可以通过查看远程分支
'git remote show origin' YJTSuper:yjtim super$ git remote show origin
* remote origin
Fetch URL: git@git.oschina.net:lingsui/yjtim.git
Push URL: git@git.oschina.net:lingsui/yjtim.git
HEAD branch: master
Remote branches:
dev tracked
im tracked
master tracked
proV2.3.0 tracked
refs/remotes/origin/test stale (use 'git remote prune' to remove)
Local branches configured for 'git pull':
master merges with remote master
show merges with remote master
Local refs configured for 'git push':
dev pushes to dev (up to date)
im pushes to im (fast-forwardable)
master pushes to master (up to date)
proV2.3.0 pushes to proV2.3.0 (up to date) 我们可以看到分支origin/test 已经过期(stale)
可以使用使用以下命令处理
'Git remote prune origin' git branch dev 创建分支
git merge dev 将dev分支合并到当前分支

分支切换



当我们正在当前分支编写代码,突然有某些比较烦人的家伙来中断你的思路,提出某地方需要修改而且比较紧急,
更烦人的是当前的代码仅仅编写了一半,所以使用git commit提交的话,想不出好的提交说明,当然这时候提交也
显得有所不适.这个时候,使用git stash就更加方便些 暂时隐藏
git stash 之后就可以正常切换分支了,当前的修改内容只是保存并且隐藏起来 回复到之前的工作状态
git stash pop 这样就可以愉快的继续编写当时被中断的代码了 当然,还有好多命令,可以自己摸索 git stash --help usage: git stash list [<options>]
or: git stash show [<stash>]
or: git stash drop [-q|--quiet] [<stash>]
or: git stash ( pop | apply ) [--index] [-q|--quiet] [<stash>]
or: git stash branch <branchname> [<stash>]
or: git stash [save [--patch] [-k|--[no-]keep-index] [-q|--quiet]
[-u|--include-untracked] [-a|--all] [<message>]]
or: git stash clear

远程地址切换


该方法保留所有的commit记录。如果不需要保留,直接新建项目copy代码好了 ,这样push的代码大小会小很多,因为所有的操作历史记录都没有了。
// 查看远程地址
git remote -v
// 更换远程地址, 新建一个项目不添加任何文件 在本地直接push即可
git remote set-url origin https://git.oschina.net/HaiShengHuo/xxx.git

查看某次提交修改的具体文件


方法一

git reflog 列出最新修改记录 也可以 git log --oneline

git log 00788a04 --name-status 找到对应版本号 执行

commit 00788a04f8d6dd834723c3479a0b5cdcfad8694a
Author: ZhiChao <13424490552@163.com>
Date: Thu Mar 30 11:04:46 2017 +0800 最后一条消息显示来源人 M yjtim/IM/Chat/Controller/ConversationListController.m commit a4b9129f1728dc10d5f6ab8c77c1b20ef7bb3d12
Author: ZhiChao <13424490552@163.com>
Date: Wed Mar 29 17:49:44 2017 +0800 隐藏被入群弹框 M yjtim/IM/Chat/Controller/ChatDemoHelper.m commit 1910008369d4ab264e7610997135a54d27fe22c7
Author: ZhiChao <13424490552@163.com>
Date: Wed Mar 29 17:40:56 2017 +0800 99+ M yjtim/IM/EaseUI/EMUIKit/Views/conversation/toolbar/EaseImageView.m

git diff HEAD@{79} HEAD@{78} 具体某次修改的内容(具体某次内容和上次的内容进行比较)

git diff a4b9129f 00788a04 当然也可以使用版本号

这样假如之前修改过具体某些内容,以后还需要修改的话,找起来真的很方便.好比某些bug好久之后才发现,又要回头去修改,而修改总要找到对应的代码进行修改吧,这样几行命令就定位到具体文件和位置了,方便多了,节省很多时间.找代码有技巧,但是"找"终究还是很浪费时间.这也告诉我们,commit 提交命令很重要,需要认真写,不可为了省事而乱写


diff --git a/yjtim/IM/Chat/Controller/ConversationListController.m b/yjtim/IM/Chat/Controller/ConversationListController.m
index df0555e5..71822638 100644
--- a/yjtim/IM/Chat/Controller/ConversationListController.m
+++ b/yjtim/IM/Chat/Controller/ConversationListController.m
@@ -347,7 +347,7 @@ - (NSAttributedString *)conversationListViewController:(EaseConversationListView
[attributedStr setAttributes:@{NSForegroundColorAttributeName : [UIColor colorWithRed:1.0 green:.0 blue:.0 alpha:0.5]} range:NSMakeRange(0, NSLocalizedString(@"group.atMe", @"[Somebody @ me]").length)];
}
else {
- attributedStr = [[NSMutableAttributedString alloc] initWithString:latestMessageTitle];
+ attributedStr = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@:%@",[[YJTAddressList shareAddressList].userNameDict objectForKey:lastMessage.from],latestMessageTitle]];
}
}
方法二

直接使用git log 6b81a31033 -p 或则 git log -p 6b81a31033 其中6b81a31033为版本哈希值

commit 6b81a31033074ef279049e9cbf5944e3158d7510
Author: ZhiChao <13424490552@163.com>
Date: Fri Apr 14 13:57:22 2017 +0800 综合评价fixbug diff --git a/yjtim/Sections/Apps/NewEvaluation/Controller/YJTEvaDetailVC.m b/yjtim/Sections/Apps/NewEvaluation/Controller/YJTEvaDetailVC.m
index 10ff4b31..cef73191 100644
--- a/yjtim/Sections/Apps/NewEvaluation/Controller/YJTEvaDetailVC.m
+++ b/yjtim/Sections/Apps/NewEvaluation/Controller/YJTEvaDetailVC.m
@@ -28,7 +28,7 @@ @interface YJTEvaDetailVC ()<YJTEvaDateSelectVCDelegate>
@property (nonatomic, strong) NSArray *catListArray;
@property (nonatomic, strong) YJTEvaSchoolYearModel *evaSchoolYearModel; -
+@property (nonatomic, copy) NSString *formId;
@property (nonatomic, copy) NSString *className;
@property (nonatomic, copy) NSString *classId;
@property (nonatomic, copy) NSString *tempClassId;
@@ -262,6 +262,7 @@ - (void)rightBtnClick {
editVC.evaListModel = self.evaListModel;
editVC.catListArray = self.catListArray;
...
方法三

git log --stat 6b81a31033或者git log 6b81a31033 --stat 查看简洁文件变化

commit 6b81a31033074ef279049e9cbf5944e3158d7510
Author: ZhiChao <13424490552@163.com>
Date: Fri Apr 14 13:57:22 2017 +0800 综合评价fixbug yjtim/Sections/Apps/NewEvaluation/Controller/YJTEvaDetailVC.m | 5 +++--
yjtim/Sections/Apps/NewEvaluation/Controller/YJTEvaEditVC.h | 1 +
yjtim/Sections/Apps/NewEvaluation/Controller/YJTEvaEditVC.m | 2 +-
3 files changed, 5 insertions(+), 3 deletions(-)

忽略跟踪


git checkout .   清空所有更改
以下命令是我们在项目中已经添加了.gitignore 但是中途突然不想再跟踪某文件
此时发现简单的在.gitignore文件中添加要忽略的文件是不起效的,因为该文件已
经被track,我们还需要将其状态改为 未track(其实只需删除暂缓区文件然后将操作体检即可)
git rm --cached Podfile.lock 将Podfile.lock从暂缓区删除,不再跟踪

备份


git tag -a WeChat1.0 -m "version 1.0" :给版本打上标签
git tag : 查看所有的标签
git push origin WeChat1.0 : 将WeChat1.0 push 到默认分支

Git配置技巧及常用命令总结的更多相关文章

  1. Git配置和一些常用命令

    Git:常用命令.... git clone <repo> git config –list git diff –staged add后,commit前的撤销:git rm –cached ...

  2. Git 配置环境及常用命令整理

    一.Git教程网站 廖雪峰网站 易百GitHub命令:https://www.yiibai.com/git/git_clone.html 完成Windows环境命令下Git config配置 设置好之 ...

  3. 图解git中的最常用命令

    图解git中的最常用命令 Git命令参考手册(文本版) git init                                                  # 初始化本地git仓库(创 ...

  4. Java的cmd配置(也即Java的JDK配置及相关常用命令)——找不到或无法加载主类 的解决方法

    Java的cmd配置(也即Java的JDK配置及相关常用命令) ——找不到或无法加载主类  的解决方法 这段时间一直纠结于cmd下Java无法编译运行的问题.主要问题描述如下: javac 命令可以正 ...

  5. git日常使用的常用命令总结

    git日常使用的常用命令总结 git 是什么? Git是目前世界上最先进的分布式版本控制系统(没有之一). Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常 ...

  6. 0、驱动及应用小技巧、uboot指令及环境变量配置、linux常用命令

    (内核make menuconfig之后,通过insmod安装的驱动都应该重新make,可能会出现一些莫名的问题) (nor flash/SDRAM/DM9000都受内存控制器控制,需要配置内存控制器 ...

  7. 版本控制-Git服务器搭建和常用命令使用

    Git是目前世界上最先进的分布式版本控制系统(没有之一).使用Svn的请参考<版本控制-svn服务器搭建和常用命令(centos 6.3)>,下面介绍Git的常用命令 常用命令 简单版 升 ...

  8. Git 基本概念及常用命令

    一.基本概念 文件的三种状态:(任何一个文件在git中都有以下三种状态) 1) 已提交(committed):表示该文件已经被安全地保存在本地数据库中了. 2) 已修改(modified):表示修改了 ...

  9. git开发流程、常用命令及工具、TortoiseGit使用及常见问题

    根据我最近使用git的一些经历,git是基于分支的版本控制工具,分支有远程分支和本地分支. 一.开发流程 - 从远程服务器的master,clone一份项目文件到本地,然后本地master的基础上br ...

随机推荐

  1. ArcMap没有工具条和菜单栏的解决方法

    问题: 在安装ArcGIS10后,打开竟然没有菜单栏和工具栏,安装10.1又有,卸了重装10还是没有 解决办法: 在ArcMap的状态栏上双击,在弹出的自定义对话框中,在Toolbars工具栏选择Ma ...

  2. 【Linux】Linux远程登陆

    登录任务 Windows主机--远程登录--Linux主机 一.登陆前提准备 1.1 确保网络通畅 确保从Windows 能够Ping通Linux 1.2 关闭Linux防火墙 //前提:以root管 ...

  3. 【起航计划 033】2015 起航计划 Android APIDemo的魔鬼步伐 32 App->Service->Foreground Service Controller service使用,共享service,前台服务,onStartCommand

    Android系统也提供了一种称为“Service”的组件通常在后台运行.Activity 可以用来启动一个Service,Service启动后可以保持在后台一直运行,即使启动它的Activity退出 ...

  4. JMeter 配置元件之-HTTP Cookie管理器-实现 Cookie 登录

    下面以购物App常用的收藏功能为例,讲述如何在 JMeter 中使用 cookie 进行登录态操作.具体的操作步骤如下所示: 第一步.录制查看收藏列表的 HTTP请求: 录制查看收藏列表的HTTP请求 ...

  5. NetBeans 仿notepad++风格

    一直喜欢notepad++配色跟Courier New字体.但notepad++毕竟功能有限. 改用了NetBeans,调整了下样式,终于感觉看着舒服了. 下载链接:点击下载,配置里导入就OK 风格截 ...

  6. 操作Active Directory C#

    .Net平台操作活动目录Active Directory,使用System.DirectoryServices.ActiveDirectory,主要是User OU 和Group的操作. 代码运行了一 ...

  7. sql developer中英文切换

    今天使用oracle sql developer时做调优建议时找到的建议显示为?的乱码,本人sql developer为中文版,修改为英文版后问题解决. 查看帮助菜单中的属性选项卡,user.lang ...

  8. python操作oracle小测试

    首先使用python操作数据库需要导入cx_Oracle包import cx_Oracle这个包需要单独下载,下载地址:https://pypi.python.org/pypi/cx_Oracle使用 ...

  9. May 26th 2017 Week 21st Friday

    One thorn of experience is worth a whole wilderness of warning. 一次痛彻心扉的经历,抵得上千百次的告诫. Several days ag ...

  10. 搭建packagist私服和composer

    1.下载源码 https://github.com/composer/packagist 2.修改配置文件 cp app/config/parameters.yml.dist  app/config/ ...