Github(gitee)实现远程仓库
Github(gitee)实现远程仓库
Github(gitee)新建仓库
方法一:基于Http协议
- 创建一个空目录
//创建目录
# 创建空目录
$ mkdir test_git
#进入目录
$ cd test_git/
- 复制Github上的地址
- 使用clone指令克隆线上仓库到本地:git clone 线上仓库地址
$ git clone 地址
Cloning into 'test1'...
fatal: unable to access 'https://github.com/Zany555/test1.git/': OpenSSL SSL_read: Connection was reset, errno 10054
- 这里出现乐错误10054,经过查阅了解到应该是远程服务器的问题,访问国外的网站经常超时,我用gitee(码云)试了下没有问题。
$ git clone https://gitee.com/zany555/git-test.git
Cloning into 'git-test'...
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (4/4), 1.41 KiB | 7.00 KiB/s, done.
- 对仓库进行操作(提交缓存区、提交本地仓库、提交至线上仓库、拉取线上仓库)
# 提交缓存区:
$ git add test.txt
#提交本地仓库
$ git commit -m "提交第一个测试文件"
[master 46d1e3a] 鎻愪氦绗竴涓祴璇曟枃浠? 1 file changed, 1 insertion(+)
create mode 100644 test.txt
- 提交至线上仓库:在首次向线上提交内容时会出现403的错误,原因是没有权限。
- 修改配置文件:.git/config
- 再次使用git push就能提交成功了
$ git push
#显示结果
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 362 bytes | 362.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-5.0]
To https://gitee.com/zany555/git-test.git
9fa24b7..46d1e3a master -> master
- 拉取线上仓库:git pull
$ git pull
#显示结果
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 290 bytes | 1024 bytes/s, done.
From https://gitee.com/zany555/git-test
46d1e3a..362c544 master -> origin/master
Updating 46d1e3a..362c544
Fast-forward
test2.txt | 1 +
1 file changed, 1 insertion(+)
create mode 100644 test2.txt
注:在工作时的第一件事是git pull,工作最后要git push
方法二:基于SSH协议(推荐)
-
此方法与方法一不同就在于验证方式的不同。
步骤:生成客户端公私钥文件->将公钥上传到代码托管平台(GitHub) -
生成客户端公私钥文件:(需要安装OpenSSH)
$ ssh-keygen -t rsa -C "注册邮箱"
- 将公钥上传到代码托管平台(GitHub)
- 找到执行代码后显示内容中的路径,用记事本打开并复制
- 在Github的进行设置
- 配置好后就可以直接执行命令$ git clone 地址(在需要输入时,输入yes再回车,如果直接回车会报错
Host key verification failed.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.)
$ git clone ssh地址
Cloning into 'test1'...
The authenticity of host 'github.com (13.250.177.223)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'github.com,13.250.177.223' (RSA) to the list of known hosts.
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.
- 之后就和方法一相同(不需要配置用户名和密码)。
分支管理
项目需要区分模块,每个模块进行同步开发,所以我们需要分支。
master为主分支。
分支相关指令:
- 查看分支:git branch
$ git branch
#内容
* main
注:当前分支由*符号
- 创建分支:git branch 分支名
$ git branch dev
$ git branch
#执行结果
dev
* main
- 切换分支:git checkout 分支名(git checkout -b 分支名:先创建分支再切换到分支 )
$ git checkout dev
Switched to branch 'dev'
- 合并分支:git merge 被合并的分支名
#在dev分支下创建文件,并提交
$ git add dev.txt
$ git commit -m "新增dev文件"
#执行结果
[dev 6d16abc] 鏂板dev鏂囦欢
1 file changed, 1 insertion(+)
create mode 100644 dev.txt
#切换到main分支下查看dev文件,发现文件没有了
$ git checkout main
#执行结果
Switched to branch 'main'
Your branch is up to date with 'origin/main'.
#在main分支下,将dev的内容合并,执行后就能看到dev分支下的文件
$ git merge dev
#执行结果
Updating f38093b..6d16abc
Fast-forward
dev.txt | 1 +
1 file changed, 1 insertion(+)
create mode 100644 dev.txt
- 删除分支:git branch -d 分支名(先退出再删除)
$ git branch -d dev
#执行结果
Deleted branch dev (was 6d16abc).
$ git branch
#执行结果
* main
注:以上分支操作均为本地操作,如果需要提交到远程仓库直接push就行。
问题:在新创建的分支进行push的时候回报错,原因是远程仓库并没有此分支所以无法push。
$ git push
#执行结果
fatal: The current branch dev has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin dev
解决方法:$ git push -u origin 分支名
$ git push -u origin dev
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 359 bytes | 359.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote:
remote: Create a pull request for 'dev' on GitHub by visiting:
remote: https://github.com/Zany555/test1/pull/new/dev
remote:
To github.com:Zany555/test1.git
* [new branch] dev -> dev
Branch 'dev' set up to track remote branch 'dev' from 'origin'.
冲突
冲突的产生
- 当一个分支dev修改后push,另一个分支main没有pull直接修改了文件,修改后push会报错不会成功。此时push就会产生冲突。
解决冲突
- git pull 拉取文件,git会发现冲突自动进行合并。
- 两个分支(dev和main)进行商量,文件如何保留,由main重新提交commit 然后push上传。