git远程仓库小记

德瑜
• 阅读 1899

Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。怎么分布呢?

好在这个世界上有个叫GitHub的神奇的网站,从名字就可以看出,这个网站就是提供Git仓库托管服务的,所以,只要注册一个GitHub账号,就可以免费获得Git远程仓库。

由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,目的(为了确保数据传输的可靠性,因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的),如果你不配置相关命令,则每次本地仓库和远程仓库提交时,都需要验证密码,为了方便,所以,需要一点设置:

git设置免密码登录,生成ssh秘钥命令

创建SSH Key

ssh-keygen -t rsa -C “<email>”

步骤1:命令输入完成后,一直回车。会在本地生成一个.ssh文件,打开该文件会看到默认保存位置当前 ~/.ssh/id_rsa(私密) 和id_rsa.pub(公密),将生成的公密用记事本打开,并复制。

步骤2:把id_rsa.pub里的复制内容添加到github的ssh keys里,一定不能有空格在密钥里面。
如下图:

git远程仓库小记

“Add Key”,你就应该看到已经添加的Key:

git远程仓库小记

点“New SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容

测试连通性

在git Bash 中输入以下代码

$ ssh -T git@github.com

当你输入以上代码时,会有一段警告代码,如:

The authenticity of host 'github.com (192.30.255.112)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)?

这是正常的,你输入 yes 回车既可。如果你创建 SSH key 的时候设置了密码,接下来就会提示你输入密码,如:

Enter passphrase for key '/home/jeremy/.ssh/id_rsa':

当然如果你密码输错了,会再要求你输入,直到对了为止。

密码正确后你会看到下面这段话,如:

Hi username! You've successfully authenticated, but GitHub does not provide shell access.

如果用户名是正确的,你已经成功设置SSH密钥。如果你看到 “access denied” ,则表示拒绝访问,那么你就需要使用 https 去访问,而不是 SSH 。

可以参考网站:

git使用以及免密码登陆

解决每次push代码到github都需要输入用户名和密码的方法

git-ssh 配置和使用

注意事项:在GitHub上免费托管的Git仓库,任何人都可以看到喔(但只有你自己才能改)。所以,不要把敏感信息放进去,造成信息泄露。如果你不想让别人看到Git库,有两个办法,一是:让GitHub把公开的仓库变成私有的,这样别人就看不见了(不可读更不可写)。另一个办法是自己动手,搭一个Git服务器,因为是你自己的Git服务器,所以别人也是看不见的。

 添加远程仓库(git remote)

现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举多得。

首先,登陆GitHub,然后,在右上角找到“New repository”按钮,创建一个新的仓库:

git远程仓库小记

在Repository name填入studygit,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库:

git远程仓库小记

根据GitHub的提示,在本地的studygit仓库下运行命令

(1)将远程项目和本地项目进行关联

$ git remote add origin + 分支地址 //origin是远程库的名字,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库

(2).第一次推送master分支的所有内容到远程仓库

$ git push -u origin master   //第一次提交需要这么做,第二次提交就可以直接用`git push origin master`或者 `git push `

把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

推送成功后,可以立刻在GitHub页面中看到远程库的内容已经和本地一模一样

从远程库克隆(git clone)

使用 git clone 拷贝一个 Git 仓库到本地,让自己能够查看该项目,或者进行修改。

如果你需要与他人合作一个项目,或者想要复制一个项目,看看代码,你就可以克隆那个项目。 执行命令:

 git clone [url]   //[url] 为你想要复制的项目
 

克隆完成后,在当前目录下会生成一个新 目录,即会远程的目录名称。
*注意事项*:
要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。另外,Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。

Git 分支管理

几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。

有人把 Git 的分支模型称为必杀技特性,而正是因为它,将 Git 从版本控制系统家族里区分出来。

创建分支命令:

git branch 分支名称

切换分支命令:

git checkout (branchname)

当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录。

创建并切换分支

git checkout命令加上-b参数表示创建并切换

git checkout -b + 分支名称
相当于以下两条命令
git branch 分支名称
git checkout (branchname)

列出分支基本命令:

git branch

没有参数时,git branch 会列出你在本地的分支,默认是master。

$ git branch
* master //意思是:有一个叫做 master 的分支,并且该分支是当前分支

如果需要查看每一个分支的最后一次提交,可以运行 git branch -v 命令:

如果我们要手动创建一个分支。执行 git branch (branchname) 即可。

$ git branch A  //A为分支名称
$ git branch
* master
  A

现在我们可以看到,有了一个新分支 A。

当你以此方式在上次提交更新之后创建了新分支,如果后来又有更新提交, 然后又切换到了 testing 分支,Git 将还原你的工作目录到你创建分支时候的样子。

使用分支将工作切分开来,从而让我们能够在不同开发环境中做事,并来回切换。

删除分支:

git breach -d 分支名称

例如我们要删除A分支:

$ git branch
* master
A
$ git branch -d A
Deleted branch A (was 85fc7e7).
$ git branch
* master

分支合并:

一旦某分支有了独立内容,你终究会希望将它合并回到你的主分支。 你可以使用以下命令将任何分支合并到当前分支中去:

git merge

切换回master分支后,把A分支的工作成果合并到master分支上:

$ git merge A

合并完后就可以删除分支:

$ git branch -d  A 

如果真的想要删除分支并丢掉那些工作,如同帮助信息里所指出的,可以使用 -D 选项强制删除它。

Git鼓励大量使用分支:



查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>
强制删除分支:git branch -D <name>

