git
- git 分布式管理系统
git 本地操作
- 不停地创造文件进行备份(没有修改提示),git可以帮我们管理代码,保证代码不丢失
- 记录历史只要提交到git上就永久不会丢失,可以随时"穿越"
- 团队协作, 两个人同事修改文件同一行(不是每一行),需要手动接触冲突,其他可以实现自动合并(如果是模块化,组件化开发,这是最好的互不影响的模式)
- 强大的分支管理系统
- 多端共享 pc ios andriod
- 速度比svn快
- 有个单独的
.git文件夹 - 有工作区, 暂存区, 历史区

- svn 集中式管理系统
- 需要一台中央服务器
- 每个文件夹都有
.svn的文件

git安装
windows got-scm.com 下载安装
mac 如果安装过xcode 自带git,homebrerw是mac的包管理器(我们可以安装插件更改界面http://ohmyz.sh/ + http://www.iterm2.com/)
配置用户(第一次使用需要进行配置的)
可以通过 git config --list 来判断有没有进行配置,如果配置会出现user.email email, user.name name的字段

git config --global user.name "yourname"
git config --global user.email "youremail"
linux命令
刚刚cmd打开的管理器,我们用的dos命令,但是在git bash here我们用的是linux命令,这一点我们要区分,下面我们用linux命令进行初始化git
初始化git git init (告诉那个文件夹被git管理)
正常我们在文件下打开git,目录显示正常,但是在初始化git init 之后会初始化目录,且将当前目录作为主分支,该目录下后面会跟加一个(master)的字段,代表初始化成功,此时不存在分支主干的说法,必须在提交之后才会看见分支,不允许嵌套

移除git对该问价夹的管理
我们只需要 删除该目录下的.git 文件夹 rm -rf .git,执行之后,目录上的(master)就会消失
需要注意的是rm -rf是永久删除,不可恢复,所以需要谨慎使用
其他命令
pwd print working directory 打印工作日志
rm 文件名 删除文件
mkdir 创建文件
cd 目录名 进入某个目录
ls 查看该目录下的文件
ls -al 查看该目录下的文件(包括隐藏文件)
cat love.txt 查看文件内容
touch 文件名.后缀 创建空文件
each hello > love.txt 向文件夹追加输入 hello
vi 文件名.后缀 编辑文件
i:插入模式 esc退出编辑者模式 q!强制退出 :wq 保存并退出
each hello > love.txt 向文件夹输入 hello
mv my-my ~/Desktop 把my-my移动到桌面


- 退出vim编辑器的方法及区别
当文本编辑结束之后,通常需要退出编辑器。退出编辑器又分为4种情况:保存退出、正常退出、不保存退出及强制退出,请参考jingyan.baidu.com/album/495ba…
提交到历史区(不是github)
我们说git有有工作区, 暂存区, 历史区三个区,但是工作区不能直接提交到历史区,我们在提交之前首先要认识自己在哪个区git status(git的提示很不错的)

目录红色代表工作区,绿色代表暂存区 ,图片提示我们可以通过git add .,git add -a,git add 文件名称来提交到暂存区,提交之后就变为绿色

- 到暂存区后,如果想删除暂存区的东西,我们用
git rm --cached . -r(-r 是递归, --cached 表示暂存区)退出暂存区 - 提交到暂存区后提交到历史区,用
git commit -m"提交信息"提交之后就会生成版本号

- 我们可以用
git log查看版本号(自下而上),最上面的是最新的

撤销,回滚
- 比较文件
git diff默认是工作区和暂存区比(也可以工作区和历史区,或者历史区和暂存区)
- git diff 工作区和暂存区比
- git diff master 工作区和历史区
- git diff --cached 历史区和暂存区

- 从暂存区将工作区内容覆盖掉
git checkout love.txt但是不能在返回了, - 假设已经提交到暂存区, 我们可以用
$ git reset HEAD love.txt让暂存区倒退,在执行2 返回 - history > 1.txt 将历史记录导入到文件里
- 如果提到历史记录,那么永远不会丢,之前我们不能将工作区的直接提交到历史区,但是只要提交过一次,第二次就可以直接提交到历史区,原理还是会走到暂存区,只不过是快捷方法而已
git commit -a -m"third" - 当我们需要从历史区回滚到某个版本
git reset --hard 版本号会那回滚的版本库去覆盖掉工作区和暂存区,那么要从以前回过来呢? git reflog可以打印出所有记录git reset --hard 版本号可以回滚和穿越了- 往上走一次用
git reset --hard HEAD^
分支
我们开发一定是多人共同开发,但是不可能是第二个人提交的版本覆盖第一个人的版本,我们需要建立分支,最后合并代码.
- 看目前有几个分支(*代表当前在哪儿个分支上)
git branch查看分支 - 创建分支
git branch dev - 切换分支
git checkout dev - 删除分支
git branch -D 分支名不能删除当前分支 - 创建并切换分支
git checkout -b dev( 刚创建分支的时候,分支marster属于同一个空间,除非分支已经commit了) - 当改了dev文件的时候,将不能切换分支,必须提交更改,或者在没有没交之前暂存文件,暂存文件
git stash暂存是使用过渡区覆盖工作区(危险)

- 想还原暂存的内容
git stash pop - 分支合并
git merge dev

gitgroph显示合并信息

远程仓库
sourceTree免费管理git的工具 在本地推给别人,我们需要一个平台github,,,只有历史区才能推到历史区的结果
- github账号
- fork复制
- 在当前项目创建READEME.md
# 项目说明
---
## 技术栈
---
* es2015
* React
* React-Router
* Redux
* babel
* node
## 目录说明
---
* src 源代码所在目录
* module 业务代码
* demo 各种react样例
* resource 资源文件
* css 公共css
* .babelrc babel配置文件 push代码方式,没必要做重复劳动
* ...
## 启动服务
---
* `make server|edp webserver start` 启动本地服务
* 本地调试
## 多人开发模式
---
同一时间多人开发,按人创建分支,分支按照分支的命名规范。
### 提测
提测时间点有交叉的,统一merge到`test`分支,不要构建自己分支,不然会覆盖其他人功能
### 上线
### ***`说明:`***
* 删除本地test分支
* 删除远程test分支
## 其他
---
* dev环境地址:http://dev-
* tes环境地址:http://test-
* test环境部署地址: http://
* IDE,建议使用Visual Studio Code,或者使用Sublime Text,安装基础插件
## 人员
---
amily
- git init 初始化项目
- git status git add 注意 只要我们用webstorm编辑文件,就会出现.idea的文件夹
- 建立一个文件 .gitignore (配置文件)忽略我们不想要提交的内容 类似于npm.ignore
.idea
node_modules
.Ds_store(mac)
...
- git不会上传空文件夹
- 添加
.gitkeep在空文件夹内 - 建立新仓库
- 将代码拉到本地 git pull
- git remote add 名称 地址 添加远程仓库
- git push -u 名称 master (-u 会记住往origin master 提交)
- git remote -v 列出详细信息,在每一个名字后面列出其远程url,显示对应的克隆地址:
- 删除 git remote rm 名字
拉取最新线上代码
pull相当于 git fetch + git master
关联远程仓库之后我们需要把代码推上去 git push origin(名称) master(分支), 第一次需要输入用户名,第二次密码(暗文) 仅第一次需要
提交之后 (如果.idea也提交上去了,我们关掉webstorm , rm -rf .idea删掉,然后在提交就好了)
前提是线上课线下的不一样,我们需要先git pull origin master

如果报以上错说明我们需要合并线上代码 esc + :wq就可以了,此时我们会多一条日志,然后直接推送

代码fork-pull-request
在Edit上添加 description , website 线上网址
一般我们会建立一个gh-pages分支来发布我们的静态页
- 在项目中创建gh-pages分支
git checkout-b gh-pages - 将分支提到仓库
git add . git conmit -m"" git push origin gh-pages(放静态文件,不能放服务器,不能放数据库) - 找到提供的网址 在
settings找GitHub-Pages - 通过搜索找到人格github 在users找到个人,可以follow,可以看到这个人的活跃度
5.更改别人代码 可以fork在当前项目下克隆一份,如果代码更新,不会随之更新,然后拉取到本地
git clone 地址 别名git remote -v检查,默认就是git仓库地址,而且有origin地址,可以将代码提交到自己的仓库上, - 提交到git上之后,由于自己仓库地址和该项目仓库地址是fork关系,执行
new pull request会将自己的代码推给对方,create pull request创建 - 对方接收到之后红色是fork的,绿色是本地的
close pull request拒绝merge pull request同意 - issue可以提交对项目的质疑
我们自己开发的时候也要这样吗?在setting里面有贡献者,可以把项目免费开给这些人,collabrators添加贡献者,对方需要确认,被添加的人拥有最大权限,copy invitelink拷贝邀请链接,一接收,项目就可以直接操作了.
界面操作
GUI 我们希望以鸡肉面的姓氏操作我们的git仓库,git clone 地址 别名
vcs第二行,点下弹框,选git勾选上,在点右键会出现git属性



git里面有许多命令,可以直接选择
可能会遇见的问题
想重新配置git config
git Authentication failed解决办法
https help.github.com/articles/ge…
密码是自己中间设置的密码哦!
iterm2 + schemes/zsh
schemes下载压缩包 ,配置item2 的preferences zsh