美文网首页
小白需要了解的CLI、Git和GitHub

小白需要了解的CLI、Git和GitHub

作者: yiiina | 来源:发表于2019-01-06 16:50 被阅读20次

    CLI

    什么是CLI?

    还记得windows出来之前的dos操作系统吗?大概就是这个意思,直接用命令和计算机互动。和后来的桌面系统相比,这种直接以命令方式进行的互动方式,容错率低,门槛高,很难推广称为商业化的产品。

    然而小白要假装成hacker的话,还是要会用的,至少运行python是一定需要通过这个界面的。

    CLI常用命令

    常用的命令不会太多,多练练就熟悉了,想要查询其他命令,可以谷歌。

    cd 打开当前文件

    纯小白必学命令。运行程序必须先打开文件路径,在该文件下运行。

    路径比较长,可以直接输入文件路径:上级文件名/文件名

    jiangyinadeMacBook-Pro:~ Yina$ cd desktop/Py103
    jiangyinadeMacBook-Pro:Py103 Yina$ 
    

    还可以拆成2步操作:先打开上级文件名,再打开目标文件名

    jiangyinadeMacBook-Pro:~ Yina$ cd desktop
    jiangyinadeMacBook-Pro:desktop Yina$ cd Py103
    jiangyinadeMacBook-Pro:Py103 Yina$ 
    
    可以在帮助里输入:路径,路径就会跳出来,可以直接复制,黏贴在CLI里 image.png

    ls 列出当前文件夹中的文件

    jiangyinadeMacBook-Pro:Py103 Yina$ ls
    Chap0           Chap5           ISSUE_TEMPLATE.md
    Chap1           Chap6           README.md
    Chap2           Chap7           SUMMARY.md
    Chap3           Chap8           note
    Chap4           Chap9
    

    pwd 显示当前文件的路径

    jiangyinadeMacBook-Pro:Py103 Yina$ pwd
    /Users/Yina/desktop/Py103
    

    mkdir 新建文件

    jiangyinadeMacBook-Pro:Py103 Yina$ mkdir test.txt
    jiangyinadeMacBook-Pro:Py103 Yina$ ls
    Chap0           Chap5           ISSUE_TEMPLATE.md
    Chap1           Chap6           README.md
    Chap2           Chap7           SUMMARY.md
    Chap3           Chap8           note
    Chap4           Chap9           test.txt
    

    Github

    学python为什么要用github?因为这是一个编程和写代码工作行业的bbs,程序猿和程序媛的社交网站啊。
    没有错,但这并不是github的精髓。

    需求场景

    我,零基础小白,有一个python任务要完成,但是没有人可以指导我。任务比较忙,但是我的时间又比较紧,我放弃和 “一定要独立完成,证明自己可以” 的自尊心抵抗。

    然而,连看同学作业的过程都没有那么顺利。复制黏贴代码之后,发现运行不成功,于是我去微信群求助,然后发现,这次任务有好几个python文件,我没有全部复制黏贴下来,代码不完整,就无法运行。如果我要观摩好几个同学的作业,就得一个一个复制黏贴好麻烦,学习体验太差了有没有?

    于是我就想到了GitHub的folkclone的功能,此时此刻显得非常有必要,然后就折腾出来了。

    通过这个过程的纠结体验,切身体会到folkclone的需求场景了~

    通过github提高姿势水平

    预期目标:

    • 一键folk, 轻松把别人的好代码弄到自己这里来
    • 一键clone到本地,在本地写代码,保持专注,有心流状态的创作
    • 一键commit提交代码, 实现本地和线上仓库的同步

    步骤:

    1. 注册github
    2. 去别人页面,看到中意的仓库,点击页面的folk按钮

    folk
    功能:一键把别人的仓库,弄到自己这里的
    价值:大大提高模(jie)仿(jian) 的效借鉴参考牛人的效率

    1. 在自己的页面中,就可以看到这个folk过来的仓库了
    2. 下载github桌面端

    github桌面端不在appstore,要去官网下载,这是小白可能会遇到的问题(对的是我。)

    1. 在github的仓库下,点击clone按钮,在github桌面端,就会把这个仓库下载本地了
    2. 你可以在本地这个文件夹随便玩耍了,写代码,运行代码,改代码,提交commit,然后在你自己页面的仓库也同步发生变化

    练习: 你可以做这样一个尝试:如何通过2个动作把廖雪峰的python课程在本地运行学习

    看别人代码的正义性

    列出课程中同学和大妈的对话,是想说明,通过看代码来学习是正义的。

    @scrat-scratlzj

    我一直卡在ch4,又很抵触看别人的代码。

    @Zoom.ོQuiet

    '''...又很抵触看别人的代码''
    为什么?
    教练来, 也是出示别人的代码的哪?
    就和写作一样, 不破万书无以成自家风骨,
    别人的代码不看, 那这世界上, 没有什么软件是写的出来的...
    毕竟, IT 发展了快一个世纪了,
    已经没有什么是能直接凭空写出来的代码了,
    都在前人无数基础上嗯哼出来的,
    也正是因为这一生态,才令编程界的发展比其它各界要高速的多的多的多!

    @武黎-fatfox2016

    我就是一路抄出来。
    在这里要感谢@广州-Ubuntu-大猫-simpleowen @上海 - Win10 - Yifan - Yifan127。
    我是全文抄一遍的,在用print大法拆完凿碎。

    Git

    为什么要了解git?我不是来学python的吗?一开始我也不知道为什么。

    上网查了一些概念,知道git是一种版本管理的方法。什么?写程序还要专门学一个版本管理方法?

    github是基于这一版本管理方法,搭建的平台。哦,原来github不仅仅是码农界的bbs,程序猿和程序媛的社交网站。

    后来,在一次做任务中,深深体会到代码管理过程中的痛,软件代码管理的重要性,git解决的问题的价值,背后的思想。想到开学典礼上大妈说的那句:

    git 是一种世界观

    git:分布式的代码管理系统

    简而言之,之前的代码管理很麻烦,用git进行代码版本管理,炒鸡炒鸡厉害

    git:抽象的时空观

    工作区
    仓库,或者叫做版本库
    暂缓区
    远程仓库

    体验git

    在CLI操作git命令,本地进行仓库管理

    注册

    ~ Yina$ git config --global user.name"yina" 
    ~ Yina$ git config --global user.email"niceyina@gmail.com"
    

    在电脑本地建立git目录和仓库

    ~ Yina$ mkdir git-tutorialgit inti 
    

    git init 初始化仓库

    ~ Yina$ cd git-tutorial git-tutorial  
    Yina$ git init  
    Initialized empty Git repository in /Users/Yina/git-tutorial/.git/ #目录存储当前目录内容所需的仓库数据
    :git-tutorial Yina$
    

    git status 查看仓库状态

    显示git仓库的状态,常用。

    Yina$ git status 
    On branch master# 我们正处在master分支下面 
    Initial commit
    nothing to commit (create/copy files and use "git add" to track)# 没有可以提交的内容
    

    建立README.md文件,重新查看状态。

    jiangyinadeMacBook-Pro:git-tutorial Yina$ touch README.md
    jiangyinadeMacBook-Pro:git-tutorial Yina$ git status
    On branch master
    Your branch is up-to-date with 'origin/master'.
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
    
        README.md
    
    nothing added to commit but untracked files present (use "git add" to track)
    jiangyinadeMacBook-Pro:git-tutorial Yina$ 
    

    git add 向暂存区添加文件

    $ git add README.md
    $ git status
    On branch master
    Your branch is up-to-date with 'origin/master'.
    Changes to be committed:
      (use "git reset HEAD <file>..." to unstage)
    
        new file:   README.md
    

    git clone下载命令

    ~ Yina$ git clone https://github.com/yiiina/learn-python3.git 
    Cloning into 'learn-python3'... 
    remote: Counting objects: 286, done. 
    remote: Total 286 (delta 0), reused 0 (delta 0), pack-reused 286 
    Receiving objects: 100% (286/286), 82.97 KiB | 6.00 KiB/s, done.
    Resolving deltas: 100% (83/83), done.
    

    git remote add 添加远程仓库

    github创建仓库路径: git@github.com yiiina/git-tutorial.git

    git remote add把github上面的仓库设置成本地仓库的远程仓库。

    git remote add orgin git@github.com yiiina/git-tutorial.git
    

    git checkout签出

    git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

    jiangyinadeMacBook-Pro:flasky Yina$ git checkout 4a
    Note: checking out '4a'.
    
    You are in 'detached HEAD' state. You can look around, make experimental
    changes and commit them, and you can discard any commits you make in this
    state without impacting any branches by performing another checkout.
    
    If you want to create a new branch to retain commits you create, you may
    do so (now or later) by using -b with the checkout command again. Example:
    
      git checkout -b <new-branch-name>
    
    HEAD is now at 4bd4ac9... Chapter 4: Web forms with Flask-WTF (4a)
    

    git diff比较区别

    jiangyinadeMacBook-Pro:flasky Yina$ git diff 2a 2b
    diff --git a/hello.py b/hello.py
    index 062cbc2..2bf2aed 100644
    --- a/hello.py
    +++ b/hello.py
    @@ -7,5 +7,10 @@ def index():
         return '<h1>Hello World!</h1>'
     
     
    +@app.route('/user/<name>')
    +def user(name):
    +    return '<h1>Hello, %s!</h1>' % name
    +
    +
     if __name__ == '__main__':
         app.run(debug=True)
    

    参考资料

    廖雪峰的git教程
    阮一峰Git远程操作详解

    相关文章

      网友评论

          本文标题:小白需要了解的CLI、Git和GitHub

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