Git?Git!Git.Git…

Git?

Git是一个免费、开源基于分布式架构的代码版本控制工具。

Git!

学习Git必须要了解的有三种状态:

  • 已提交(commited):表示数据安全的保存在本地数据中。

  • 已修改(modified):表示修改了文件,但没有保存到数据库中。

  • 已暂存(staged):表示对修改文件的当前版本做了标记。

学习Git必须要了解的三个工作区域:本地工作目录、暂存区、Git远程仓库。如下图所示:

三个工作区域

本地工作目录:对项目的某个版本独立提取出来到本地的目录。

暂存区:它是一个文件,保存了你在本地对项目做的修改的部分。

Git远程仓库:保存项目的元数据的地方,即因特网上面公共的主要仓库。

如上,基本的流程就是:

  • 1.在工作目录中修改文件

  • 2.把修改的文件提交到暂存区

  • 3.将暂存区的文件提交到本地仓库

  • 4.推送,永久性保存到Git远程仓库

Git基础

1.运行Git前的配置

配置账号

安装完Git后第一件事就是设置你的账户名称与邮件地址,因为每一个GIt的提交都会使用这些信息,并且它会写入你的每一次提交中,不可修改:

$ git config --global user.name "xxxx"
$ git config --global user.email xxxx@163.com

检查配置信息

如果要检查你的配置信息,可以使用git config --list列出所有Git当时能找到的配置。

$ git config --list
user.name=John Doe
user.email=johndoe@example.com
color.status=auto
color.branch=auto
color.interactive=auto
color.diff=auto
...

如果想要查某个key,可以使用git config <key>

$ git config user.name
xxxx

2.获取Git仓库

有两种获取方法:第一种是在现有目录下导入所有文件到Git仓库种;第二种是从一个服务器克隆一个现有的Git仓库。

在现有目录中初始化仓库

在现有的工程目录下:

$ git init

会发现有个隐藏文件.git目录,这个目录不要改动。

然后,把本地仓库与远程仓库关联:

$ git remote add origin git@github.com:demo.git
$ git push -u origin master

## origin是远程仓库的名字,这是Git默认的
## git@github.com:demo.git 是远程仓库的路径
## $ git push <远程主机名> <本地分支名>:<远程分支名>
## -u 指定origin为默认仓库,以后push就不用加了。

克隆现有的仓库

克隆仓库的命令格式为:git clone [url]

$ git clone https://github.com/demo.git

3.记录每次更新到仓库

检查当前文件状态

$ git status
On branch master
nothing to commit, working directory clean

## 没有修改要提交,默认分支名为master

现在,创建一个新的 README 文件,使用git status

$ echo 'My Project' > README
$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

    README

nothing added to commit but untracked files present (use "git add" to track)

## README 文件出现在 Untracked files 下面,表示在之前到快照中没有这些文件。

跟踪新文件

$ git add README
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   README

## Changes to be committed :表示文件是已暂存状态

如果是下面这样:

$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   README

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   HELLO.md

Changes to be committed 表示:工作目录做了修改并且放到了暂存区。

Changes not staged for commit 表示:工作目录做了修改,但没有放到暂存区。

此时需要git add HELLO.md,在查看状态

$ git add CONTRIBUTING.md
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   README
    modified:   CONTRIBUTING.md

状态概览

git status命令的输出太多了,如果git status -s命令,可看到一种更紧凑的输出。

$ git status -s
   M README
MM Rakefile
A  lib/git.rb
M  lib/simplegit.rb
?? LICENSE.txt
  • ?? :新添加的还没有添加到暂存区的文件;

  • A:新添加到暂存区中的文件;

  • 右边的 M :表示该文件被修改了但是还没放入暂存区;

  • 左边的 M :表示该文件被修改了并放入了暂存区;

例如,上面的状态显示: README 在工作区被修改后还没有将文件放入暂存区;lib/simplegit.rb 文件被修改了并放入了暂存区; 而 Rakefile 在工作区被修改并提交到暂存区后,又在工作区中被修改了,所以在暂存区和工作区都有该文件被修改了的记录。

提交更新

每次提交前,先用git status看下,是不是都暂存起来了 ,然后在用提交命令:

$ git commit -m "fitst commit"
[master 463dc4f] fitst commit
 2 files changed, 2 insertions(+)
 create mode 100644 README

它会告诉你当前是master分支提交的,本次提交的SHA-1校验是463dc4f,本次提交中,有2个文件修改过,2行添加过。

移除文件

  • 已经全部提交后,在工作目录删除文件后,运行git status就会看到做到哪些修改,可以在"Changes not staged for commit"部分看到:
$ rm PROJECTS.md
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        deleted:    PROJECTS.md

no changes added to commit (use "git add" and/or "git commit -a")
  • 如果想要删除暂存区的一些文件,使用git rm ${file}命令:
$ git rm PROJECTS.md
rm 'PROJECTS.md'
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    deleted:    PROJECTS.md

在使用上面的命令删除做过修改并放入暂存区的文件,需要使用-f参数。用于防止误删还没有添加到快照的数据,这样的数据不能被 Git 恢复。

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