Github- 开源项目, 远程仓库 ;
我在 github 上建立了一个仓库 https://github.com/abcd/2016ife ;
现在我要把它下载到本地;
cd g:
cd github/test
git clone url 这里 url 填写仓库的地址;如: https://github.com/abcd/2016ife.git
cd 2016ife
进入后如下:
git config --global user.name "xxxxxxx" // 设置全局的用户名,回车后没有提示就是设置成功了;
git config --global user.email "xxxxx@163.com" // 设置邮箱
设置了这两个,当我们提交代码的时候就会把这两个记录在版本库里,其他人就可以查看到;
git config --global user.email // 我们设置好了,也可以查看的;回车后会打印出邮箱;
git config --list // 查看到所有的配置
master 是主分支的默认名称; 创建一个分支,不影响稳定的主分支 master ,等分支做好了,再合并到主分支。
git 的三个区 :
工作区,暂存区,版本区(库)
工作区 --> 暂存区 --> 版本区
暂存区:工作区要提交代码到版本区,需要经过暂存区;
先将改好的代码扔到暂存区,再把暂存区的扔到版本区;
暂存区的作用:作为过渡层,避免误操作,保护工作区和版本区,分支处理;
git status // 查看当前工作区和暂存区的状态
提示, nothing to commit……
我把 xinshijie 这个文件夹拷贝到了本地 2016ife 那个文件夹中,再在命令行输入 git status
表示有一个文件夹的内容现在没有提交到暂存区和版本区,现在正在工作区;
git add xinshijie / // 添加到暂存区 , git add 文件名 文件名可以是具体的文件,也可以是文件夹的名字; git add . 全部添加到暂存区;
可以看到红色 的是 +1 ~0 -0 表示在工作区,有 1 个新增的文件(文件夹), 0 个修改,和 0 个删除的文件;
绿色的是暂存区的;最后,看不见红色了的,表示工作区已经干净了;
所以从工作区到暂存区,通过 git add 这个命令来实现;
接下来,把暂存区文件放入版本库:
git commit // 会直接弹出个记事本,要我们增加注释; 而通过 git commit -m "change demo1" 这样不会打开记事本,而快速添加注释; -m " 注释内容 " ;
git commit -a -m " 快速注释 " // 这样可以直接 从工作区到版本区 ; -a 是简写的 add ,添 加到暂存区 ;
再次使用 git status; 看到已经提交有1个版本了;
git log // 查看提交历史,按 q 退出;
git diff // 比较 工作区 和 暂存区 的不同;
git diff --cached ( git diff --staged ) // 比较 暂存区 和 版本库 的不同;
git diff master // 比较 工作区 和 版本库 的不同;
撤销操作:
git reset HEAD // 从暂存区撤销回工作区, 输入文件名
git checkout -- //从工作区撤销回版本区
git commit --amend //撤销提交操作
注意:
这里的逻辑是这样的: 我现在有两个文件在工作区;我首先添加了 drag.js 到暂存区,然后提交到了版本区;这时我才发现还有个 demo 1.html 没有提交;其实我的想法是把这两个文件一次提交成功(涉及到提交的版本);解决方法:先把 demo1.html 添加到暂存区;然后使用 git commit -m "change3 drag.js and demo1.html" --amend 这样就会撤销掉上次提交,并且一起再提交;这样就完成了撤销,两个文件一起提交。
删除
git rm // 删除暂存区的内容;我们工作区假如删了一个文件,通过这个命令把暂存区的也删掉;
git rm -f // 工作区和暂存区都有文件的时候, 强制删除 暂存区和工作区对应的文件 ;
git rm --cached // 工作区和暂存区都有文件时, 只删除暂存区的文件,但保留工作区文件 ;
恢复
通过 git log 可以看到 cmmit 的 ID
git checkout commit _id // 这是对指定文件进行恢复
git reset --hard commit_id // 恢复到以前的版本
head 版本的指针 ,指针来控制版本
git reset --hard HEAD^ // 回到前一个版本
git reflog // 可以查看所有分支的所有操作记录 ( 包括 commit 和 reset 的操作 )
这样用 git reset --hard commit _id 可以恢复到以前的版本了;
下面将本地的开发,传到 github 上;
我们要先登录 github 的客户端;先可以看下是否登录了 github 账号;
git remote //查看远程仓库的名字,clone 下,默认是 origin 这个名字
git remote -v //查看对应的远程仓库的地址
git push origin master // git push 远程仓库的名字 要同步的分支
这样我们就提交到了远程仓库;
多人协作的时候,要添加新的协作人员;
这样就会给用户发送一个请求,让他来一起开发这个项目;
另外一个人收到权限,仍然使用 git clone url 来获取到本地;后面的操作命令都一样;
多人协作开发
先拉取同步更新下,避免冲突;
多人协作解决冲突;
git pull与 git fetch的区别:
git fetch //不合并到分支中,先解决冲突,再手动地合并
git diff master origin/master //查看差别
git merge origin/master //手动合并
git pull //直接合并到文件中,不容易查看到差别;
开源项目协作: 先 fork; 再 pull request
如何参与到没有权限的开源项目中呢?
fork 完全镜像了一个版本,放到自己的账号中 …
修改完后, pull request ,发到请求到作者那边;
删除仓库
在 settings 中有 delete this repository; 删除要特别小心,不要误删了,删除了是找不回来的。
git 命令行
http://www.cnblogs.com/sysu-blackbear/p/3463475.html