git的使用-网络篇

目录

1.SSH加密设置

1.1 生成本地秘钥

1.2 github认证

2  创建并选择远程仓库

3 github管理代码

3.1 代码上传

3.2 代码下载

4 分支管理

4.1 创建分支

4.2 合并分支

扫描二维码关注公众号,回复: 10061482 查看本文章

后记:代码整合 

 


git是分布式版本管理软件,可以在本地操作,也可以在网络操作。但是如果要进行协作,最后肯定要是在网络进行的。在这里我们利用全球最大的git版本管理网站github为例,介绍一下git在网络上的应用。

1.SSH加密设置

github不是谁都可以上传代码,必须通过一定的认证才可以上传。这样也可以理解,不然阿猫阿狗也给你上传代码了。而这个认证,就是SSH加密传输,因此需要先做一些设置。

1.1 生成本地秘钥

ssh-keygen -t rsa -C “注册 github 的邮箱”

我们可以看到红色框的文件,前往相应的目录中打开该文件

可以注意最后有邮箱地址

1.2 github认证

在gihub.com中,选择

github.com -> 用户 -> setting -> SSH and GPG keys -> New SSH keys

然后把那堆文字粘贴到Key框里,最后在Title上输入自己电脑的名字(尽量不要随便取名字)

然后就可以看到自己的电脑SSH Key已经上传到github了

完成了以上操作,说明你的远程github账号,允许了生成SSH Key的电脑访问,也就是可以上传代码到github了。

2  创建并选择远程仓库

创建远程仓库非常简单,只需要在github页面中找到new repository,写个名字就可以了,如创建了以下的仓库

https://github.com/aimxu/testgit

这里面的aimxu指的是用户名,testgit指的是远程仓库的名字,是不是很简单明了?

 

进入远程仓库,就可以看到大概这样的页面,选择红色框,红色框就是这个repo的地址,有两种地址

 

[email protected]:aimxu/testgit.git         # ssh方式
https://github.com/aimxu/testgit.git     # https方式

两种方式都可以,这里用ssh方式,下同

https方法有点麻烦,总是会提示输入用户名密码

3 github管理代码

终于到了这一步了,终于可以使用github来管理代码了

3.1 代码上传

在上传代码之前,必须先建立一个上传的连接

git remote add origin [email protected]:aimxu/testgit.git

这里的意思是添加了一个名字叫origin(约定俗成)连接,连接到git@//github.com:aimxu/testgit.git

后面的地址就是从上一步获得地址,这里使用的SSH方式的地址

开始上传

git push -u origin master

-u 用了这个参数,以后push就不用带后面那堆东西了

origin 表示连接的名称,要跟上一条命令对应

master表示分支

wait,分支?是的后面会讲到什么是分支

此时可以看到

再看看github

多了一个hello.c文件,多了一些commit,表示我们成功上传了。

3.2 代码下载

想要下载代码,可以直接用git pull命令,该命令是把远程仓库中的代码下载到本地仓库

git pull

4 分支管理

分支管理不是远程仓库特有的,本地仓库也可以用分支

什么是分支?分支就是git用来解决进行多人远程协作的办法(其实基本所有的版本管理软件都是这样的)

从上面的图可以看出,我们创建仓库的时候有一个主线master。这条线是最稳定的最主要的。一般不要随便修改,如果有人想修改其中一个部分,可能就要使用到分支管理了,等到调试完成,再把它合并到master里

4.1 创建分支

好,事不宜迟,我们试一下吧,假设我们现在觉的 hello world 太简单,想加一些功能,比如加一个加法功能,我们可以这样做

首先创建一个分支,创建分支的方法有很多,例如checkout、switch、branch等,我们在这里统一使用switch

git switch -c feature1

创建名字叫 feature1 的分支

-c  表示创建 create的意思

再调用git branch可以看到分支情况

git branch

 绿色,前面有*的表示当前使用的分支,还可以看后面的蓝色的(feature) 

这样,就不会影响到master 

接着添加内容,注意这时候是添加到 feature1 分支,而不是master。

git status
git add .
git commit -m "add plus calculation"

可以看到,这时候 feature1 分支内容是多了 add plus 的记录的

4.2 合并分支

如果觉得改得差不多,可以合并分支,把 feature1 的内容合并到master中

但是首先先要切换到master分支,然后再合并,如果feature1的工作已经全部完成,还可以删除分支。

git switch master
git merge feature1
git branch -d feature1 
git branch

这时候再看一下分支的情况,只剩下master一个分支了。

详细流程可以看这几幅图(来自廖雪峰个人网站,创建与合并分支

(1)只有一个分支master

(2)创建新的分支dev

(3)dev分支添加新的内容

(4)把dev合并到master并删除dev

最后可以把它push上去

git push

 可以看到新的代码也已经上传到远程仓库了

后记:代码整合 

在第一次push代码的时候,可怕的的事情还是发生了(一堆乱七八糟的英语,还有红颜色!肯定不是什么好事)

 

为什么会出现上面的error,我们仔细读一下,大概的意思是

远程仓库上包含本地没有的东西,有可能是其他人上传了新的代码,现在要我们先整合(integrate)远程跟当地的代码。

这里面叫我们用,git pull 试一下

原来是这样,还要先 pull(拉)一下

但是在 pull 之前我们必须要先了解这个 pull 的含义,pull包含两个动作

git fetch     # 从远程仓库中提取代码
git merge     # 把提取的代码跟本地的代码整合在一起

我们使用 fetch 提取远程代码

git fetch

然后再利用diff查看有什么不同

git diff HEAD FETCH_HEAD

diff 感觉是很久远的东西了

 HEAD 表示的是当前本地最新代码

FETCH_HEAD 表示刚在github下载的代码

从图中可以看出,远程代码多了一个叫做 README 的文件(绿色)

本地代码比远程代码多了hello.c文件(红色)

再比较一下github和本地

github内容
本地内容

如果觉得两个文件都是要的,那我们就可以merge了

git merge origin/master

但是出现了上面的问题。这是一般直接使用pull命令

git pull origin master --allow-unrelated-histories

--allow-unrelated-histories 参数允许把两段不相干的分支强行合并

或者还可以这样

开始初始化仓库的时候,就直接先clone远程代码

git init
git clone [email protected]:aimxu/testgit.git

这样就不会产生以上的问题了

发布了6 篇原创文章 · 获赞 0 · 访问量 192

猜你喜欢

转载自blog.csdn.net/aimxu/article/details/104913716
今日推荐