美文网首页Git
超简洁且实用的git教程

超简洁且实用的git教程

作者: 昵称总是已被使用 | 来源:发表于2016-06-28 13:24 被阅读0次

    最近朋友都问我有关git的问题,对于一个初学者包括我来说,刚学的时候是有点蒙的.所以写下这篇文章作为一个记录,如果你是老鸟,路过就行,当然也希望指出当中不对的地方,此教程简单,可以立即派上用场,不深入讲解高级功能,只讲一些基础的只是.

    关于git的优点,这里我就不说了,大家网上一搜一大堆.所以今天只讲解如何关联到github等代码托管平台.
    首先,你要有一个git客户端.
    安装完git之后会弹出一个界面,表示安装成功
    git config --global user.name 你的用户名 (给git配置用户名)
    git config --global user.email 你的邮箱(给git配置邮箱)

    //-----------一次完整的提交--------------------------
    第一步:
    创建版本库(仓库 repository):
    进入你想创建版本库的盘符例如D盘,在命令行中可以用 cd d:命令进入。
    mkdir mygitRepository(在D盘创建一个文件夹 mygitRepository)
    cd mygitRepository(进入该文件夹)
    pwd (用于显示当前目录)
    第二步:

    git init(把目录变成git可以管理的仓库)
    git add test.txt(添加test.txt文件到仓库中)
    git commit -m "第一次提交"(把该文件提交到仓库中。-m后面输入的是本次提交的说明)注:也可以同时添加多个文件比如:
    $ git add file1.txt
    $ git add file2.txt file3.txt
    $ git commit -m "add 3 files."
    //-----------一次完整的提交--------------------------
    //---------------版本的回退----------------------------------------

    场景:对test.txt文件进行修改,然而在提交的时候却发生了错误的提示

    git status(查看当前版本的状态)
    $ git status

    On branch master# 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: test.txt#

    no changes added to commit (use "git add"and/or"git commit -a")
    上面的提示说我们的test.txt文件已经发生了改变,也就是该文件被修改过了。
    git diff(看看具体被修改了什么内容)
    $ git diff test.txt
    diff --git a/test.txt b/test.txt
    index 46d49bf..9247db6 100644
    --- a/test.txt
    +++ b/test.txt
    @@ -1,2 +1,2 @@
    -Git is a version control system.
    +Git is a distributed version control system.
    Git is free software.
    知道了文件修改了以后我们可以继续提交
    git add 文件名
    git commit -m 描述

    $ git commit -m "add distributed"
    [master ea34578] add distributed
    1 file changed, 1 insertion(+), 1 deletion(-)
    再用 git status查看当前的状态
    $ git status

    On branch master

    nothing to commit (working directory clean)

    现在,我们已经学会了修改文件,然后把修改提交到Git版本库
    git log(显示从最近到最远的提交日志)

    git log --pretty=oneline(这样会显示的更美观)

    现在我们要回退到上一个版本
    git reset --hard HEAD^(回退到上一个版本)

    git reset --hard HEAD^^(回退到上上一个版本)
    如果有一百个版本呢?
    git reset --hard HEAD~100(回退到上一个版本)
    再用git log查看

    红色箭头表示已经回退到了上一个版本。cat test.txt.查看文档内容会发现回到了修改前
    黄色箭头表示当前有两个版本(回退前有三个的) 黄色箭头指的文字表示你提交时对该版本的描述。
    前面的一大窜黄色的编码就是commit id.我们可以通过这些id.来恢复最新版本,也就是该试验中第三个版本(之前已经被我们回退到了第二个版本了。)
    有时候版本太多,而且又忘记了commit id。这怎么办?
    git reflog(记录你每一次的命令)

    看到了吧。head 1开始就是我们一共提交的版本了。黄色就是commit id了
    第一行显示的是我们的回退历史。第二行就是我们现在要恢复的目标

    以上命令就是恢复(回退)到最新版本

    我们在git log --pretty=oneline一次看

    我们可以看到上面就是我们提交的版本了。已经回退到了最新的版本
    现在总结一下:
    HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
    穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
    要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

    //------------------------版本的回退----------------------
    //----------------撤销修改-------------------
    场景一:在文件中修改了内容,但并没有git add
    场景二:在文件中修改了内容,又使用了 git add
    注意:如果修改了内容,且又使用了 git add和git commit.这就表示文件已经被提交了.
    根据场景一查看版本状态

    我们对文件进行了修改(增加了"这是第三行").
    git checkout -- test.txt(撤销对文件的修改,该文件会恢复到修改前即丢弃工作区的修改)

    从上面可以看到使用了 git checkout.git帮我们恢复了第二次提交的状态(第三次修改并未提交)
    场景二:在文件中修改了内容,又使用了 git add(我在文件中增加了一行内容"我是第三行",并且对改行进行修改,把"三"改成"四"现在我用git add提交文件.)
    现在使用 git checkout.再回到文件中,我们会发现文件恢复到了"我是第三行"而不是"我是第四行".接下来可以使用git commit提交文件.
    /------------------撤销修改-------------------------------------
    /------------------删除文件-------------------------------------
    场景:往仓库里添加一个文件tt.txt
    1.提交(提交步骤不多说了.不懂的回到前面看)
    2.删除该文件
    git rm tt.txt(删除tt.txt文件)
    git commit -m "删除tt.txt文件"
    如何恢复?
    git reset --hard HEAD^(可以指定任意版本)
    注意:目前知道删除文件并恢复的方法就这个.其他的不知道.
    /------------------删除文件-------------------------------------
    好了,上面的操作基本都能解决日常所需.
    下面我们可以添加远程仓库了以coding平台为例.

    你可以在coding平台或github等平台创建你的项目,这里我以Android项目为例:
    在coding平台创建晚后是这样的:

    Paste_Image.png

    在你的电脑中可能你已经有了一个Android项目了,现在我们开始把我们的Android项目给推到我们的远程仓库上去.
    有两种方式,一种是https,一种是ssh,怎么看不懂?看下图:

    Paste_Image.png

    用https这种方式在提交代码的时候是需要用户名和邮箱的.

    Paste_Image.png

    ssh这种方式无需用户名和邮箱,但是要配置一个密钥.

    打开git 客户端
    键入 ssh-keygen然后回车

    Paste_Image.png

    自己的项目一般不用设置密码,不过这个根据个人喜好,看到上面的图后你可以按回车.
    接着键入cat ~/.ssh/id_rsa.pub,看到下面一大堆东西了吗?这个就是你的公钥,把它复制到coding平台里面,个个平台不一样,这里我就不演示了,自己找.

    Paste_Image.png

    好了,现在我们已经设置好了接下来回到原来位置,现在你已经有了一个Android项目了.找到你项目的位置打开,就像这样:

    Paste_Image.png

    在git里面进入你的项目所在的目录然后把你的项目作为仓库,进行初始化

    Paste_Image.png

    这时候你会发现你的项目里面多了这么一个文件

    Paste_Image.png

    现在你可以把你的项目和你的远程仓库关联起来了

    Paste_Image.png

    到了这里,你就已经关联成功了,现在是上传代码的时候了.
    查看一下状态:git status

    Paste_Image.png

    看到那一堆红色的东西没有,那就是你的项目文件.你需要做的是把这些文件提交到你的远程仓库里面去
    执行git add --all

    Paste_Image.png

    我们再看一下状态

    Paste_Image.png

    看到没有,已经全部变成绿色了,证明添加成功了,现在我们可以提交了
    执行git commit -m "first commit"

    Paste_Image.png

    白花花的一片,到了这里你已经添加成功,还没完,因为你会发现你的远程仓库并没有看到任何代码.
    执行git push -u origin master

    Paste_Image.png

    你会发现提交失败了.看提示他叫你先获取最新的数据,好吧
    执行git pull

    Paste_Image.png

    天啊,还错,这是怎么了?其实这是在说你没有关联成功,你可以看到上面提示你
    执行git branch --set-upstream-to=origin/<branch>master.
    注意:<branch>表示你的分支名字,这里写master

    Paste_Image.png

    看到上图说明已经关联成功了.
    再执行git pull

    Paste_Image.png

    看到了吧,已经在你的平台上pull下来一个文件了.别搞诉我你不知道是什么文件.
    现在我们执行git push -u origin master

    Paste_Image.png

    回到我们的coding平台,刷新一下

    Paste_Image.png

    看到了吧.这就已经提交上去了.以后修改项目只需执行上面基础操作即可同步了.
    就说到这里了.可能说的很乱,但是按着步骤走应该不会有问题.

    相关文章

      网友评论

        本文标题:超简洁且实用的git教程

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