Git前端资源库Web前端之路

从零开始学Git(2):详解Git中的分支操作与GitHub使用

2017-04-13  本文已影响92人  多小啦

01. 分支操作(branch)

什么是分支

可以认为就是当前项目的副本,使得原有项目与该副本可以同时开发,
副本的功能实现成功与失败,都对原始副本没有影响。
如果分支中的副本成功了,可以将其合并到原始副本中,
那么就可以实现在不影响原始副本的情况下,进行新的内容的开发。

为什么要使用分支

可以在不修改原始项目的情况下,进行其他的操作。
由于每一次修改都可能造成全局的破坏,使用分支可以减小风险。

分支的使用场景

1. 分模块开发(多用户开发);
2. 解决bug
3. 复用。举例来说:适用于外包公司,给一个可复用的项目创建多个分支,设置不同的主题,卖给不同的公司。
   因此,同一个项目可以卖给多个公司,项目外观不同,但是核心都是一样的。在后期维护上也可以同时进行。

如何操作分支

查看分支:git branch
创建分支:git branch 分支名 (很多公司对分支名的起名规则会有规定)
切换分支:git checkout 分支名
合并分支:

① 先切换到目标分支,即master
② 执行命令:git merge 分支名
    将什么分支合并到当前分支上,即 git merge 分支名
③ 删除分支:git branch -d 分支名

分支合并的冲突

假定给新的分支命名为:dev。
在分支合并的时候,dev分支中与master分支中,如果有相同的文件(即同名的文件),那么文件将被覆盖。
但是如果两个分支中的这两个不同的文件,同时进行了修改:

1. master修改了,dev没有修改 -》合并的时候不变
2. master没有修改,dev修改了 -》直接合并
3. master和dev都修改了 -》
   合并的时候就会保留两个版本的数据,那么需要程序员自己决定要保留什么,然后再提交结果。

02. 远程服务器

如果需要提供一个远程服务器的话,那么远程服务器中应该有一个仓库,而这个仓库中没有工作区,我们把这样的仓库称为裸仓库。
在本地使用文件夹模拟:

    1. 创建一个裸仓库(需要文件夹)
    使用命令:git init --bare
    在当前目录下创建一个裸仓库

    2. 可以使用该文件夹的名字(路径 名)作为该资源的url(unit resource location, 统一资源定位符)地址。

    3. 用户需要对仓库的代码进行编码的时候,采用的步骤:
    -》① 下载仓库代码:git clone 仓库的url
    仓库的url改成下列地址格式:
    file:///C:/Users/dora/Desktop/Remote/my_project
    -》② 修改本地代码
    -》③ 无问题后上传到远程的仓库中:git push [仓库的url]
    **完整的push语法:git push -u url 分支名**
    注意:远程仓库中的代码与本地仓库中的代码理论上是一模一样的

    4. 如果是多人协作开发,在提交之前应该先pull一下,
   将远程服务器中的数据再同步到本地,如果本地有冲突应该先解决冲突再进行一次提交。

    多人协作的策略:
    1. 每一个程序员应该考虑分到不同的文件或文件夹中。
    2. 每次上传(push)之前,应该先下载(pull),减少出现的冲突。

03. Github

在实际开发的时候,我们的项目是放在远程仓库中的。
这个远程仓库可以是

1. github
2. git.oschina.net
3. gitlab

04. SSH

SSH采用一种加密算法,给每一条计算机生成一个公钥与秘钥。
ssh-keygen -t rsa
该命令会生成公钥与秘钥,会存储在家目录(cd ~)的 .ssh 文件夹中
将生成的公钥复制到远程仓库的(github)里面的设置选项的SSH中,
在克隆项目时,选择ssh验证样式。

05. ignore 忽略

默认情况下,git维护当前文件夹下的所有文件。
该文件是用于描述git管理的文件名字规则与文件夹规则的。
1. 在项目的根目录下创建一个 .gitignore 的文件(用命令行创建)
2. 在该文件中写上不需要管理的文件的名字,可以写文件夹,表示该文件夹下的所有文件都不管理。
3. 还可以使用 否定 !,例如希望只管理一个文件夹下的某一类型的文件,那么可以写成
src/
!src/*.js 忽略src文件夹的js文件
4. 添加提交即可。

看了这么多,不来我的GitHub上瞧瞧吗?:-D
https://github.com/dora-zc

上一篇下一篇

猜你喜欢

热点阅读