Git基本操作

安装Git:

$ git config --global user.name "Your Name"

$ git config --global user.email "email@example.com"

git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置。

安装版本库:

$ mkdir learngit //当前位置创建learngit文件夹

$ cd learngit //跳转到learngit

$ pwd //显示当前目录

$ git init //把这个目录变成Git可以管理的仓库

ls -ah//用来打印出当前目录的清单,-a包含以.开头的隐含文件,-h列出文件大小

把文件添加到版本库:

将textname.TXT文件放入learngit文件

$ git add textname.txt //添加到暂存库

$ git commit -m "note"//-m 后面输入的是本次提交的说明

时光机穿梭:

$ git status //查看仓库当前的状态

$ git diff readme.txt //查看仓库的变化 

版本回退:

$ git log //版本历史记录,所有的

$ git log --pretty=oneline //数字为版本号

$ git reset --hard HEAD~n //回退n个版本,或者HEAD^...

$ git reset --hard number //回到未来的某个版本号number

$ cat readme.txt//查看当前版本的内容

$ git reflog//记录你的每一次命令

版本库=stage(暂存区)+master(分支)

仓库=工作区

Untrack files://某个文件没有被添加过

管理修改:

git diff HEAD -- readme.txt//可以查看工作区和版本库里面最新版本的区别

撤销修改:

$ git checkout -- readme.txt//撤销工作区的全部修改。用版本库里的最新版本替换工作区的版本,“一键还原”。

$ git reset HEAD file//可以把暂存区的修改撤销掉(unstage),重新放回工作区。

git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。

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

删除文件:

$ rm test.txt //删除仓库文件

$ git rm test.txt

$ git commit -m "remove test.txt"//删除版本库文件

远程仓库:

第1步:$ ssh-keygen -t rsa -C "youremail@example.com"//创建SSH Key

可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:

添加远程库:

首先,登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库:

在Repository name填入learngit,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库:

在本地的learngit仓库下运行命令(关联):$ git remote add origin git@github.com:yourgithubid/learngit.git

添加后,远程库的名字就是origin,这是Git默认的叫法

下一步,就可以把本地库的所有内容推送到远程库上:$ git push -u origin master//第一次使用将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。

之后就用:$ git push origin master

SSH警告:

当你第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告:这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。

Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了:

这个警告只会出现一次,后面的操作就不会有任何警告了。

从远程库克隆:

首先,登陆GitHub,创建一个新的仓库,名字叫gitskills:

我们勾选Initialize this repository with a README,这样GitHub会自动为我们创建一个README.md文件。创建完毕后,可以看到README.md文件:

下一步是用命令git clone克隆一个本地库:$ git clone git@github.com:yourgithubid/gitskills.git

$ cd gitskills //进入子目录

$ ls //显示

分支管理:

创建与合并分支:

$ git checkout -b dev //创建dev分支,并切换到dev分支

$ git branch //列出所有分支,当前分支前面会标一个*号

$ git checkout master //切换到master分支

$ git merge dev //合并指定分支到当前分支,Fast forward

$ git branch -d dev //删除dev分支,-D强制删除

$ git log --graph --pretty=oneline --abbrev-commit //查看分支合并情况

$ vi text.txt //进入某个文件

分支管理策略:

$ git merge --no-ff -m "merge with no-ff" dev //普通合并,--no-ff参数,表示禁用Fast forward,(可查看历史)并且提交了一个commit

Bug分支:

$ git stash //把当前工作现场(工作区)“储藏”起来

$ git stash list //查看工作现场

一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;

另一种方式是用git stash pop,恢复的同时把stash内容也删了:

$ git stash apply stash@{0} //恢复到制定stash

多人合作:

推送分支:

$ git remote //查看远程库 -v表示详细信息

$ git push origin master //推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:

抓取分支:

(在另一台电脑(注意要把SSH Key添加到GitHub)或者同一台电脑的另一个目录下克隆)

默认情况下,你的小伙伴只能看到本地的master分支

$ git clone git@github.com:YourID/learngit.git

现在,你的小伙伴要在dev分支上开发,就必须创建远程origin的dev分支到本地,于是他用这个命令创建本地dev分支: 

$ git checkout -b dev origin/dev

推送失败,因为你的小伙伴的最新提交和你试图推送的提交有冲突,解决办法也很简单,Git已经提示我们,先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送:

$ git branch --set-upstream dev origin/dev //本地dev分支与远程origin/dev分支的链接

$ git pull

创建标签:(只存储在本地,不会自动推送到远程)

$ git tag v1.0 //切换到需要打标签的分支上后,默认标签是打在最新提交的commit上的。

$ git tag //查看所有标签

$ git log --pretty=oneline --abbrev-commit

$ git tag v0.9 commitid //找到历史提交的commit id,然后打上

标签不是按时间顺序列出,而是按字母排序的

$ git show v0.9 //查看标签信息

$ git tag -a v0.1 -m "version 0.1 released" commitid //创建带有说明的标签,用-a指定标签名,-m指定说明文字

$ git tag -s v0.2 -m "signed version 0.2 released" commit //通过-s用私钥签名一个标签:签名采用PGP签名,因此,必须首先安装gpg(GnuPG),如果没有找到gpg,或者没有gpg密钥对,就会报错

操作标签:

$ git tag -d v0.1 //删除标签

$ git push origin v1.0 //送某个标签到远程

$ git push origin --tags //推送全部

如果标签已经推送到远程,先从本地删除:$ git tag -d v0.9

从远程删除。删除命令也是push:$ git push origin :refs/tags/v0.9

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

推荐阅读更多精彩内容

  • 1.git的安装 1.1 在Windows上安装Git msysgit是Windows版的Git,从https:/...
    落魂灬阅读 12,665评论 4 54
  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,661评论 9 163
  • 创建本地仓库 使用git bash进入需要创建仓库的目录下: cd xxxx git init 创建本地仓库 此时...
    xiang205012阅读 322评论 0 0
  • 声明:这篇文章来源于廖雪峰老师的官方网站,我仅仅是作为学习之用 Git简介 Git是什么? Git是目前世界上最先...
    横渡阅读 3,957评论 3 27
  • 先要回顾最初加入写作群的目的,一是能将生活中的点滴,特别是有感动的地方清楚表达;二是能持之以恒,形成习惯。 现在看...
    田心月儿阅读 126评论 1 0