正文之前
上一篇文章简单介绍了 Git 和 GitHub,这一篇文章用一个仓库来作为例子介绍 Git 的基本用法,而不是单纯地列出每一条 Git 命令
这篇文章来自我的博客
正文
1. 仓库的初始操作
初始化
首先我先在本地存放 GitHub 仓库的文件夹里新建一个文件夹,叫 “Git-test”
现在这还只是一个普通的空文件夹,所以在这个文件夹里开启 Git Bash:
要想把一个空的文件夹变为 GitHub 的仓库,首先我们要用 Git 初始化这个仓库:
git init
虽然在初始化完仓库之后,文件夹内看上去没有变化,但是这个文件夹里有一个 .git 目录,默认是隐藏的,打开隐藏文件之后就可以看见:
查看仓库状态
查看一下这个仓库的状态:
git status
添加文件
首先我先在仓库里创建一个带有一个词 “test” 的 README.md
然后查看仓库状态会发现有了变化:
处于未提交状态的文件都被归为 Untracked files
提交的过程有两步,先向暂存区中添加文件,然后提交
首先我们将 README.md 文件提交到暂存区:
git add README.md
如果你想要向暂存区添加所有变动的文件,那就用:
git add .
然后我们查看一下仓库状态:
Changes to be committed 中的文件都是已经暂存,但是没有提交的文件
接下来我们提交文件:
git commit -m 'Update README.md'
-m 后面跟的是这次提交的信息,相当于概述
有的人会想问,README.md 在提交之前就已经在我的仓库里了,为什么还要提交呢?
因为仓库的最终目的是对外开放,你自己的本地仓库的改动如果不提交,不推送,GitHub 上的远程仓库里是不会有变化的,其他人看不到你所做的改动,关于提交到远程仓库,下文会说明
查看日志
在多人协作时,通常需要查看日志来看看有谁对进行了提交:
git log
就会发现我刚才提交了 README.md 文件
2. 仓库的分支
接下来的分支是一个重要的概念,在多人协作开发时,都要用到分支
首先,在我们初始化仓库时,有一个默认的主分支 master
,如果没有创建其他分支,那么所有的工作都是在 master
分支上进行的,如果要创建分支:
git checkout -b newBranch
这时候会发现已经切换到我新建的分支 newBranch
了
-b 后面跟着分支的的名字,如果分支存在,就转到那个分支,不存在就新建
假设要创建新的分支,那么上面那条语句可以分成两步来做:
git branch newBranch
git checkout newBranch
先创建分支,再切换到分支
3. 远程仓库
到现在为止,我们对仓库的操作都是在本地进行的,接下来说一下远程仓库:
首先是在 GitHub 上创建一个仓库,名字与上面的本地仓库一样:
为了写博客用,这个 Git-test 仓库是私有仓库(用学生邮箱开的)
在你创建完之后,会有提示页面:
我们要在这个仓库作为本地仓库的远程仓库,简单地说,就是把我们本地的 Git-test 仓库和 GitHub 上的远程仓库 Git-test 关联起来
推送内容至远程仓库
我们选择第一种方式,初始化、添加 README.md 和 提交更改都已经完成了,现在我们添加远程仓库,复制 SSH,在命令行使用:
git remote add origin [email protected]:lihanxiang/Git.test.git
执行完这个命令之后,Git 就会根据 [email protected]:lihanxiang/Git.test.git
来将我们刚才创建的仓库设置为本地仓库的远程仓库,名称为 origin
这个名称 origin
和我们在 GitHub 上的仓库名不一样,我们在推送内容时,填写的名称是我们在设置远程仓库时指定的名字
然后将本地仓库的内容推送至远程仓库的 master 分支:
git push -u origin master
然后在 GitHub 上刷新一下仓库的页面:
这时候我们已经将本地仓库的内容推送至远程仓库了
从远程仓库获取内容
如果我直接在远程仓库的 master 分支新建一个文件,在对本地仓库进行操作时,就需要先获取远程仓库的新的内容:
git pull origin master
4. 总结
上面说的是 Git 的基本操作,在这些方法中,有几个是最常用的:
git init
git status
git checkout
git add
git commit
git pull
git push
后四步一般是连在一起的
这只是简单介绍了一下 Git,下一篇文章将讲述分支的相关操作