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