git命令备忘

在工作之余,做一些备忘是很重要的,之前在新浪博客真的是坑爹,吭哧吭哧几个小时的东西一不小心就全军覆没...2017在简书重新开始啦...

git可以说是每一个程序员最基本的代码管理工具,之前用SVN的都能深刻的感受到git的强大之处,在第三方工具横行的时代,有时候适当的使用一些命令会是代码管理更加便捷。(注:git的第三方工具最常见的就是sourceTree,之前用的时候感觉太过啰嗦,不过简洁,后来改用gitX,一直沿用到现在,文章末尾附百度云地址,各位需要可以自行下载)。

说到git,大家通常会和SVN做对比,首先一个截然不懂的地方就是,git有一个神器一般存在的暂存区。对于git,除了工作区(也就是你需要编辑的那个文件的区域),版本库中有一个神器的暂存区,Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。从我个人看来,暂存区可以统一工作区多次修改统一提交,从很大程度上缓解对于版本库分支的复杂操作,增加容错性。


工作区,暂存区,master

一、本地管理

1. 提交操作

(1). 配置全局用户名和邮箱  

配置用户名 : git config --global user.name "ys"

配置邮箱 :  git config --global user.email "ys@163.com"

获取全局配置信息 : git config --list

(2). 创建仓库

cd到你想要创建仓库的地址,运行  git init ,你会发现根目录下多了一个.git的文件夹,那么你的本地仓库就已经建好了

(3). 忽略文件

有时候有些文件我们不想每次提交,那么我们可以配置.gitignore,并把它放到根目录,忽略该文件的效果。eg:在里面添加 .DS_Store,则不会对该文件的修改加入到工作区中。有些已经跑过的项目,你会发现你在.gitignore加入 xcuserdata/ 后,UserInterfaceState.xcuserstate这个文件还是频繁更新,扰人至极,去掉这个文件的具体步骤如下:

到目录下把这个文件直接干掉,然后commit这次修改,重启Xcode就好了。

或者使用命令行:

git rm --cached 该文件路径

git commit -m "Removed stupid file"

(4). 查看仓库的当前状态

git status   查看当前文件状态

git diff   查看当前改动

git diff HEAD -- filename  查看该文件工作区与当前版本库的差别

(5). 查看之前的所有log

git log  查看详细改动

git log --pretty=oneline   简单方式查看版本改动

(6). 从工作区添加到暂存区

git add filename.txt   添加单个文件

git add *.txt   添加所有txt文件

git add .  添加所有文件

(7). 丢弃工作区中的修改

git checkout -- filename   丢弃对应文件的修改

git checkout head .  丢弃所有工作区的修改

(8). 将暂存的修改还原到工作区

git reset head  或者 git reset head filename

(9). 将暂存区的改动上传到仓库

git commit -m "commitSomething"

(10). 版本回归

首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交74399b158f9c557486c0f0074483e78f1184bb7c(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。

在这里,介绍一下 --hard --soft --mix(默认)

git reset --mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息

git reset --soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可

Git reset  --hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容

git reset --hard HEAD^   回滚到上一个版本

注:我来个擦,突然发现回滚错了,天雷滚滚啊,怎么回去呢?在没关闭命令行的前提下,找到上次git log的日志,找到对应的版本号,输入git reset --hard 74399b158f9c557486c0f0074483e78f1184bb7c  你会发现,我的天,最后一条数据又回来了。哎呀,如果你说我都已经关了命令行了,别担心,你需要另外一个查看所有执行过的命令的神奇的 git reflog,你会神奇的发现所有的版本号都能看得到,于是你学会了上面的方式,成功回到人生巅峰。

2. 分支管理

(1). 创建分支

git checkout -b branchName (相当与: git branch branchName      git checkout branchName两句命令)

git branch branchName b281e9cd7048a3ad70b5159ba47d4205eb476608  在指定节点创建分支

(2). 查看当前所有分支以及状态

git branch

(3). 合并分支

git merge branchName   用于合并指定分支到当前分支

(4). 删除分支

git branch -d branchName  删除指定分支

二、远程管理

首先登陆github创建一个远程仓库,获取到远程仓库的地址。(https://git.oschina.net/yang_shuai/gitTest.git)

(2). 克隆远程仓库

git clone https://git.oschina.net/yang_shuai/gitTest.git

(2). 查看本地远程仓库状态

git remote -v

(3). 链接远程仓库

git remote add origin https://git.oschina.net/yang_shuai/gitTest.git

(4). 清除远程仓库

git remote rm origin

(5). 获取远程库数据单不合并

git fetch origin

(6). 将本地分支推送到远程分支并合并

git push origin master:master  master为分支名,前面的master为本地分支名,后面的master为远程分支名

(7). 获取并合并远程分支的两种方法

第一种: 使用git fetch 获取到当前最新的远程分支,然后使用git merge origin/master 进行合并。

第二种:直接使用 git pull origin master:master 获取并直接合并到对应分支。

针对两种获取合并方式,个人更推崇第一种,首先可以知道队友都改了些什么,另外可以准确的进行一对多的合并。

三、冲突解决

对于部分新手来说,解决冲突可以说是头疼的问题。目前有两种解决冲突的方式。


冲突后文件显示

第一种:修改当前文件,也就是说在你编辑的文件中直接修改然后git add . ,git commit -m “mergeok”,手动保留你想要的修改。

第二种:自动解决冲突的工具,不过我还是不叫喜欢第一种,可控性强。

四、标签操作

git tag v1.0.0 (后面可加版本号在固定节点打上tag)

git tag   查看所有标签。

git tag -d v1.0.0  删除名称为v1.0.0的本地标签

git push origin :refs/tags/v1.0.0  删除名称为v1.0.0的远程仓库标签


GitX链接: https://pan.baidu.com/s/1pKZayDX   密码: txfj

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,378评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,356评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,702评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,259评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,263评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,036评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,349评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,979评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,469评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,938评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,059评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,703评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,257评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,262评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,501评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,792评论 2 345

推荐阅读更多精彩内容

  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,632评论 9 163
  • git常用命令 GIT常用命令备忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章阅读 8,456评论 1 26
  • 本文为 Git教程的学习笔记,教程源自廖雪峰的博客。这是一个由浅入深,学完后能立刻上手的Git教程。另,附上另一本...
    七弦桐语阅读 6,231评论 5 47
  • 昨天 朋友圈被 我们三的一句 “堕落才能长久”刷屏了 其实事情的原由是 一个朋友的客户离婚了,惊讶与我们的原因是:...
    淡淡27阅读 236评论 0 0
  • 最近很忙,压力很大,经常熬夜 你不喜欢诉说,所以没有人知道你有多忙,没有人知道你压力有多大,没有人看出...
    小闹心H阅读 132评论 0 0