Home  >  Article  >  Web Front-end  >  git与github - 说中

git与github - 说中

WBOY
WBOYOriginal
2016-05-20 13:48:582476browse

Git-版本控制,多人协作,分布式;

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到暂存区,然后提交到了版本区;这时我才发现还有个demo1.html没有提交;其实我的想法是把这两个文件一次提交成功(涉及到提交的版本);解决方法:先把demo1.html添加到暂存区;然后使用 git commit -m "change3 drag.js and demo1.html" --amend  这样就会撤销掉上次提交,并且一起再提交;这样就完成了撤销,两个文件一起提交。

删除

git rm                        //删除暂存区的内容;我们工作区假如删了一个文件,通过这个命令把暂存区的也删掉;

git rm -f                    //工作区和暂存区都有文件的时候,强制删除暂存区和工作区对应的文件

git rm --cached         //工作区和暂存区都有文件时,只删除暂存区的文件,但保留工作区文件

 

恢复

通过git log可以看到cmmitID

git checkout commit_id        //这是对指定文件进行恢复

git reset --hard commit_id                      //恢复到以前的版本

head 版本的指针 ,指针来控制版本 

git reset --hard HEAD^         //回到前一个版本

git reflog       //可以查看所有分支的所有操作记录(包括commitreset的操作)

这样用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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn