Git入门这件小事

一、Git的安装:

1、linux下:sudo apt-get install git 这条命令即可;
2、windows下:官网下载相关镜像文件安装即可。安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!
然后输入以下命令:

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

二、创建版本库:

1. 首先,选择一个合适的地方,创建一个空目录(空文件夹):
2. 通过git init命令把这个目录变成Git可以管理的仓库:
Paste_Image.png

注意:

  • 使用git init命令后,会在learngit文件夹中创建一个 .git 文件夹,这个目录是Git来跟踪管理版本库的
  • 如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见。
3. 向版本库里添加一个文件,如readme.txt文本:

先创建一个文本文件readme.txt,在里面输入一些内容(如下面两句话),然后把这个文件放到learngit目录下

Git is a version control system.
Git is free software.

然后使用 git add readme.txtgit commit readme.txt命令.

//用命令git add告诉Git,把文件添加到仓库(也就是暂存区)
git add readme.txt
//用命令git commit告诉Git,把文件提交到仓库:
git commit readme.txt
Paste_Image.png

注:

  • -m后面输入的是本次提交的说明,最好不要省略;
  • commit可以一次提交多个文件
4. 查看当前库的状态:

首先,我们先修改readme.txt文件中的内容,改为:

Git is a distributed version control system.
Git is free software.

然后使用git status命令:

$ git status
Paste_Image.png

然后用git diff命令查看修改了什么内容

$ git diff readme.txt
Paste_Image.png
  • 知道了被修改的内容之后,我们就可以放心的提交了。先git add添加到暂存区,然后git commit提交;
  • commit之前,我们先git diff一下,然后再commit,最后再git status查看库的状态。
Paste_Image.png
5. 版本回退:

现在,你已经学会了修改文件,然后把修改提交到Git版本库,现在,再练习一次,修改readme.txt文件如下:

Git is a distributed version control system.
Git is free software distributed under the GPL.

然后尝试提交。

Paste_Image.png

此时,我们回顾一下readme.txt文件一共有几个版本被提交到Git仓库里了:
版本1:wrote a readme file

Git is a version control system.
Git is free software.

版本2:add distributed

Git is a distributed version control system.
Git is free software.

版本3:append GPL

Git is a distributed version control system.
Git is free software distributed under the GPL.

此时,git log命令显示从最近到最远的提交日志

$ git log
Paste_Image.png

注: 跟在commit后面的一大串数字字母,是版本号

此时,我们把版本回退到上一个版本,也就是add distributed版本。

//这两条命令等价,写其中一条即可
$ git reset --hard HEAD^
$ git reset HEAD

注:在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

Paste_Image.png

最新的那个版本append GPL已经看不到了,如果想要再次返回这个版本怎么办?
找到那个append GPLcommit idb1a356679,然后输入以下命令:

$ git reset --hard b1a356679
Paste_Image.png
6. 工作区和暂存区:

工作区(Working Directory)

  • 就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工作区;

版本库(Repository)

  • learngit文件夹有一个隐藏目录.git,是Git的版本库;
  • Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD
Paste_Image.png

说明:

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

因为我们创建的Git版本库是,Git自动为我们创建了唯一一个master分支,所以,现在git commit就是往master分支上提交更改。(因为以后还有可能往分支上提交啊!)

7. 管理修改:

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

$ git diff HEAD -- readme.txt
8. 撤销修改:

git checkout -- file命令可以丢弃工作区的修改:

$ git checkout -- readme.txt

有两种情况:

  • 一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
  • 一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次git commit或git add时的状态。

9. 删除文件:

一般情况下,你通常直接在文件管理器中把没用的文件删了,或者用rm命令删了:

$ rm test.txt

这个时候,Git知道你删除了文件,因此,工作区和版本库就不一致了,git status命令会立刻告诉你哪些文件被删除了。

此时你有两个选择:

  • 一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit
$ git rm test.txt
$ git commit -m "remove test.txt"
  • 误删,因为版本库里还有,可以很轻松的把误删的文件恢复到最新版:
$ git checkout -- test.txt

三、远程仓库:

  • 第一步:创建SSH Key。
    C:\Users\ZL用户根目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建新的SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"

然后一路按回车键即可。此时我们可以在用户主目录下找到.ssh目录,里面有id_rsaid_rsa.pub两个文件:
id_rsa是私钥,不能泄露出去;
id_rsa.pub是公钥,可以放心地告诉任何人。

  • 第二步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:
    然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:
Paste_Image.png
1.添加远程仓库:

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

Paste_Image.png

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

Paste_Image.png

目前,在GitHub上的这个learngit仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。

现在,我们根据GitHub的提示,在本地的learngit仓库下运行命令:

git remote add origin git@github.com:ZL6666/learngit.git
Paste_Image.png

请千万注意,把上面的ZL6666替换成你自己的GitHub账户名

添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。

下一步,就可以把本地库的所有内容推送到远程库上:

$ git push -u origin master

把当前分支master推送到远程。由于之前远程库是空的,第一次推送master分支时,加上了-u参数。git不但把本地的master分支内容推送到远程新的master分支,还会把本地master分支和远程的master分支关联起来,以后推送或者拉取就可以简化命令。

Paste_Image.png

从现在起,只要本地作了提交,就可以通过命令:

$ git push origin master
2. 仓库克隆:

首先在GitHub上新建一个仓库gitskills,然后使用以下命令即可:

$ git clone git@github.com:ZL6666/gitskills.git

这条命令执行之后,会在用户主目录下新建一个gitskills文件夹,此文件夹即为版本库。

Paste_Image.png

四、分支管理:

1. 创建和合并分支:

首先,我们创建dev分支,然后切换到dev分支:

$ git checkout -b dev

相当于下面两条命令:

$ git branch dev
$ git checkout dev
Paste_Image.png

然后用git branch查看当前分支:

$ git branch
Paste_Image.png

然后,我们就可以在dev分支上正常提交,比如对readme.txt做个修改,加上一行:

Creating a new branch is quick

然后提交:

$ git add readme.txt 
$ git commit -m "branch test"

现在,dev分支的工作完成,我们就可以切换回master分支:

$ git checkout master

切换回master分支后,再查看一个readme.txt文件,刚才添加的内容不见了!因为那个提交是在dev分支上,而master分支此刻的提交点并没有变:

Paste_Image.png

现在,我们把dev分支的工作成果合并到master分支上:

$ git merge dev

合并完成后,就可以放心地删除dev分支了:

$ git branch -d dev
Paste_Image.png

删除后,查看branch,就只剩下master分支了:

$ git branch
Paste_Image.png

参考

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

推荐阅读更多精彩内容