zoukankan      html  css  js  c++  java
  • git与github

    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 <file.name>     //从暂存区撤销回工作区,<file.name>输入文件名

    git checkout -- <file.name>     //从工作区撤销回版本区

    git commit --amend                 //撤销提交操作

    注意:

     

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

    删除

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

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

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

    恢复

    通过git log可以看到cmmitID

    git checkout commit_id <file.name>       //这是对指定文件进行恢复

    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

  • 相关阅读:
    【数据结构】平衡二叉树之AVL树
    【数据结构】二叉排序树BST
    【数据结构】二叉树
    【算法】堆排序
    【数据结构】堆
    第五百八十一天 how can I 坚持
    第五百八十天 how can I 坚持
    第五百七十八、九天 how can I 坚持
    第五百七十七天 how can I 坚持
    第五百七十五、六天 how can I 坚持
  • 原文地址:https://www.cnblogs.com/webcome/p/5471534.html
Copyright © 2011-2022 走看看