解决分支合并的冲突:

如果master分支和A分支各自都分别有新的提交,这种情况下,Git无法执行“快速合并”,只能试图把各自的修改合并起来,但这种合并就可能会有冲突,

Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容
再提交:

$ git add gitnote.txt 
$ git commit -m "conflict fixed"
[master cf810e4] conflict fixed

注意
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。

解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。

用git log --graph命令可以看到分支合并图。

多人协作:

当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin。

要查看远程库的信息,用git remote

$ git remote
origin

或者,用git remote -v显示更详细的信息:

$ git remote -v
origin  git@github.com:michaelliao/learngit.git (fetch)
origin  git@github.com:michaelliao/learngit.git (push)

上面显示了可以抓取和推送的origin的地址。如果没有推送权限,就看不到push的地址。

推送分支:

推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:

$ git push origin master

如果要推送其他分支,比如dev,就改成:

$ git push origin dev

创建远程origin的dev分支到本地,于:

$ git checkout -b dev origin/dev

多人协作的工作模式通常是这样:

首先,可以试图用git push origin <branch-name>推送自己的修改;

如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;

如果合并有冲突,则解决冲突,并在本地提交;

没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!

如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>。

这就是多人协作的工作模式,一旦熟悉了,就非常简单。

本人小白程序员,初来乍到,请多关照

点赞
收藏
评论区
推荐文章
皮卡皮卡皮 皮卡皮卡皮
4年前
git 本地代码提交到远程仓库
git将本地代码添加到远程仓库1.本地初始化使用gitinit进行初始化可以使用lsa就可以看到.git文件2.创建远程仓库点击复制仓库地址3.连接远程仓库shellgitremoteaddoriginhttps://gitee.com/test/test.git4.将远程仓库的文件pull到本地gitpullrebase
菜园前端 菜园前端
2年前
Gitee创建仓库使用指南来喽!
原文链接:gitee基于Git的代码托管和研发协作平台。这个是我们国内通用的代码管理仓库,除此之外还有比较火的国外的代码管理仓库Github。国内用户访问Github网络不太稳定,所以我这边先用国内的进行讲解。gitee官方地址创建git仓库1.登录账号后
Stella981 Stella981
3年前
Git下载GitHub仓库里的某一个文件夹或某一个文件
从Github上下载github上的整个项目,可以用下面指令:gitclonehttps://github.com/XXX/xxxxx.git其中:XXX是用户在Github上的用户名         xxxxx.git是用户在Github上的仓库名那如果只是想下载用户在Github上仓库里的某一个文件夹,怎么办呢?没有直接的Git
Wesley13 Wesley13
3年前
GIT命令大全
Git命令大全Git最小配置某账号下所有的Git仓库都有效gitconfigglobaluser.name'您的名称'gitconfigglobaluser.email'您的Email'只对当前Git仓库有效gitconf
Stella981 Stella981
3年前
Github远程仓库提交代码步骤
1.克隆远程仓库1)当没有设置默认目录时gitclone仓库地址本地存放目录//没有目录的情况2)当设置了本地存放目录时先打开路径,命令:cdpath1.初始化git创建git仓库:gitinit查看文件目录: gitstatus
Stella981 Stella981
3年前
Git 单机版
Git是一个分布式的开源版本控制系统,也就是说,每台机器都可以充当控制中心,我从本机拉取代码,再提交代码到本机,不需要依赖网络,各自开发各自的如何创建git仓库:root@localhost~$yuminstallygit安装gitroot@localhost~$mkdirp/data
Stella981 Stella981
3年前
Git连接GitLab远程仓库
1、简介远程仓库是指托管在网络上的项目仓库,现在互联网上有很多项目托管平台,比如github、gitlab等。为了不公开自己项目代码,可以在自己的服务器上搭建自己的项目仓库,最常见的是搭建GitLab。本地Git与远端服务器GitLab之间连接方式主要分为:SSH方式和HTTP方式。HTTP方式:这种方式要求project在创建的时候只
Wesley13 Wesley13
3年前
Ubutun 16.04安装git服务器
GitHub就是一个免费托管开源代码的远程仓库。既不想公开源代码,又舍不得给GitHub交保护费,那就只能自己搭建一台Git服务器作为私有仓库使用。本文演示如何使用Ubutun16.04搭建一台git服务器。搭建之前建议先aptgetupdate一下,可以避免一些错误。安装并配置gitsudoaptgeti
Stella981 Stella981
3年前
Android Studio版本控制
Git简介Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。特点:分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(gitclone),在本地机器上拷贝一个完整的Git仓库。下图是经典的git开发过程。!磨砺营(https://static.oschina.net/uploads/im
Stella981 Stella981
3年前
Git Analyze 工具实现与原理
前言作为一个免费提供私有仓库的代码托管平台,码云时常要考虑利用现有的资源支持更多的用户,对于体积较大的存存储库,由于git的分布式特性,服务器往往需要更多的硬件资源来支撑这些存储库的访问。码云对git仓库的大小限制为1GB,用户在本地可以使用如下命令查看存储库的大小。dush.git/objects这个命令在Gi
Stella981 Stella981
3年前
GitFlow原理浅析
一、Git优点分布式存储,本地仓库包含了远程仓库的所有内容.安全性高,远程仓库文件丢失了也不怕优秀的分支模型,创建/合并分支非常的方便方便快速,由于代码本地都有存储,所以从远程拉取和分支合并时都非常快捷当分支过多时,如何管理这些分支呢?我们团队采用了GitFlow的模式