Git入门——安装与基本命令

 

一、Git 的安装

下载地址:https://git-scm.com/

一直点击下一步

二、Git 的基本命令

1、准备工作

  • 访问 GitHub:https://github.com
  • 注册或登录您的账号
  • 点击右上角的「New Repository」来新建远程仓库

     

  • 进入仓库设置页面填写信息:其中 ① 是你的仓库名,这个仓库名同样会被 GitHub 设置为你的仓 库的根目录的名称;② 是为 .gitignore 设置项目类型, .gitignore 是 Git 仓库中的一个特 殊的文本文件,它里面记录了你不希望提交到仓库的目录和文件的名称或类型,例如你的 /build 目录;把 ① 和 ② 填好之后,就可以点 ③ 来完成远程仓库的创建了

创建完的远程仓库大概长这样:

点击右边的「Clone or download」,然后把仓库的 clone 地址复制到剪贴板:

2、把远程仓库取到本地

鼠标右键,打开 Git Bash Here

进入希望放置项目的目录中,输入下面命令:

git clone 复制的地址

Git 就会把你的远程仓库 clone 到本地。在这个过程中,你可能会需要输入你的 GitHub 用户名和密码。

输入正确的用户名和密码以后,你会看到你的当前目录下多了一个新的子目录,它的名字和刚才新建 的 GitHub 仓库名一致:

进入这个目录,你会发现这里除了你刚才添加的 LICENSE 和 .gitignore 文件外,还有一个叫做 .git 的隐藏目录。

这个 .git 目录,就是你的本地仓库(Local Repository),你的所有版本信息都会存在这里。

而 .git 所在的这个根目录,称为 Git 的工作目录(Working Directory),它保存了你当前从仓库中签 出(checkout)的内容。现在你在项目的目录下输入:

git log

在这里你只能看到一个提交,这个提交是 GitHub 帮你做的,它的内容是创建你的初始 .gitignoreLICENSE 这两个文件。

图中第一行中的 commit 右边的那一大串字符(7046e84fd676ff98bba71e14f561d54d6b028f90),是 这个 commit 的 SHA-1 校验和(如果不知道什么是 SHA-1,你可以暂时把它简单理解为这个 commit 的 ID);后面括号里的内容(HEAD -> master ...)稍后再讲;第一行的下面,依次是这个 commit 的作者、提交日期和提交信息,其中提交信息记录了这个提交做了什么,是提交者填写的 (当然,这条提交信息是 GitHub 帮你写的)。

简单看一下这些信息,然后按 q 键退出吧,往下继续。

3、自己创建本地仓库

首先创建项目的目录,进入目录执行下面命令即可创建本地仓库。

git init

4、提交代码

把远程仓库取到本地之后,你就可以开始尝试提交代码了。不过为了方便,你不必真的写代码,你可以在工作目录下创建一个文本文件,例如 test.txt

Git 的提交是用的 commit 指令。不过……你现在还不能直接提交。你现在输入:

git status

status 是用来查看工作目录当前状态的指令:

这段文字表述了很多项信息:

  1. 你在 master branch
  2. 当前 branch 没有落后于 origin/master
  3. 你有 untracked files (未追踪的文件),文件名是 shopping list.txt 。
  4. 你可以使用 git add 来开始追踪文件。

 

其中前两条你可以暂时先不理,branch 的东西我在后面会讲。

关于后两条,简单说一下: 从上面的信息可以看出,test.txt 这个文件目前属于 "untracked" 状态,它的意思是 Git 仓库对它没有进行任何记录,你在提交的时候不会把它提交上去,查看提交历史也不会看到它。

总之,对于 Git 仓库来说,它是不存在的。

上面的文件还是处于工作区,git add 文件名 后才进入 暂存区

而你现在想提交这个文件,所以首先,你需要用 add 指令来让 Git 开始跟踪它:

git add test.txt

输入这行代码,Git Bash Here 不会给你反馈信息。但这时你再执行一次 git status ,你会发现显示内容变了:

可以看到,test.txt 的文字变成了绿色,它的前面多了「new file:」的标记,而它的描述也从 "Untracked files" 变成了 "Changes to be commited"。这些都说明一点: shopping list.txt 这个文件的状态从 "untracked"(未跟踪)变成了 "staged"(已暂存),意思是这个文件 中被改动的部分(也就是这整个文件啦)被记录进了 staging area(暂存区)

解释一下 "stage" 这个词,这个词对我们中国人可能有一些理解难度。按我们英语课本上的内 容来看,stage 是一个名词,它的意思是「舞台」。可是不论从词性还是词义,「舞台」都不 太能解释 "stage" 或 "staging area" 的意思。实质上,Git 中的 stage 取自这个词的另一个意 思:组织和准备某个事件。而 "staging area" 的意思也并不是「舞台区域」,而是「用来汇集 物品或材料以备使用的区域」的意思。 所以 stage 这个词在 Git 里,是「集中收集改动以待提交」的意思;而 staging area ,就是 一个「汇集待提交的文件改动的地方」。简称「暂存」和「暂存区」。至于 staged 表示「已 暂存」,就不用再解释了吧? git add shopping\ list.txt shell Git 原理详解及实用指南。

所谓的 staging area,是 .git 目录下一个叫做 index 的文件(嗯,它的文件名并不叫 stage )。你通过 add 指令暂存的内容,都会被写进这个文件里。 现在文件已经放进了暂存区,就可以提交了。提交的方式是用 commit 指令:

