首先来了解一下什么是[git
]
git
是一款分布式管理代码以及一些简单的常规文本文件的的工具,并可将修改的代码上传至服务器备份,相较之前的'svn'
集中式管理工具,git
是一款非常方便且安全的工具.
tip
:[分布式
]是指整个项目在分部开发时可以直接将项目分支
给其他分部,待各个分部代码写完后再向主线合并
即可,这样即便有一个分支出现问题也不会影响主线,非常方便 .
(通常在公司项目开发中,项目主管决定你做的分支项目是否合格,从而决定是否合并到主线项目中)
[集中式
]则不具备上面的优势,所有的不论是分支操作还是主线都是在一个域下完成的,虽然会不停的自动备份,但是一旦服务器出现问题那整个项目都将受到影响.
说完了git的特性之后下面再来说说如何安装[git
]
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
首先在官网下载最新版的git并安装
https://git-scm.com/downloads
[git安装选择在window下使用git并且在window下使用linux命令
]基本上是傻瓜式按装.
安装完成后下面来了解一下几个[git
]中几个常用的命令操作
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
[cd
]changeDirectory
--改变目录文件夹
[语法:
] cd 目录名或地址
例子:
cd desktop/node/201704
告诉git你是谁(否则无法提交)
[git config --list
] 查看当前git配置列表
git config --list
[git config --global user.name
] github账号名
git config --global user.name 12345555666789
[git config --global user.email
]github邮箱
git config --global user.email 502071587@qq.com
提交的时候如果报错who are you 表示没配置
[mkdir
]创建目录
mkdir git -->创建一个名为git的目录
[rm -rf .文件夹名
]删除目录
rm -rf .git 删除名为git的目录
rm -rf . -->表示删除目录下全部
管理文件
初始化git,告诉git 哪个文件夹归你管理
[git init
]
git init -->初始化当前目录
git仓库不能嵌套
此命令只需在项目的根目录执行一次即可
[touch
]创建文件
可以创建以"."
开头命名的文件
touch index.txt -->创建了一个名为index的TXT文本
[cat
]一次性查看文件内容
cat index.txt
[vi
]编辑文件
- [
i
]开始insert插入编写,按esc
键退出编写 - ESC键 后按
:wq!
保存退出[:w
保存],[:q
退出],[:q!
强制退出]
[git三刀流
]
[init
]之后-->[add
][commit
][push
]
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
[git add
]将更改的后的操作同步至[暂存区
]
git add . ->表示同步所有文件操作
git add index.txt ->仅同步名为index的txt的文档的操作
[git commit -m'xxx'
]将已同步到暂存区的的操作,更新至[历史区
]
git commit -m '这次更新的注释'
[push
]将目录以及操作更新并上传至"GitHub"库中
需要先配置,稍后详细会讲
=============================
[git status
]查看当前操作状态状态主要是看操作进行到了哪一步
返回红色
文件名 表示操作在工作区
有更改 并且还没向暂存区更改,绿色
则表示操作在暂存区
如什么都没有返回或者返回
nothing to commit, working tree clean
就表示没有操作改动或者所有操作已经同步
git status
[git log
]查看往期版本日志
git log
返回文件名,更新时间以及每一次的版本号和注释
[git reset HRAD 文件名
]撤销本次向暂存区的操作
git reset HEAD index.txt
[git checkout 文件名
]从暂存区恢复至工作区(适用于还未同步至暂存区的工作区操作失误
)
git checkout index.txt
-->这样如果此时工作区有想撤回的操作,那就在还没commit更新本前执行此命令即可
[回滚操作
]
还原至指定的版本
将工作区、暂存区、历史区同步为一个版本
git reset --hard 版本号
同样还可以查看任意回滚前后
的不同的版本指令为[git reflog
]
git reflog
[分支管理
]
[在开始已经基本阐明分支的用意,这里不做过多赘述]
[git branch
]查看所有分支包括主线
git branch
[git branch 分支名
]创建一个新分支
git branch project
[git checkout 分支名
]切换分支
这里需要说明如果当前分支有未同步至历史区的操作是
无法实现切换分支的
需要提前先同步完成后才行
git checkout project
- 快捷操作[
git checkout -b 分支名
]创建并切换到新分支
*特别说明*
只有将工作区的内容提交到指定分支后,这个内容才会属于那个分支,这样别的分支就看不到这个内容了
[合并分支
]
在主分支master
上合并project分支
git merge project
*tip
如果在合并的两个分里支存在对相同文件相同的代码的修改操作,则会在合并时出现冲突,git会提示你手动修改此时就需要自己手动打开在主支线里的这个冲突文件
对其冲突部分进行修改,最后再进行提交
对于已经同步过的只是想行更新本的快捷操作
[git commit -a -m'版本注释'
]没同步过的新文件不能使用此指令
[删除分支
]
删除前要先切换到别的分支不然删不了
git branch ‐d dev
[扩展
]↓
储存工作区
[git stash list
]
删除储存的历史
[git stash apply
]
[git stash drop
]
[git stash pop
]
创建标签
[git tag v1.0
]
查看版本
[git show v1.0
]
[rebase
]和[cherry-pick
]
这两个作用比较类似都是把主分支是定版本的commit内容接到分支里面
至此[git
]常用的本地操作的说明就基本结束了
===========================
[GitHub
]远程仓库
注册完成github
账号后先在本地配置一下".gitignore
"文件,把不需要上传仓库的文件及目录写在里面
也就是忽略上传的文件及目录
先在主支线下创建配置文件
执行命令
touch .gitignore
然后编辑.gitignore文件,比如在里面写上
.DS_Store
node_modules
.idea
那么这三个文件就不会上传至github
*tip
温馨提示
空的目录是不会被上传的 如故想上传空文件夹那就随便在里面放点啥就可以了
配置完成后就可以直接使用[git三剑客
]
[init
]初始化之后
[add
][commit
][push
]
保证github是可以用的情况下
[连接远程仓库
]
在github
新建一仓库后将地址复制,用[git remote add 别名 地址
]指令来连接
git remote add 别名(默认origin) 你的地址
例子:
git remote add origin git@github.com:12345555666789/201704node.git
[git remote -v
]查看所有关联的仓库
[git remote rm 别名
]可以删除已关联的仓库
推送[git push origin master
]
(git三剑客最后步骤)
将所有的操作及文件上传至仓库
(我喜欢把这个叫"同步
")
[发布github静态页]
- 必须要有一个固定的分支
- [
gh-pages
] - 静态页面的内容都需要存在这个分支上
- 在github仓库的setting中有一个免费送你的网址
- 例如:
- https://12345555666789.github.io/201704_homework/
详细步骤如下
创建存放静态页的固定分支
[git checkout -b gh-pages
]
在里面创建html文件
[touch index.html
]
编写完成后执行三剑客
[git add .
]
[git commit -m'注释'
]
[git push origin gh-pages
]
克隆
- 只需克隆一次,克隆下来会默认给一个地址,以后就可以在这个地址上使用[
git pull
]指令来 更新数据
详细步骤指令如下
git clone 别人的地址 别名
git pull origin master
( 如果有出现冲突 删除冲突文件 提交(历史区)后再次拉取)一般不会有冲突
[扩展Fork
]
可以将别人的库以"Fork
"的方式分享到自己的github账号仓库中,同样也可以对其内容进行修改并发送修改别人库代码的请求,如经他人同意后方可修改