美文网首页
Git:Git Handbook

Git:Git Handbook

作者: onestark | 来源:发表于2016-08-06 13:19 被阅读145次

    1、基本概念

    在 Git 的世界里,有三个地方:工作目录暂存区Git仓库

    • 工作目录(working directory):你看得见的、就是平时使用的文件夹/目录
    • 暂存区(staging area):保存了下次将提交的文件列表信息。
    • Git仓库(Git directory):保存版本数据的地方。这是最重要的。

    状态

    对应地,工作目录中的文件就有三种状态:已修改、已暂存、已提交

    • 已修改(modified):工作目录下的文件每次修改后,就处于已修改状态;
    • 和已暂存(staged):把修改后文件提交到暂存区后的状态,反之称 unstaged;
    • 已提交(committed):把修改提交到版本数据库后的状态。

    另外要注意的一点是,以上三种状态均建立在文件已被 Git 追踪的前提下。在工作目录新建一个文件,此时文件的状态为未追踪(untracked)。
    删除被追踪的文件后,可以查看到的状态是已删除(deleted)

    流程

    基本的 Git 工作流程如下:

    1. 在工作目录中修改文件;
    2. 暂存文件,将文件的快照放入暂存区域;
    3. 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。

    2、创建

    创建仓库

    选择一个合适的地方,创建一个空目录,或者使用命令:

    $ mkdir learngit
    $ cd learngit
    $ pwd
    

    pwd 命令只是用于显示当前目录。

    初始化仓库

    把这个目录变成 Git 可以管理的仓库:

    $ git init
    

    可以发现当前目录下多了一个 .git 的目录,这个目录是 Git 来跟踪管理版本库的,不要手动修改/删除这个目录里面的文件。

    ls -a 命令就可以列出包括隐藏文件在内的文件。

    3、暂存

    添加修改到暂存区

    暂存区就好像一个码头,先把货物运到这里,再往目的地(版本库)运输。
    现在编写一个 README.md 文件,放到 learngit 目录/子目录下,或者使用命令新建:

    $ touch README.md
    

    用编辑器打开添加点内容,或在终端中编辑:

    $nano README.md
    

    把修改的文件暂存,用于提交:

    $ git add README.md
    

    可以一次性添加所有同类型文件的修改:

    git add '*.md'
    

    也可以一次性添加所有文件的修改:

    $ git add .
    

    4、提交

    向版本库提交修改

    每次向版本库提交修改最好添加提交信息,first commit 就是一次提交的信息。

    $ git commit -m "first commit"
    

    5、查看

    查看文件状态

    显示工作目录下文件所处状态,这时经常用到的命令:

    $ git status
    

    查看文件内容

    显示工作区文件与上次提交版本的内容有什么不同。

    $ git diff README.md
    

    查看提交记录

    显示从最近到最远的提交日志,可查看到每次提交的 40 位 commit id(版本号):

    $ git log
    

    查看命令记录

    Git 提供了一个命令用来查看你每一次命令的记录:

    $ git reflog
    

    重返未来:假如你回退到某个版本,这个版本之后的修改都会被抛弃(其实这很有道理),再想恢复到这个版本之后的版本,这个命令可以查看到所需的 未来 版本号。

    6、撤销、回退

    撤消文件修改的暂存。可以把添加到暂存区的修改撤销掉(unstage),不改变工作区。

    $ git reset HEAD <file>
    

    撤消对工作目录文件的修改。此命令会使用暂存区中的内容替换掉你的工作目录中的文件。(即撤销未提交的修改)

    $ git checkout -- <file>
    

    丢弃在本地的所有改动与提交

    $ git reset --hard HEAD
    

    回退到某个版本,并抛弃该版本之后的修改

    $ git reset --hard <commit id>
    

    commit id 可以换成:

    • HEAD^ 上一个版本,
    • HEAD^^ 上上一个版本
    • HEAD~100 上100个版本

    注意:Git 使用 HEAD 指向当前版本。

    7、远程仓库

    Git 在本地就已经可以实现版本管理的功能,远程仓库有别于存储在你硬盘里的版本库,它存储在网络服务器中,它的发明是为了 Git 的协作和防止本地数据的丢失。

    远端服务器上的仓库,克隆一份来本地:

    $ git clone username@host:/path/to/repository
    

    其实 clone 命令也可以拷贝本地的仓库,但最常用的还是从远程服务器拷贝。

    推送

    把本地的修改提交到远程仓库的操作叫做推送(push)。要推送的前提是,必须给当前工作目录指定远程仓库的地址。
    使用命令连接一个远程仓库:

    $ git remote add origin <server>
    

    这里的 origin 可以是其它你想到的名字,它只不过是用来标识远程仓库的别名而已。但是最常用这个一看就了解的名字。使用 $ git remote 命令可以列出已连接的远程仓库的别名,加 -v 参数可以查看具体地址:$ git remote -v

    推送命令:

    $ git push -u origin master
    

    把本地分支 master 推送到名为 origin 的远程仓库的。可以把 master 换成你想要推送的任何分支。
    注:-u 参数为第一次提交使用,作用是把本地的 master 分支和远程的 master 分支关联起来,简化命令,之后提交不需要这个参数。

    更多关于远程仓库

    相关文章

      网友评论

          本文标题:Git:Git Handbook

          本文链接:https://www.haomeiwen.com/subject/ukuksttx.html