Git入门总结(三)远程仓库——以GitHub为例

1. 初始化本地仓库

参考之前的博客,不再赘述。
在这里插入图片描述

2. 在GitHub上创建仓库

右上角点击加号,new repository:
在这里插入图片描述
输入一些信息:
在这里插入图片描述
点击创建,就进入了这个页面:
在这里插入图片描述
我们找到远程库的地址,我们可以看到,有两种方式 一种是HTTPS的地址,还有一种SSH的地址,我们先用HTTPS的地址:
在这里插入图片描述
将地址复制下来。

以后我们每次提交的时候,都需要用到这个地址,可是每次我们都打这么长一串有点麻烦,所以我们可以在本地将地址保存,然后通过别名来访问。

查看别名:

本地Git,查看所有的远程地址的别名git remote -v

veeja@VeejaPC MINGW64 /e/code/Test (master)
$ git remote -v

我们现在还没有,所以没有输出任何信息。

添加别名:
使用git remote add 别名 地址来添加并查看:

veeja@VeejaPC MINGW64 /e/code/Test (master)
$ git remote add test https://github.com/VeejaLiu/Test.git

veeja@VeejaPC MINGW64 /e/code/Test (master)
$ git remote -v
test    https://github.com/VeejaLiu/Test.git (fetch)
test    https://github.com/VeejaLiu/Test.git (push)

我们看到有两个别名,后面的括号里分别是fetch和push,fetch代表可以从仓库拉取,push代表可以向仓库推送。

3. 推送操作

新建一个文件,添加一些内容:
在这里插入图片描述
add && commit:

veeja@VeejaPC MINGW64 /e/code/Test (master)
$ git add demo.txt

veeja@VeejaPC MINGW64 /e/code/Test (master)
$ git commit -m "add file:demo.txt"
[master (root-commit) 5a98c03] add file:demo.txt
 1 file changed, 1 insertion(+)
 create mode 100644 demo.txt

接下来我们开始往仓库推送:
使用 git push 仓库别名 分支

对应我们这个例子,就是git push test master

如果中途弹出对话框,让我们输入密码,我们就输入自己的GitHub密码即可:
在这里插入图片描述
结果:

veeja@VeejaPC MINGW64 /e/code/Test (master)
$ git push test master
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 220 bytes | 220.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/VeejaLiu/Test.git
 * [new branch]      master -> master

我们返回GitHub刷新一下页面,可以看到,我们推送的demo.txt已经存在与仓库中了:
在这里插入图片描述

4. 克隆操作

上面讲了如何推送的操作,如果我们是团队协作,另一个人可能就需要从仓库拉取代码:

直接在文件夹下面,进行git clone 仓库地址就可以了:
在这里插入图片描述
新出现的文件夹也是有完整的内容的:
在这里插入图片描述
我们进入该文件夹下,查看一下远程仓库的别名:

veeja@VeejaPC MINGW64 /g/code
$ cd Test/

veeja@VeejaPC MINGW64 /g/code/Test (master)
$ git remote -v
origin  https://github.com/VeejaLiu/Test.git (fetch)
origin  https://github.com/VeejaLiu/Test.git (push)

克隆操作帮我们完成了:

  • 初始化本地仓库
  • 将远程库内容完整的克隆到本地
  • 帮我们给仓库起一个别名

5. 抓取操作

我们在另一个本地库里面,新建了一个文件demo2,add 、commit、 push
在这里插入图片描述
我们回到原来的本地库,是还没有修改的:
在这里插入图片描述
我们使用 git fetch 命令来从远程获取代码库。

veeja@VeejaPC MINGW64 /e/code/Test (master)
$ git fetch test master
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 257 bytes | 21.00 KiB/s, done.
From https://github.com/VeejaLiu/Test
 * branch            master     -> FETCH_HEAD
   5a98c03..8ef5107  master     -> test/master

veeja@VeejaPC MINGW64 /e/code/Test (master)
$

抓取操作只是将远程库的内容下载到本地,但是并不会将远程库的内容添加到工作区,我们现在的文件夹下面还是没有新的内容的:
在这里插入图片描述
抓取后,可以去远程库看看内容是否正确:

veeja@VeejaPC MINGW64 /e/code/Test (master)
$ git checkout test/master
Note: switching to 'test/master'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at 8ef5107 add demo2

veeja@VeejaPC MINGW64 /e/code/Test ((8ef5107...))
$ ll
total 2
-rw-r--r-- 1 veeja 197121 57 Jan 29 09:36 demo.txt
-rw-r--r-- 1 veeja 197121 20 Jan 29 10:16 demo2.txt

veeja@VeejaPC MINGW64 /e/code/Test ((8ef5107...))
$ cat demo2.txt
demo2.txtdemo2.txt

veeja@VeejaPC MINGW64 /e/code/Test ((8ef5107...))
$

如果我们发现内容都正确,就可以进行合并操作了。
切换回主分支,并进行合并操作:

veeja@VeejaPC MINGW64 /e/code/Test ((8ef5107...))
$ git checkout master
Previous HEAD position was 8ef5107 add demo2
Switched to branch 'master'

veeja@VeejaPC MINGW64 /e/code/Test (master)
$ git merge test/master
Updating 5a98c03..8ef5107
Fast-forward
 demo2.txt | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 demo2.txt

veeja@VeejaPC MINGW64 /e/code/Test (master)
$

其实拉取的操作可以直接一步完成,就是使用 pull操作,可以理解为 pull操作就等于 fetch + merge操作。

6. 冲突的解决

如果遇到冲突,需要拉取远程代码,然后手动合并代码,再进行add commit操作,重新push到远程仓库。跟本地的冲突合并有些类似,就不再赘述。

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值