超简洁且实用的git教程

最近朋友都问我有关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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,911评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,014评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,129评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,283评论 1 264
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,159评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,161评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,565评论 3 382
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,251评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,531评论 1 292
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,619评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,383评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,255评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,624评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,916评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,199评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,553评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,756评论 2 335

推荐阅读更多精彩内容