Git命令备忘录

1. 安装和初始化设置

git config --global name "your name"
git config --global email "your email"

2.创建版本库repository

windows上打开git bash
cd 目录
git init # 生成一个空的repository版本库。此时目录中,已有文件,尚未加入版本库中,通过git add .添加到暂存区,git commit -m "提交信息",将文件添加入版本库中。

3.版本回退

git reset --hard head^^^ # 回退三次
git reset --hard 版本号id # 回退到具体版本号

4.查看历史

git log # 查看commit提交历史
git reflog # 查看所有命令历史

5. 工作区,暂存区,版本库,提交修改。

工作区,暂存区,版本库

git add file # 将文件的修改信息,从工作区保存到暂存区中。
git commit -m "备注信息" # 将暂存区中数据,保存到版本库中。

6. 撤销修改

git checkout -- file # 将工作区资料,撤销修改到最近一次git add或者git commit的状态。注意checkout命令也是分支管理命令,所以--是必须的参数。

PS:

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。

7.删除文件

不执行git rm file命令,则不会将文件从版本库中删除,你仍然可用git checkout -- file命令恢复文件。

8.远程仓库管理

1)添加远程仓库
git remote add origin 你的远程仓库地址 # 一般来说,origin是Git默认叫法,一眼就知道是远程仓库,方便后续使用。但是你也可以改名。
ps:理解法,git remote远程仓库 add 一个叫做origin的远程仓库,地址为xxxx。
2)从远程仓库克隆到本地
git clone 你的远程仓库地址
ps:目前常见github管理平台,常见的远程仓库地址的写法有两种,一种是git@github.com:用户名/你的仓库名.git;另一种是https的写法。两种均可,一般推荐git,因为使用ssh协议,一来传输速度更快,二来安全性增加。
3)推送远程仓库
git push origin master
4)拉取远程仓库更新
git pull orgin master

9.分支管理

首先理解一张图,三个概念。head指针,master和dev分支指针, 版本内容。
head 指向 分支指针,再指向具体版本内容。


分支概念图

1)创建,切换,删除分支。
git branch 分支 # 创建分支
git checkout 分支 # 切换分支,即head指针切换指向另一分支指针。
git checkout -b 分支 # 创建+切换分支的合并命令。

2)查看分支
git branch; # 查看分支。如下图所示,*表示当前分支

$ git branch
   master
   * test

3)合并分支
git merge 分支名; # 将分支合并到当前所在分支上。

4)删除分支
git branch -d 分支名

5)解决分支冲突
首先,merge:
git branch; # 查看当前分支
git merge 你想合并的分支 # 合并到当前分支
接着,修改工作区文件内容。例如test.txt文件中出现:

<<<<<<< HEAD
a master change;
=======
It is a test;
>>>>>>> test

最后,提交改变,解决冲突。
git add test.txt # 手工修改冲突,并提交暂存区
git commit -m "conflict fixed" # 解决冲突。
git log --graph; # 查看分支图形记录。
git log --graph --pretty=oneline --abbrev-commit; # 优化图示法

6)分支合并策略
git merge dev # 默认采用fast-forward模式。

* ba1daa2 (head->master,dev) add merge
*   bdb7f79 conflict fixed

git merge --no-ff -m "merge with no-ff" dev # 指定采用no-off模式。

*   bdb7f79 (head->master) add with no-off
|\
| * b2f2d77 (dev) add merge
|/
* bdb7f79 conflict fixed

ps:可以看出,fast-forward模式,无法看出分支信息,在commit(conflict fixed)之后,只有一个commit提交信息;而no-off模式,则可以看出分支信息,并且多了一次commit提交信息。

7)团队协作与分支管理策略
git remote; # 查看所有远程仓库信息。
git remote -v; # 查看所有远程仓库更详细的信息。

git push origin master; # 推送master分支
git push origin dev; # 推送dev分支。

git checkout -b dev origin/dev

分支管理策略:
master作为稳定版本,仅用于发布新版本。(ps:git tag命令)
dev,作为开发版,所有人员在此版本上协作,每个人都有自己的本地dev分支,不时的合并到远程dev分支就对了。
feature分支:每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后,删除该feature分支。
bug分支:
注意bug分支是在哪里修复,例如修复到master分支上,还是修复到dev分支上,最后稳定版才发布。
ps:关于bug分支,如果你接到bug修复任务的同时,还在处理dev开发任务到一半,提交不合适,建议用git stash命令保存修改。

请记住以下四个stash命令。
git stash; # 保存分支的工作区状态,保存在栈中
git stash list; # 显示栈中所有信息
git stash pop; # 恢复最后入栈的工作区状态
git stash apply stash@{0}; # 恢复指定的工作区状态。

10.标签管理与作用

1)新建标签
git tag 标签名; # 在当前分支的最近一次提交commit打标签
git tag 标签名 指定的commitid; # 在指定的提交commitid上打标签。

2)查看标签
git tag;# 查看所有标签
git tag show [tagname]; # 查看某个标签的详细信息。
git tag -a 标签名 -m "备注信息" [commitid]; # 给某个标签附加备注信息。

3)删除标签
git tag -d 标签名;

4)标签的远程同步
git push origin <tagname>; # 同步某个标签
git push origin --tags; # 同步所有标签
git push origin :refs/tag/tagname; # 同步删除一个标签。

11.其他

1)忽略文件
请使用.gitignore文件来忽略,更多细节请baidu,较为少用的东西。

2)搭建git服务器

1.首先安装git,
sudo apt-get install git
2.创建git用户,并设定权限,
sudo adduser git
vi /etc/passwd
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
3.收集证书
收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。
4.创建裸仓库
先选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令:
git init --bare sample.git
sudo chown -R git:git sample.git
5.同步使用仓库
git clone git@你的私有仓库ip地址:/srv/sample.git
接着你懂得用的。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,458评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,454评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,171评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,062评论 0 207
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,440评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,661评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,906评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,609评论 0 200
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,379评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,600评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,085评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,409评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,072评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,088评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,860评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,704评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,608评论 2 270

推荐阅读更多精彩内容

  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,413评论 9 163
  • git常用命令 GIT常用命令备忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章阅读 8,384评论 1 26
  • Git常用语法 [TOC] Git简介 描述 ​ Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,...
    君惜丶阅读 3,445评论 0 13
  • 繁华色彩光影 谁不为它迷 风会带走一切短暂的轻松 笑眼内观看自己 感觉有些寂寥 什么都不必说你总是能懂 人群熙熙攘...
    Yu故知阅读 259评论 3 5
  • 多年以后,你还是你,我依旧是我,在不同的城市,面对不同的人。每天沐浴着一样的阳光,享受着一样的微风。那时候,也...
    梨渦阅读 144评论 0 0