1.1 Gitee实战
1.1.1 新建Gitee仓库上传代码
- 首先,需要注册Gitee账号,并创建远程仓库,然后再执行如下命令,将代码上传到GitHub.
开源许可证:
- 然后,我们在本地库上使用命令 git remote add 把它和 Gitee 的远程库关联:
对于没有本地库的小伙伴可以安装好Git工具(详见:https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git)
在本地选择一个文件夹,右键 》 Git Bash Here 进入指令窗口。
使用git init初始化本地库:$ git init # 初始化本地git库生成.git版本管理文件。
注意:记住所有的git指令都必须在含有.git(隐藏文件)的文件夹下执行,否则git指令会无效。
一般步骤(创建Gitee仓库时没有文件):
$ git remote add 仓库别名 仓库的https地址
$ git push 仓库别名 分支名
对于创建仓库时有文件且有多个分支时:
$ git remote add 仓库别名 仓库的https地址 # 给仓库起别名
$ git pull 仓库别名 分支名 --allow-unrelated-histories # 由于仓库存在文件需要先push分支然后再拉代码,--allow...表示强制合并分支,对于多个分支适用。
$ git push 仓库别名 分支名 # 将本地库发送到gitee的仓库,第一次一般需要登录。
之后,就可以正常地用 git push 和 git pull 推送了!
如果连接时登录失败可以删除git 认证账户,重新remote :
如果在使用命令 git remote add 时报错:
$ git remote add origin git@gitee.com:imnoob/runoob-test.git
fatal: remote origin already exists.
这说明本地库已经关联了一个名叫 origin 的远程库,此时,可以先用 git remote -v 查看远程库信息:
$ git remote -v
origin git@github.com:tianqixin/runoob.git (fetch)
origin git@github.com:tianqixin/runoob.git (push)
可以看到,本地库已经关联了 origin 的远程库,并且,该远程库指向 GitHub。
我们可以删除已有的 GitHub 远程库:
$ git remote rm origin
再关联 Gitee 的远程库(注意路径中需要填写正确的用户名):
$ git remote add origin git@gitee.com:imnoob/runoob-test.git
此时,我们再查看远程库信息:
$ git remote -v
origin git@gitee.com:imnoob/runoob-test.git (fetch)
origin git@gitee.com:imnoob/runoob-test.git (push)
现在可以看到,origin 已经被关联到 Gitee 的远程库了。
通过 git push 命令就可以把本地库推送到 Gitee 上。
有的小伙伴又要问了,一个本地库能不能既关联 GitHub,又关联 Gitee 呢?
答案是肯定的,因为 git 本身是分布式版本控制系统,可以同步到另外一个远程库,当然也可以同步到另外两个远程库。
使用多个远程库时,我们要注意,git 给远程库起的默认名称是 origin,如果有多个远程库,我们需要用不同的名称来标识不同的远程库。
仍然以 runoob-test 本地库为例,我们先删除已关联的名为 origin 的远程库:
$ git remote rm origin
然后,先关联 GitHub 的远程库:
$ git remote add github git@github.com:tianqixin/runoob-git-test.git
注意,远程库的名称叫 github,不叫 origin 了。
接着,再关联 Gitee 的远程库:
$ git remote add gitee git@gitee.com:imnoob/runoob-test.git
同样注意,远程库的名称叫 gitee,不叫 origin。
现在,我们用 git remote -v 查看远程库信息,可以看到两个远程库:
$ git remote -v
gitee git@gitee.com:imnoob/runoob-test.git (fetch)
gitee git@gitee.com:imnoob/runoob-test.git (push)
github git@github.com:tianqixin/runoob.git (fetch)
github git@github.com:tianqixin/runoob.git (push)
如果要推送到 GitHub,使用命令:
git push 远程库的别名 分支名
git push 远程主机名 本地分支名:远程分支名
例:
$ git push github master
如果要推送到 Gitee,使用命令:
$ git push gitee master
这样一来,我们的本地库就可以同时与多个远程库互相同步:
1.1.2 新电脑初次工作
- 克隆远程仓库代码
$ git remote add 远程仓库别名 仓库的https地址 # 给远程仓库起别名
$ git clone 远程仓库的https地址 # 将远程仓库克隆到本地。
如果在没有.git管理文件的文件夹下克隆Git仓库后,需要切换到下一级文件夹(即含有.git管理文件的文件夹下继续执行git指令。)
- 切换到dev分支准备工作
$ git checkout dev
-
在公司下载完代码后,继续开发。在dev分支开发完成之后需要commit 到本地库保持进度的更新
$ git commit -a -m 'dev分支第一次开发完成'
-
准备递交代码到Gitee上
$ git pull 远程仓库别名 dev # 在提交到gitee上之前pull一下最新的代码,防止之前有人提交过dev分支的代码,导致自己push不上去 修改完合并后的代码 $ git commit -a -m 'dev分支第一次开发完成' # 提交dev分支代码到本地库 $ git push 远程仓库别名 dev # 将本地库master分支的代码推送到gitee仓库中
1.1.3 第二天上班
-
切换到dev分支准备工作
$ git checkout dev
-
拉代码
$ git pull 远程仓库别名 dev
-
继续开发
-
提交代码到Gitee上
$ git pull 远程仓库别名 dev # 在提交到gitee上之前pull一下最新的代码,防止之前有人提交过dev分支的代码,导致自己push不上去 修改完合并后的代码 $ git commit -a -m 'dev分支第一次开发完成' # 提交dev分支代码到本地库 $ git push 远程仓库别名 dev # 将本地库master分支的代码推送到gitee仓库中
1.1.4 开发完毕准备上线到主分支
-
将本地库的dev分支合并到master分支,并将master分支推送到Gitee上
$ git commit -a -m 'dev分支的功能开发完成' # 提交dev分支代码到本地库 $ git checkout master # 从dev分支切换到master分支,dev开发的文件都会消失,所以需要提前在dev分支上commit。记住所有的checkout之前一定要commit(等价于Ctrl+s)代码,防止代码丢失。 $ git merge dev # 在master分支上合并dev分支,合并完成后需要自行解决冲突 $ git pull 远程仓库别名 master # 在提交到gitee上之前pull一下最新的代码,防止之前有人提交过master分支的代码,导致自己push不上去 修改完合并后的代码 $ git commit -a -m 'merge分支开发完成' # 提交merge分支代码到本地库 $ git push 远程仓库别名 master # 将本地库master分支的代码推送到gitee仓库中
-
把dev分支也推送到远程
$ git checkout dev # 从master分支切换到dev分支,此处紧跟上步操作,刚刚commit了master分支,所以此处可以不commit。 $ git merge master # 在dev分支上合并master分支,因为需要保持master与dev分支的同步,所以在两个分支上都需要分别做merge操作。 $ git pull 远程仓库别名 dev # 在提交到gitee上之前pull一下最新的代码,防止之前有人提交过master分支的代码,导致自己push不上去 修改完合并后的代码 $ git commit -a -m 'dev分支开发完成' # 提交dev分支代码到本地库 $ git push 远程仓库别名 dev # 将本地库dev分支的代码推送到gitee仓库中