Git与GitHub入门简明教程

1,083 阅读6分钟

github账号注册

打开网址github,注册账号,没什么好说的。

repository

简介

repository 译为仓库或者版本库,其实就是一个目录,这个目录中的所有文件都被git管理,不管你做什么操作都会被记录,包括:增加、删除、修改文件等,都会被记录下来,以便后来跟踪与修改相关记录,甚至被还原。

新建repository

很简单github主页点加号

常见操作

主要操作有 fork,fetch,clone,add,commit,push,pull,pull request,checkout 其主要含义如下图所示:

本地配置git

操作简介

remote:指存放在远程的一个计算机,在一般指GitHub服务器。
clone:指克隆,将github上的项目克隆(也可以说是复制)到自己的电脑上。
origin:指远程的代码仓库(自己的仓库),即源文件。
upstream:指上游,fork别人项目的地址,别人的项目就是你的上游,即上一层源文件。
master:指主分支。
pull:指拉代码,把你Github上的远程仓库拉到本地计算机上。
push:指提交代码,把你本机上的项目提交到Github上的远程仓库。
特别注意:本地的 .git文件是指本地仓库,.git目录下存放着所有文件的版本和关联信息,该目录在默认条件下是隐藏的。

1. git 安装和配置

安装就不说了,下载与系统相应的版本,默认安装即可。打开gitbash,下面两个命令验证是否安装成功。
git --version
git
配置名字和邮箱
git config --global user.name ""
git config --global user.email ""

2. git bash命令行操作

语句 含义
git 查看是否安装
git config –list 查看配置,初次运行必须配置姓名邮箱(下一条),以后可修改
git config –global user.name “my name” 配置名字,同样方法配置邮箱,–global是设置该配置适用范围,属于系统级的命令 可以百度,git先用着这一个
git init 创建工作区目录,cd进去执行这条,此目录就成了空仓库(不是版本库)mac用Command+Shift+. 显示隐藏的 .git文件夹
git add 三个概念:工作区1刚创建的目录,暂存区2 .git里stage文件夹,真正的版本分支3 里master文件夹 add是把1内容复制到2
git commit -m “abc” 把 2内容剪切到3,同时加注释 abc,可以不加
git status 查看仓库状态,一定理解上面三概念,看状态内容就懂了
git diff 比较 1 和 3 的区别
git log 查看commit记录(每条记录有不规则id,作者,邮箱,日期
HEAD 当前版本,上一个是HEAD^,上上 HEAD^^,上100 HEAD~100
git reset –hard HEAD^ 文件跳到某版本,hard后是版本名,可以用HEAD系列表示,可以直接输commit id,见git log.输id只需输前几位
git reflog 超级简洁的展示所有版本(含id,HEAD,操作注释),git log是当前控制台有的记录
git checkout – name 还原操作,情况a. 1改了(包括删除,修改内容等),2空 3没改 则 赋值 1 = 3 情况b. 1改完add到2了,1又改了,3啥没改 则赋值 1 = 2
git rm name 从版本库移除name文件
git remove add origin git@github.com:a/b.git 关联本地与远程库,a/b代表GitHub账户名/仓库名
git push -u origin master 把本地库的master文件夹(分支)内容推送到远程库,第一次推送加-u 以后不用了
git pull 远程主机名 远程分支名:本地分支名 从另一个存储库或本地分支获取并集成(整合),去掉三个名字是取主机分支与当前分支合并,等于下面两句
git fetch origin 获取origin分区
git merge origin/YiGeFenZhi 把它与当前分支合并
git clone git@github.com:a/b.git 多人协作开发,那么每个人从远程克隆一份
git branch dev 创建新分支
git checkout dev 切换到分支dev,然后正常的 add、commit
git checkout -b dev 创建并切换到新分支dev
git branch 查看当前分支,前面有*的是当前的
git merge dev 切换到master,用这条命令合并
git merge –no-ff -m “merged” dev 合并 且创建新的commit
git branch -d dev 合并后删除dev
git stash 保存当前工作现场,不add,不commit
git stash list 查看之前的工作现场
git stash apply stash@{0} 恢复list里的现场0,不写stash@{0}也可以
git stash drop 删除原 stash
git stash pop 恢复最近的现场,删除原stash
git branch -D dev 强行删除一个没有被合并过的分支
git remove 查看远程库的信息 ,加 -v更详细
git push origin dev origin是远程库的默认名 ,dev是要推送的分支。master和开发分支必须时刻同步
git tag v1.5 给最新提交的commit上一个标签
git tag v1.4 a453fs2413 给对应id的commit打标签
git tag 查看标签(按字符排序)
git tag -a v0.1 -m “released” 3628164 带有说明的标签,用-a或-s分别指定普通、私密标签名,-m指定说明文字
git show v1.5 查看标签的详细信息
git tag -d v1.2 删除标签
git push origin v1.0 创建的标签默认存储在本地,这个是推送某个标签到远程,全部是 –tags
git push origin :refs/tags/v0.9 删除远程标签
git config –global alias.br branch 配置别名,br就代表branch,更多的自己配

tortoisegit--图形界面for windows

暂时git bash 够用了,用到再说吧

Https和SSH的区别

在管理Git项目上,很多时候都是直接使用https url克隆到本地,当然也有有些人使用SSH url克隆到本地。这两种方式的主要区别在于:使用https url克隆对初学者来说会比较方便,复制https url然后到git Bash里面直接用clone命令克隆到本地就好了,但是每次fetch和push代码都需要输入账号和密码,这也是https方式的麻烦之处。而使用SSH url克隆却需要在克隆之前先配置和添加好SSH key,因此,如果你想要使用SSH url克隆的话,你必须是这个项目的拥有者。否则你是无法添加SSH key的,另外ssh默认是每次fetch和push代码都不需要输入账号和密码,如果你想要每次都输入账号密码才能进行fetch和push也可以另外进行设置。 详细操作请点击Git使用手册:HTTPS和SSH方式的区别和使用

GIST

Gist 提到比较少,其实很好用 可以用来共享部分代码或者错误信息, 也可以用来做to-do list
Gist