美文网首页
远程工厂与本地工厂的关联

远程工厂与本地工厂的关联

作者: Mongy | 来源:发表于2017-04-24 13:26 被阅读0次

    7、组件中名称的设定

    git update-ref refs/INIT/2b4549 使用引用名称
    git update-ref -d refs/INIT 删除引用的名称
    git reset --hard INIT   还原到INIT的版本 
    git show-ref 查看引用名称
    git tag beta0.0.1 将当前版本的名称设置到标签中
    git tag -d beta0.01 删除标签
    git tag 查看标签名称
    git rev-parse HEAD 引用名称转化为相对名称(转化为当前版本的名称)
    git rev-parse HEAD~2 或 git rev-parse^^^^ 转化到上二个版本
    git rev-parser HEAD~1 或 git rev-parse^^ 转化到上一个版本
    

    8、远程工厂和本地工厂交互

    让本地工厂和远程工厂进行关联

    创建完远程工厂之后,就需要考虑如何和本地工厂进行交互。此时会有几种情况:
    本地工厂已经存在,远程工厂未进行初始化
    本的工厂已经存在,远程工厂已经进行初始化
    本地工厂不存在,远程工厂未进行初始化
    本地工厂不存在,远程工厂已经初始化
    以下是四种情况的模拟:

    一、本地工厂已经存在,远程工厂未进行初始化

    由于本地工厂已经存在,需要将本地工厂与远程工厂进行关联,来完成项目的上传
    Git用来模拟本地工厂已经存在,远程工厂未进行初始化
    ①先建立一个本地工厂

    F:\git>mkdir Git
    F:\git>cd Git
    F:\git\Git>git init
    Initialized empty Git repository in F:/git/Git/.git/
    F:\git\Git>git st
    ?? git.txt
    F:\git\Git>git add .
    F:\git\Git>git co -m "git.txt"
    [master (root-commit) 79b38d8] git.txt
     1 file changed, 71 insertions(+)
     create mode 100644 git.txt
    

    ②可以用git remote add origin https://github.com/yngy2016/test01来完成远程工厂的关联

    [remote "origin"]
        url = https://github.com/yngy2016/Git
        fetch = +refs/heads/*:refs/remotes/origin/*
    [branch "master"]
        remote = origin
        merge = refs/heads/master
    

    origin 表示为远程工厂设定一个名称,这时可以在.git中的config文件来看数据的添加,
    url表示origin所对应的远程工厂名称
    fetch表示在获取远程工厂名称时会根据这个引用名称来获取

    ③完成关联的设置后使用git push master来提交,会将本地工厂的数据提交到origin这个远程工厂的master分之中,第一次提交要输入用户名和密码,以下是完成的提交代码:

    F:\git\Git>git push origin master
    Counting objects: 3, done.
    Delta compression using up to 4 threads.
    Compressing objects: 100% (2/2), done.
    Writing objects: 100% (3/3), 1.28 KiB | 0 bytes/s, done.
    Total 3 (delta 0), reused 0 (delta 0)
    To https://github.com/yngy2016/Git
     * [new branch]      master -> master
    

    提交完成后远程工厂会有本地工厂的数据
    使用git push --set-upstream origin master可以将本地分支master注册到.git/config文件中,之后使用git push就可以数据的提交,这种方式也可以用在master的其它分支上。

    总结:
    ①创建本地工厂
    ②创建远程工厂,并不初始化
    ③使用git remote add origin https://github.com/yngy2016/Git```来进行工厂的关联。 ④使用```git push origin master```来提交 ⑤使用```git push --set-upstream origin master```可以注册分支 ⑥在使用git push``就可以完成数据的提交

    二、本的工厂已经存在,远程工厂已经进行初始化

    **git_init用来模拟本地工厂已经存在,远程工厂已经进行初始化****
    ①先建立本地工厂
    ②建立远程工厂并初始化之后,使用git remote push master https://github.com/yngy2016/git_init来完成工厂关联时会出现以下代码:

    To https://github.com/yngy2016/git_init
     ! [rejected]        master -> master (fetch first)
    error: failed to push some refs to 'https://github.com/yngy2016/git_init'
    hint: Updates were rejected because the remote contains work that you do
    hint: not have locally. This is usually caused by another repository pushing
    hint: to the same ref. You may want to first integrate the remote changes
    hint: (e.g., 'git pull ...') before pushing again.
    hint: See the 'Note about fast-forwards' in 'git push --help' for details.
    
    

    这是因为已经在远程工厂中的数据已经初始化,并且创建了一个master分支,会与本地工厂的数据冲突,这时使用git push master依然会报错,需要更新数据来完成提交,获取远程工厂的命令是git pull master会出现以下代码:

    warning: no common commits
    remote: Counting objects: 3, done.
    remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
    Unpacking objects: 100% (3/3), done.
    From https://github.com/yngy2016/git_init
     * branch            master     -> FETCH_HEAD
     * [new branch]      master     -> origin/master
    fatal: refusing to merge unrelated histories
    
    

    这是因为远程工厂与本地工厂还没有进行关联,无法合并分支,就需要加入参数--allow-unrelated-histories来进行远程工厂的数据获取。

    F:\git\git_init>git pull origin master --allow-unrelated-histories
    From https://github.com/yngy2016/git_init
     * branch            master     -> FETCH_HEAD
    Merge made by the 'recursive' strategy.
     README.md | 1 +
     1 file changed, 1 insertion(+)
     create mode 100644 README.md
    

    ③使用git log来查看版本,共有三个版本:

    F:\git\git_init>git log
    commit dbac23e0a2ecca66798c222dafabc1774008b03c
    Merge: 62a8b56 7614851
    Author: yngaoyan <yngaoyan@gemil.com>
    Date:   Sun Apr 23 17:54:01 2017 +0800
    
        Merge branch 'master' of https://github.com/yngy2016/git_init
    
    commit 62a8b569016bcfb40a2c60efacac69ef051de6e9
    Author: yngaoyan <yngaoyan@gemil.com>
    Date:   Sun Apr 23 17:46:42 2017 +0800
    
        git_init.txt
    
    commit 76148511272d4624c8150d79890bd53fd34fca29
    Author: yngy2016 <2269904451@qq.com>
    Date:   Sun Apr 23 17:43:58 2017 +0800
    
        Initial commit
    
    

    第一个版本是在远程工厂中初始化并提交的版本 Initial commit,第二个是版本是在本地工厂初始化并提交的版本git_init.txt,第三个版本是最新版本,是两个的合并版本,之后在使用git push master就可以完成本地工厂的提交。

    Counting objects: 5, done.
    Delta compression using up to 4 threads.
    Compressing objects: 100% (3/3), done.
    Writing objects: 100% (5/5), 494 bytes | 0 bytes/s, done.
    Total 5 (delta 0), reused 0 (delta 0)
    To https://github.com/ynkonghao/test1_init.git
       263dab7..3395ef6  master -> master
    Branch master set up to track remote branch master from origin.
    

    总结:
    ①建立本地工厂和远程工厂,并初始化远程工厂
    ②使用git pull origin master --allow-unrelated-histories从远程工厂中获取数据并合并到本地工厂中
    ③使用git log来查看版本的信息
    ④使用git push master来完成提交

    三、本地工厂没有建立,远程工厂已经进行初始化

    **fac_init用来模拟本地工厂没有建立,远程工厂已经进行初始化****
    ①现在建立远程工厂并初始化

    ②使用git clone https://github.com/yngy2016/fac_init把远程工厂的数据克隆到本地工厂,会出现以下代码,本地就会出现一个fac_init的文件,里面的数据和远程工厂的一样。

    Cloning into 'fac_init'...
    remote: Counting objects: 21, done.
    remote: Compressing objects: 100% (13/13), done.
    remote: Total 21 (delta 5), reused 0 (delta 0), pack-reused 0
    Unpacking objects: 100% (21/21), done.
    

    ③进入fac_init文件夹使用git log可以看到工厂中已经有一次master分支的提交

    ④之后添加数据只需要git push就能把数据提交到远程工厂的master分支中

    F:\git\fac_init>git push
    Counting objects: 3, done.
    Delta compression using up to 4 threads.
    Compressing objects: 100% (2/2), done.
    Writing objects: 100% (3/3), 294 bytes | 0 bytes/s, done.
    Total 3 (delta 0), reused 0 (delta 0)
    To https://github.com/yngy2016/fac_init
       fdb0254..6b4bee2  master -> master
    

    总结:
    ①建立远程工厂并初始化,没有本地工厂
    ②使用git clone https://github.com/yngy2016/fac_init把远程工厂的数据克隆到本地工厂
    ③使用git push提交数据

    四、本的工厂不存在,远程工厂没有初始化

    fac用来模拟远程工厂未已经行初始化
    ①本地工厂不存在和远程工厂没有初始化
    ②当时用git clone https://github.com/yngy2016/fac时会报错代码如下:

    Cloning into 'fac'...
    warning: You appear to have cloned an empty repository.
    
    ③要先在本地工厂建立第一个版本
    F:\git>cd fac
    
    F:\git\fac>git add .
    
    F:\git\fac>git st
    A  fac.txt
    
    F:\git\fac>git co -m "fac.txt"
    [master (root-commit) 547f031] fac.txt
     1 file changed, 9 insertions(+)
     create mode 100644 fac.txt
    
    F:\git\fac>git push
    Counting objects: 3, done.
    Delta compression using up to 4 threads.
    Compressing objects: 100% (2/2), done.
    Writing objects: 100% (3/3), 468 bytes | 0 bytes/s, done.
    Total 3 (delta 0), reused 0 (delta 0)
    To https://github.com/yngy2016/fac
     * [new branch]      master -> master
    

    相关文章

      网友评论

          本文标题: 远程工厂与本地工厂的关联

          本文链接:https://www.haomeiwen.com/subject/fafpzttx.html