指令

1.1 获取仓库
1.2 文件更新到仓库
1.3 获取提交历史
1.4 撤销批改
1.5 近程仓库
1.6 标签

1.1 获取仓库

1.1.1 本人创立仓库

初始化后,当前目录中会呈现一个.git的目录,所有 Git 须要的数据和资源都寄存在这个目录中。

    $ git init

和 Git 打个招呼

    # 轻易创立一个文件    # 将文件增加到仓库中    $ git add .    # 提交到仓库中    $ git commit -m "提交代码的信息形容"

1.1.2 已有仓库

    $ git clone <url>

1.2 文件更新到仓库

1.2.1 已跟踪

已跟踪的文件时原本就被纳入版本控制治理的文件,在上次的快照中有他们的记录,在工作一段时间后,他们的状态可能时未更新,已批改或者放入暂存区。

1.2.2 未跟踪

他们既没有上次更新时的快照,也不在以后的暂存区域,首次克隆的仓库,工作目录下的所有文件都是属于已跟踪的文件,并且状态是未修改的状态。

1.2.3 查看以后文件的状态

要确定文件在什么状态,能够通过 git status 命令查看。上面这个状态阐明工作目录中没有任何须要提交的。信息中还阐明了你以后所在的分支是 master

        $ git status            # On branch master            nothing to commit (working directory clean)

1.2.4 新建文件

在状态报告中能够看到新建的README文件呈现在“Untracked files”上面。未跟踪的文件意味着Git在之前的快照(提交)中没有这些文件;Git 不会主动将之纳入跟踪范畴,除非你明明白白地通知它“我须要跟踪该文件”,因此不必放心把临时文件什么的也纳入版本治理。不过当初的例子中,咱们的确想要跟踪治理 README 这个文件。

        $ vim 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)

1.2.5 跟踪新文件

    # 应用命令 `git add` 跟踪文件        $ git add README    # 此时再运行 git status 命令,会看到 README 文件已被跟踪,并处于暂存状态,只有在 “Changes to be committed” 这行上面的,就阐明是已暂存状态。        $ git status            # On branch master            # Changes to be committed:            # (use "git reset HEAD <file>..." to unstage)            #            # new file: README            #

1.2.6 暂存已批改文件

当初咱们批改下之前已跟踪过的文件 benchmarks.rb,而后再次运行 status 命令,会看到这样的状态报告:

   $ 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)    #    # modified: benchmarks.rb    #

文件 benchmarks.rb 呈现在 “Changes not staged for commit” 这行上面,阐明已跟踪文件的内容产生了变动,但还没有放到暂存区。要暂存这次更新,须要运行 git add 命令(这是个多功能命令,依据指标文件的状态不同,此命令的成果也不同:能够用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有抵触的文件标记为已解决状态等)。当初让咱们运行 git add 将 benchmarks.rb 放到暂存区,而后再看看 git status 的输入:

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

当初两个文件都已暂存,下次提交时就会一并记录到仓库。假如此时,你想要在 benchmarks.rb 里再加条正文,从新编辑存盘后,筹备好提交。不过且慢,再运行 git status 看看:

    $ vim benchmarks.rb    $ git status        # On branch master        # Changes to be committed:        # (use "git reset HEAD <file>..." to unstage)        #        # new file: README        # modified: benchmarks.rb        #        # Changes not staged for commit:        # (use "git add <file>..." to update what will be committed)        #        # modified: benchmarks.rb        #

实际上 Git 只不过暂存了你运行 git add 命令时的版本,如果当初提交,那么提交的是增加正文前的版本,而非当前工作目录中的版本。所以,运行了 git add 之后又作了订正的文件,须要从新运行 git add 把最新版本从新暂存起来。

1.2.7 疏忽某些文件

.gitignore 文件中过滤掉不须要治理的文件。

# 此为正文 – 将被 Git 疏忽    # 疏忽所有 .a 结尾的文件    *.a    # 但 lib.a 除外    !lib.a    # 仅仅疏忽我的项目根目录下的 TODO 文件,不包含 subdir/TODO    /TODO    # 疏忽 build/ 目录下的所有文件    build/    # 会疏忽 doc/notes.txt 但不包含 doc/server/arch.txt    doc/*.txt

1.2.8 提交更新

提交之前确认所有的文件都曾经进入暂存区,再执行 git commit, 这种形式会唤醒自带的编辑器。也能够应用 git commit -m "提交的性能形容"

1.2.9 跳过应用暂存区域

只管应用暂存区域的形式能够精心筹备要提交的细节,但有时候这么做略显繁琐。Git 提供了一个跳过应用暂存区域的形式,只有在提交的时候,给 git commit 加上 -a 选项,Git 就会主动把所有曾经跟踪过的文件暂存起来一并提交。

1.3 获取提交历史

应用 git log 查看历史,这里不在费用篇章对这个进行形容

1.4 撤销批改

1.4.1 批改最初一次的提交

应用 git commit -amend 能够将提交实现当前发现漏掉了几个文件没有增加,或者提交信息写错的时候。此命令将以后的暂存区域快照提交,如果提交完后没有任何改变,间接运行此命令的话,相当于有机会从新编辑提交阐明。启动文本编辑器之后,会看到上次提交时的阐明,编辑他确认没问题后保留退出,就会应用新提交的阐明并且笼罩掉方才失误的提交。

1.4.2 勾销曾经暂存的文件

先查看状态,git status 给出了后果,应用 git reset HEAD <文件名>

    $ git status        # On branch master        # Changes to be committed:        # (use "git reset HEAD <file>..." to unstage)        #        # modified: README.txt        # modified: benchmarks.rb        #

1.4.3 勾销对文件的批改

应用 git checkout -- <文件名> 能够撤销对文件的批改

1.5 近程仓库

1.5.1 查看以后的近程库

    $ git remote        origin

1.5.2 显示对应库的克隆地址

    $ git remote -v        origin  https://github.com/tsing-dong/tsing.git (fetch)        origin  https://github.com/tsing-dong/tsing.git (push)

1.5.3 增加近程仓库

    $ git remote add <url>

1.5.4 推送数据到近程仓库

    $ git push origin master

1.5.5 查看近程仓库的信息

    $ git remote show origin        * remote origin        Fetch URL: https://github.com/tsing-dong/tsing.git        Push  URL: https://github.com/tsing-dong/tsing.git        HEAD branch: master        Remote branch:        master tracked        Local branch configured for 'git pull':        master merges with remote master        Local ref configured for 'git push':        master pushes to master (up to date)

1.6 标签

1.6.1 列出已有的tag

    git tag

1.6.2 新建tag

todo: 这个在业务中还没理论的利用,等利用了会将这个补充残缺