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
网友评论