适合小白外行的git与github最基础最浅显教程

更新时间:2023-05-05 18:43:31 阅读: 评论:0

适合⼩⽩外⾏的git与github最基础最浅显教程
⾸先声明,这是适合⼩⽩/外⾏/初学者/学⽣看的最基础最简单的git与github教程,已经能使⽤svn,git等⼯具的朋友请不要看这篇⽂章来浪费时间了。
想进⼀步学习git的,推荐去学习。
这是之前帮助⼏个外⾏的朋友写的最基础git教程,仅让他们理解基本概念,能够简单使⽤。当然教程写的也算⽤⼼,所以就重新整理⼀下放到博客上了。(其实主要是因为这段太忙了,没时间写新⽂章了,写⼀篇好的⽂章真的太耗费⼼⾎了。所以⼿头正好有⼀篇之前写的教程就整理⼀下发表吧)。期望能让⼩⽩/外⾏/初学者/学⽣能理解版本控制⼯具的基本概念与使⽤。
这篇教程共计⼀万⼋千字,花了我的很多时间精⼒,不过最后有⼈依旧没学会,不得不说,这真的是⼀个很悲伤的故事。
⽂章概要总结
必须记住的六条命令。
cd :⽤来切换⼯作⽬录,最常⽤的⼀个命令。简单来讲, cd A⽂件夹就是进⼊到 A⽂件夹⾥⾯的意思。
git status . :查看当前路径下的的状态。git下最最常⽤的⼀个命令。
git add . : 把⼯作区的所有变化,(就是你的所有改动),都添加到版本库/暂存区。
git commit -m "提交时说明信息" : 更进⼀步提交,并说明提交log。
git push : 把版本库的所有更新内容,都推送到远程服务器。(就是推代码/推上去)
git pull : 把代码从远程服务器拉取到本地。(俗称拉代码)
当我们修改了本地代码,向远程服务器推送时,我们的操作步骤如下:
1.  git add .
2.  git commit -m "提交时说明信息"
3.  git push
当我们想更新本地代码,就是把服务器上最新的代码拉取下来,只需要执⾏⼀个命令。
git pull
这三条命令建议记住。
git log :查看提交历史,与各次的提交说明。
git diff :⽐较⼯作区与暂存区的差异,就是⽐较看看你到底都做了什么修改。
git clone url地址: 将远程服务器上项⽬克隆到新创建的⽬录中(第⼀次拉项⽬时使⽤,后⾯的更新都⽤ git pull 了)。
其他问题
操作时双击 tab 键的⾃动提⽰/补全功能。
q 或者 :q 等命令代表退出(quit)。
ctrl+f , ctrl+b 快捷键在termial可以翻页,就是上⼀页,下⼀页
最重要的内容再强调⼀遍:
这是给⼩⽩/外⾏/初学者/学⽣看的最基础最简单的git与github教程,已经能使⽤svn,git等⼯具的朋友就不要看这篇⽂章来浪费时间了。
另外,这篇⽂章也不是讲述git安装的,或者github账户创建,key上传的。类似的⽂章⽹上遍地都是,⾃⼰去搜索吧。
⽂章正⽂
git 是⼀个分布式版本控制系统。简单来讲,如果有⼏个⼈同时开发维护⼀个项⽬的代码,那么我们就找个中央服务器,放置⼀份公共的代码,每个⼈在各⾃的电脑上去修改各⾃的代码,然后修改完,提交到中央服务器。这样⼤家拉代码时,就能更新到其他⼈修改的内容了。。
Notice:代码只是为了便于说明。版本控制系统,管理的是⽂件,所以任何⽂件都可以。图⽚啦,视频⽂件啦,⼆进制⽂件啦,没有什么不可以的。只是我们为了⾏⽂⽅便,直接说代码⽂件。
本教程会讲述 命令⾏ 操作。不过也有很多⼈ 使⽤图形化界⾯软件 ⽐如 source tree 或者 俗称的 ⼩乌龟 软件 来操作。但是基底的原理是⼀样的。 source tree  软件操作也只是命令⾏的 封装。并且图形化操作更加直观⼀些。熟悉了命令⾏,图形化软件操作⾃然也会。不会命令⾏,图形化软件操作也可以会,但是会理解的⽐较肤浅。更重要的是会了其中⼀个,学习另⼀个就⾮常容易了。
本篇⽂章之所以采⽤ 终端(termial)命令⾏的⽅式,除了我本⼈平时⼀直使⽤命令⾏操作之外,还有重要的⼀点,命令⾏具有更⼴泛的适⽤性。换句话说,你熟悉了 git 的命令⾏,那么利⽤命令⾏进⾏其
他操作,⽐如java ,python ,运⾏测试脚本等,对你来说很easy ,理解了最底层的原理,学习图形化软件也会很容易,毕竟图形化软件那么多,你永远学不完的,但是理解了底层的,就能以不变应万变。
⼯作区(Working Directory ), 版本库(Repository )/暂存区 ,(中央/远程)服务器.
服务器的概念已经清楚了。叫做 中央服务器/远程服务器都⾏。
⼯作区:就是你电脑的⼯作⽬录
版本库:⼯作区有⼀个隐藏的  .git ⽂件夹,这个是叫做 版本库(有些⽂章也叫 暂存区,不管叫什么,知道这个意思就好)。 .git  是隐藏⽂件夹。该⽂件内的内容很重要,因为git 的控制配置等信息,都在这个隐藏⽂件夹⾥。电脑如果设置不显⽰隐藏⽂件夹,那么就会看不到。
我电脑上的⼀个项⽬,可以看到什么是⼯作区,暂存区.
图⽚名称:⼯作区与暂存区.png
我修改过的代码,直接从 ⼯作区提交到服务器不就⾏了嘛,为什么还要这么⿇烦。 svn  等集中式版本管理系统就是这么做的,简单明了,但是如果你没⽹络时怎么办?所以有了 版本库,那么你可以把代码先从⼯作区提交到版本库,等待有⽹络了,可以再提交到服务器。理解⼏个概念
为什么存在⼀个 版本库?
.gitignore ⽂件是⼲啥的?
⼯作区的⽬录下⾯,总会存在很多乱七⼋糟的⽂件,⽐如你本地的配置,编译⽣成的中间⽂件等,这些⽂件你不想(或不能)提交到 服务器。那怎么办呢。就把这些⽂件的规则写到  .gitignore ⽂件中,这样git 就会 ignore(忽略)这些⽂件,git 就会像没看到这些⽂件⼀样。
⽐如我的 .gitignore ⽂件有些内容如下:
这⼏句话的意思是 所有apk 后缀的⽂件,class 后缀的⽂件都忽略, bin/ 和 gen/ ⽬录下的⽂件也忽略。说的通俗⼀点,就是你git 别管这些⽂件了,这些和git 没屁关系。我不管怎么倒腾这些⽂件,都和git 没关系。另外,  .gitignore  ⽂件中, # 号开头的⾏ 代表注释,就像 编程⽂件中的 // 开头的⾏⼀样。
怎么创建⼀个被git 控制的项⽬,后⾯再讲,这⾥先讲述⼏个基本命令。
在此之前,先熟悉⼀个  cd 命令。
cd 命令⽤来切换⼯作⽬录,linux,mac 环境下最常⽤的⼀个命令。 简单来讲, cd A ⽂件夹 就是进⼊到A ⽂件夹⾥⾯的意思。⽐如我要进⼊d 盘我的代码⽂件夹, 输⼊命令  cd /d/code/github_blog/ 然后回车。
假设你在⼀个项⽬中修改了某些⽂件。
你想看看当前⽬录下是什么状态,命令  git status . 。
.  : ⼀个点代表当前⽬录, .. :两个点 代表上级⽬录。 (这和git ⽆关,这是 计算机基本的常识)。那么请思考, cd .. ,这个命令是啥意思?但是你敲命令的时候,记不清楚了,或者 打错了了。看看termial 会有什么反应?
$ git satds
git: 'satds' is not a git command. See 'git --help'.
Did you mean this?
status
有很多的概念和操作,都和什么git ⽆关,都是计算机领域中的基本常识,或者 所有(⾄少绝⼤部分)软件都遵循的操作常识,git ⾃然也同样遵循这样概念和操作,这些内容我会⽤斜体的 计算机常识 来标注。
$ git satds ⼀⾏,$ 代表的是命令⾏的开始,后⾯的内容代表的就是你的输⼊内容。⽽ 它的下⼀⾏就是系统反馈/回应 你的内容。(或者说系统输出)。(计算机常识)
你看到什么?git 会问你, 它不认识这个命令啊,你是不是敲错了,你可以⽤ git --help 寻求帮助哦。另外你是不是想打  status  这个词呢? 所以git 的命令根本 不⽤背,有个简单的印象就好。
甚⾄,你在敲打命令的时候,根本不⽤敲完,输⼊头⼏个字符,然后直接 敲击  tab 键,看看会发⽣什么?
$ git sta //敲击 tab
stage    stash    status 系统直接提⽰你了, sta 开头的命令有三个,就看你想⽤哪个了,这是为了你记忆。⽽你敲击  git stat 之后,再敲击  tab ,再看看 会发⽣什么。因为此时  stat 开头的命令只剩下⼀个了 status ,所以你也只能打这个命令了。所以git ⼏个简单的命令。
⾃动帮你补全了。。
点击 tab 键的⾃动提⽰/补全功能很有⽤,绝⼤部分命令⾏操作都有这个快捷键,毕竟那么长的命令,⽂件路径等,记忆很难,打字也很累。不过有些termial情况,是点击⼀次 tab 键,⽽有些则是双击 tab 键,反正你可以总是双击 tab 键,这总不会错。(计算机常识)
费了好⼤劲,我们终于输⼊了正确的字符。看看命令⾏会输出什么内容。
图⽚名称:git_status.png
我在测试前,做了以下⼏件事情:
新建⽴⼀个  ⽂件。
CachedThreadPool.java ⽂件中修改了⼀些内容。
删除了 DirectThread ⽂件。
然后你看看 git 输出的内容。我们逐⾏进⾏分析。
On branch master
Your branch is up-to-date with 'origin/master'.
第⼀⾏不⽤管,这是分⽀(branch)的概念,基础教程不涉及分⽀。(想进⼀步学习了去)
第⼆⾏:你的分⽀与远程分⽀已经同步了。(就是远程服务器并不⽐你的代码新)
Changes not staged for commit:
(u "git add/rm <file>..." to update what will be committed)
(u "git checkout -- <file>..." to discard changes in working directory)
modified:  java/src/thread_runnable/CachedThreadPool.java
deleted:    java/src/thread_runnable/DirectThread.java
翻译⼀下:
改变还没有到提交阶段呢。
(使⽤  `git add <file>...`  命令来更新你的提交。)
(使⽤ `git checkout -- <file>...`命令来放弃你⼯作区的修改 )
然后下⾯列出了你修改的具体⽂件。
`modified`代表修改,`deleted`代表删除。(还有add表⽰增加,像svn中就直接简写M,D,A了,如果如果看到了这些简写了,要明⽩什么意思)
提⽰内容已经⾮常明明⽩⽩的告诉你了,你的修改内容,以及你下⼀步可以怎么做了。
你可以使⽤ git add 命令来提交;也可以使⽤ git checkout 来放弃修改。(就是把⼯作区重新变⼲净,把你修改的东西都恢复了,就像 ctrl+z ⼀样)。
然后还有⼏⾏:
Untracked files:
(u "git add <file>..." to include in what will be committed)
<
no changes added to commit (u "git add" and/or "git commit -a")
翻译如下:
未跟踪的⽂件
(使⽤ `git add <file>...` 命令会包括下⾯这些提交)
你添加的⽂件名
现在还没⾛到commit地步呢。(可以使⽤ `git add` 或者  `git commit -a`)
⾸先 为什么是 Untracked files ,因为我刚才就说了,我的这个⽂件是新添加的,git之前没见过这个⽂件(git刚刚第⼀次见到这个⽂件,所以感觉很⾯⽣,不认识啊)。所以它说这个⽂件未跟踪,⽽上⾯那两个⽂件 CachedThreadPool.java 和 DirectThread.java 这两个⽂件,因为之前早就添
加了,所以git系统会认识这两个⽂件。
那么现在⼯作区就是这个样⼦了。
我想看看我具体到某个⽂件进⾏了什么修改。该怎么操作呢。
git diff 操作。
这个内容显⽰的有些乱七⼋糟。
⾸先你看到它列出了第⼀个⽂件
diff --git a/java/src/thread_runnable/CachedThreadPool.java b/java/src/thread_runnable/CachedThreadPool.java
前⾯⼀个a,后⾯⼀个b,其实就是代表你修改前后的⽂件。(不⽤关⼼这些)。
然后下⾯,是具体内容,
所有 + 开头的,代表的都是你添加的内容,
所有 - 开头的,代表的都是你删除的内容。
那些既没有"+"也没有"-"开头的⾏,就是和你修改区域的相关上下⽂,有了这些上下⽂,可以更好的帮你回想起来,你到底都修改了什么了。
并且它们显⽰的颜⾊也不同。
然后它列出了你修改的的第⼆个⽂件。

本文发布于:2023-05-05 18:43:31,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/858228.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:命令   提交   服务器
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图