Git入门操作

本文中介绍了Git的部分原理和操作

  • 工作原理
  • 工作区、暂存区、版本库
  • 基本命令
  • 回退功能
  • 撤销和删除
  • 分支管理

Git工作原理

原理图

Git是目前世界上最先进的分布式版本控制系统。工作原理见下图:

image
  • workspace:工作区(本地目录)
  • index/stage:暂存区
  • respository :仓库区(本地仓库)
  • remote:远程仓库

工作区、暂存区、版本库

工作区:自己电脑上本机看到的目录,以及以后需要新建的目录文件等都是属于工作区的范畴

暂存区:使用 git add 把文件添加进去,实际上就是把文件添加到暂存区;使用git commit提交更改,就是把暂存区的所有内容提交到当前分支上

版本库:工作区目录下有一个隐藏目录.git,不是属于工作区的,这个是版本库。版本库里面存了很多的东西:stage(暂存区)、第一个分支master、指向master分支的第一个指针HEAD

Git基本命令

git init :初始化,会多出一个.git隐藏目录

git status :查看状态

git add <filename> :添加一个文件

git add .:添加全部

git commit -m "第一次提交" :提交到本地仓库中

git diff <filename>:查看某个文件修改内容

git clone git@github.com:pidada/charts.git :克隆某个仓库,后面是仓库地址

image

版本回退

查看提交日志

git log:查看提交版本号(从近到远的显示日志)

git log —pretty=oneline:显示少许内容(版本号相关)

回退版本

git reset —hard HEAD^:上个版本

git reset —hard HEAD^^:上上个版本

git reset —hard HEAD~100:回退到前100个版本号

回退指定版本

git reflog:获取版本号

git reset —hard 6fcfc89:回退到指定的版本(6fcfc89是版本号)

撤销和修改

撤销

除了使用上面的回退版本方法之外,还可以使用下面的方法:

git checkout -- <filename>

image

上述命令指的是将文件在工作区中的修改全部撤销,分为两种情况:

  • 文件修改后,没有放到暂存区,使用上述命令直接撤销和修改,回到和版本库一模一样的状态
  • 文件修改后,已经放入了暂存区,接着做了修改,撤销修改后回到添加暂存区后的状态
image

删除

如果在版本库中添加了文件,然后提交

git add test.txt
git commit -m "add test"
rm test.txt    # 直接删除文件
git status  # 查看是否删除

git checkout -- test.txt  # 恢复文件

远程仓库

添加公钥

本地Git仓库和远程的GitHub仓库之间是通过SSH加密进行传输进行连接的。

  1. 创建SSH key,查看本地的.ssh目录(隐藏目录)

    • id_rsa:私钥

    • id_rsa.pub:公钥(需要添加到github的SSH keys页面中)

  2. 添加公钥

    image
image
image

创建仓库

关于新建github账号和GitHub仓库的过程,看Git使用-10分钟快速入门

几条重要的命令

git remote add origin https://github.com/tugenhua0707/testgit.git   
git push -u origin master  #  从本地添加到远程仓库中,第一次需要加上 -u 参数
git push origin master  #  后面的提交不需要

分支

创建、查看和切换分支

git branch test  # 创建分支  
git branch  # 查看分支  当前分支加上星号
git checkout test  # 切换分支

git checkout -b test  # 创建并切换分支,相当于是下面两句
# git branch dev
# git checkout dev

# 如果在test分支上修改的内容,想合并到分支master上面
git merge test  # 合并指定分支到当前分支上(需要在master分支上执行)

git branch -d test  # 删除分支
image

分支管理策略

通常合并分支时,git一般使用Fast forward模式,在这种模式下,删除分支后,会丢掉分支信息,使用带参数--no-ff来禁用Fast forward模式

git merge --no-ff -m "merge with no-ff" test  # 合并分支,并且禁用fast forward模式

笔记:首先master主分支应该是非常稳定的,也就是用来发布新版本,一般情况下不允许在上面操作。一般情况下在新建的test分支上操作,等到test分支代码稳定后,可以合并到主分支master上来。

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