zoukankan      html  css  js  c++  java
  • 分布式版本控制系统git

    最近看到这篇文章,简洁易懂,特摘抄至https://www.cnblogs.com/bgwhite/p/9403233.html 供大家提供参考。

    git可以说是世界上最先进的版本控制系统,大多语句的执行为linux语句,也不难怪,,起初他就是为了帮助开发linux开发内核而使用。
    我们先来说git的主要功能,知道了这个,我们也就知道了为什么我们进行项目开发多会选择这个进行项目的开发
    • 从一般开发者的角度来看,git有以下功能:
      • 从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。
      • 在自己的机器上根据不同的开发目的,创建分支,修改代码。
      • 在单机上自己创建的分支上提交代码。
      • 在单机上合并分支。
      • 把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。
      • 生成补丁(patch),把补丁发送给主开发者。
      • 看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。
      • 一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。
     
    • 从主开发者的角度(假设主开发者不用开发代码)看,git有以下功能:
      • 查看邮件或者通过其它方式查看一般开发者的提交状态。
      • 打上补丁,解决冲突(可以自己解决,也可以要求开发者之间解决以后再重新提交,如果是开源项目,还要决定哪些补丁有用,哪些不用)。
      • 向公共服务器提交结果,然后通知所有开发人员。
     
    git的优缺点:
    • 优点:
      • 适合分布式开发,强调个体。
      • 公共服务器压力和数据量都不会太大。
      • 速度快、灵活。
      • 任意两个开发者之间可以很容易的解决冲突。
      • 离线工作。
    • 缺点:
      • 资料少(起码中文资料很少)。
      • 学习周期相对而言比较长。
      • 不符合常规思维。
      • 代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
    注:git的详细使用请查看上面文档git的使用

    使用版本控制管理工具git来管理项目

    一、 安装

    Git(git_for_windows.xp510.com.rar)

    二、 使用

    a) 进入到 git bash(命令行工具)

    b) 初始化user.name,user.email

    $ git config  --global user.name "AmbitionG"

    $ git config  --global user.email "2438387860@qq.com"

    三、 开发项目

    c) 进入HBulid新建项目(如:e:web20170210),把git bash工具的当前路径转入到你的项目目录

       命令:
    cd e:healthy

    四、 给项目配置git仓库

    d) 初始化仓库:git init

    i. 在git bash里,转换路径: cd e:/ web20170210

    ii. 输入 git init。就会在e:/ web20170210下产生目录 .git(隐藏目录),表示e: web20170210里的项目代码(即所有的文件)会使用git进行版本管理。

     

     

    注意:在初始化仓库后 尽量新建一个master的分支yourname  然后所有的剩余操作在yourname中执行

    在git bash里输入$ git checkout -b -yourname

    五、 把开发的代码放在本地版本库

    e) Git add

    假设在项目下有个index.html文件。在 git Bash,输入:git add index.html

     

    f)  Git commit(提交)

    i. 在git Bash里输入:$ git commit -m "这是新建的index.html"。其中"这是新建的index.html"只是说明或者说解释。

    理解:add和commit;

    Add:添加;相当于打了标记,告诉git,下次提交时把该文件进行提交。

    Commit:提交。把打过标记的(即用add进行添加的文件),一次性进行提交。

    g) 

    六、 恢复(跳转)到某个版本的文件

    1)、查看所有的版本的命令

            git  log

    2)、要恢复到上一个版本

            git reset  --hard   HEAD^

    3)、恢复到指定版本

           git  reset  --hard  版本序列号

    七、 把本地版本库的代码放在远程库

    1. 进入github官网(https://github.com/

    2. 注册账号

     

     

    3. 登录(Sign in)

     

    4. 创建本地与远程的连接(用ssh)(搭桥)

    1) 在本地创建ssh key(公钥)

    创建SSH Key: $ ssh-keygen -t rsa -C 2438387860@qq.com你需要把邮件地址换成你⾃⼰的邮件地址,然后⼀路回车,使⽤默认值即可.

    在⽤户主目录下(/c/Users/Administrator/.ssh/id_rsa)),看看有没有.ssh目录,如果有,再看看这个目录下 有没有id_rsa和id_rsa.pub这两个⽂件,如果已经有了,可直接 跳到下⼀步。

    2) 在远程创建ssh key

    登陆GitHub,打开“Account settings”,“SSH Keys”⾯: 然后,点“Add SSH Key”,填上任意Title,在Key⽂本框⾥粘贴id_rsa.pub⽂件的内容:

     

     

     

     

    点击“add SSH Key”

     

    5. 创建远程仓库:

    1) 在页面中找 “new repository”

     

    2) 输入仓库名

     

    点击“create repository”

     

    3) 添加远程库的命令(可以认为是把远程库和地址进行对应)

    在git bash里输入以下命令:(切记:把git bash的当前路径转到你的项目路径(带有.git文件夹)下)

     git remote add origin  git@github.com:tianwater/bigMi.git

    origin:是远程的库名(可以认为是别名,可以更改);

    git@github.com:tianwater/bigMi.git:是上一个截图中的ssh地址;

    6. 把本地库的内容推送到远程库(确保本地执行过git add和git commit)

    git push -u origin master     

    注意:origin是远程库名,根据实际情况进行更改

    注意:确保本地执行过git add和git commit,即,本地版本库要有的版本。

     

    八、 克隆远程库

     

    前面六步中讲了先有本地库,后有远程库的时候,如何关联远程库。 现在,假设我们从零开发,那么最好的⽅式是先创建远程库,然后,从远程库克隆到本地。 

    1. ⾸先,登陆GitHub,创建⼀个新的仓库,名字叫mytaobao:

    注意:勾选Initialize this repository with a README,这样GitHub会⾃动为我们创建⼀个 README.md⽂件。创建完毕后,可以看到README.md⽂件:

    2. git clone克隆⼀个本地库

    $ git clone git@github.com:tianwater/mytaobao.git

    这样就会在当前目录下创建一个本地的git版本库。

    注意:把git bash 的当前路径要转到你的项目目录下

     

     

     

    一、 总结:

    以后,每天做的git相关工作

    1)、git add *

    2)、git commit –m “版本描述”

    3)、git push -u origin master

  • 相关阅读:
    程序员第一定律:关于技能与收入
    Android——全屏显示的两种方式
    Android与JavaScript方法相互调用
    IT职场人生:找谁占卜
    Linux 2.6.23开始使用CFS(complete fair schedule),线程Priority不再有效
    如何查看一份linux kernel source的版本?
    tar解包的时候如何exclude一些目录
    rsync通过SSH来同步两台机器上的内容
    ArchLinux下配置TPLink WN550G PCI网卡为无线AP
    配置Linux下的时间服务器,让一批机器和一台机器时间同步
  • 原文地址:https://www.cnblogs.com/Lu-Lu/p/10839499.html
Copyright © 2011-2022 走看看