git commit

然后你会进入这样一个界面,这个界面是用来填写提交信息(commit message)的。根据操作系统以及设置的不同,这个界面的编辑器可能是 nano 或者 vi 或者别的什么,总之如果你不会用它,那么 建议你尽快上网搜搜它的用法,因为 Git 的操作会经常用到它。在这里我只简单说一下它的最基本用法:

  • 在初始状态下,你是在命令模式,不能编辑这个文件,你需要按一下 "i"(小写)来切换到插入模 式,然后就可以输入你的提交信息了:

      

在输入完成后别按回车,而是要按 ESC 键返回到命令模式,然后连续输入两个大写的 "Z"(用 Shift 键或 Capslock 键都可以),就保存并退出了。

 

这样,一次提交就完成了。如上图这样,从界面中你可以看到这次提交的简单信息。这时如果你再执 行一次刚才执行过的 git log (还记得这个指令是什么意思吗?它会列出你的提交历史):

可以看到,你的这条提交被列在了最上面,现在你的提交历史中有两条记录了。这说明,你已经成功 做了一次提交到本地仓库,它已经被保存在了 .git 这个目录里的某个地方了。

5、再次提交

修改 test.txt 里面的部分内容:

赶紧把它提交上去。提交之前先看看文件状态是个好习惯:

Git 原理详解及实用指南 可以看到, test.txt 又变红了,不过这次它左边的文字不是 "New file:" 而是 "modified:",而且上方显示它的状态也不是 "Untracked" 而是 "not staged for commit",意思很明 确:Git 已经认识这个文件了,它不是个新文件,但它有了一些改动。所以虽然状态的显示有点不同, 但处理方式还是一样的:

git add test.txt

这时再 status 一下,就会看到 text.txt 已经 staged ("to be commited") 了:

git status

commit 前,项目在暂存区,commit 后,项目在本地仓库。

好,最后一步, commit

git commit -m "the first commit"

这时再看看 log ,你已经有三条 commit 了:

6、把提交推送到中央仓库

到现在为止,已经写了两条提交,但它们都还在本地仓库。为了把代码分享出去,你还需要把这些提交上传到中央仓库。如果你现在再看一下 status :

git status

你会看到,Git 提示你的当前 branch 已经领先于( "ahead of" )'origin/master' 两个提交了。就像 上面我说的,branch 这个概念我到后面再讲, origin/master 的中的 origin 是远端仓库的名称, 是你在用 clone 指令初始化本地仓库时 Git 自动帮你起的默认名称; masterorigin 上的分支 名称。不过对于现在来说,可以暂时把 origin/master 简单理解为「中央仓库」。也就是说,这句 话是告诉你,你的本地仓库已经领先中央仓库两个提交了。这两个提交很明显就是指的刚才那两个关 于 test.txt 的提交。

而这句话的下面也说明了,你可以使用 git push 来把你的本地提交发布(即上传到中央仓库)。所 以很简单,照做吧:

git push

由于这是联网操作,所以在这个过程 GitHub 会再次向你索要账户和密码。填入正确的账户和密码, push 操作就完成了。这时你再去你的 GitHub 仓库页面看一下:

你会发现 test.txt 文件已经在上面了,并且 commits 的数量从一个变成了 3 个。这说明你已经成功把本地仓库的提交推送到了服务器。

如果觉得一遍遍地输入密码很烦,可以按照这个页面 提供的方案来把密码保存起来。 另外还有一个更简单但安全性低一些的方案。执行这行代码:

git config credential.helper store

在这之后你只需要再输入一次密码, Git 就会把你的密码保存下来,这之后就再也不用输入了。说它「安全性低」,是因为这条指令会让 Git 把你的密码以明文形式保存在你的电脑上。 具体这两种保存密码的方案选择哪个,看你自己了。

7、小结

在这一节里,描述了 Git 的最基本的工作模型:

  1. 从 GitHub 把中央仓库 clone 到本地(使用命令: git clone
  2. 把写完的代码提交(先用 git add 文件名 把文件添加到暂存区,再用 git commit 提交)。在这个过程中,可以使用 git status 来随时查看工作目录的状态。每个文件有 "changed / unstaged"(已修改), "staged"(已修改并暂存), "commited"(已提交) 三种状态,以及一种特殊状态 "untracked"(未跟踪) 
  3. 提交一次或多次之后,把本地提交 push 到中央仓库( git push

下一节将会讲一下在团队开发中会遇到的问题,从而以这种工作模型为基础,延伸到团队开发的基本 工作模型。

但在这之前,强烈建议你先按照这节的内容照做一遍,并尝试理解这一节中所说的工作模型。不然的 话,可能会出现「小册看完了,却还是不知道怎么做」的情况。

# 提交注释写错了, 或者漏了需要提交的文件的时候使用该命令
git commit --amend -m [message]
git branch
# 默认列出所有本地分支
# -r 列出所有远程分支
# -a 列出所有分支
# -v 查看最近提交
# -vv 查看与远程追踪关系
git log
# --stat 显示变更的文件
# -S [keyword] 根据关键字进行搜索
git push [shortname] [branch]
# --force 强行提交

猜你喜欢

转载自www.cnblogs.com/ys951207/p/10236846.html