Git学习笔记(三)远程库(GitHub)协同开发,fork和忽略特殊文件

远程库

  远程库,通俗的讲就是不再本地的git仓库!他的工作方式和我们本地的一样,但是要使用他就需要先建立连接!
  远程库有两种,一个是自己搭建的git服务器;另一种就是使用GitHub,这个网站就是提供Git仓库托管服务的,所以,只要注册一个GitHub账号,就可以免费获得Git远程仓库。友情提示:在GitHub上免费托管的Git仓库,任何人都可以看到喔(但只有你自己才能改)。所以,不要把敏感信息放进去。
  远程仓库的好处:
  1、我们可以随时随地的与仓库建立连接,以实时存放我们开发的内容;
  2、与他人实现协同开发,而不是再需要来回的发送修改过的代码由他人整合在一起,git自动的帮我们完成了更新,这是最重要的也是无可比拟的!
  3、只要你不把提交到本地仓库中的代码提交到远程库,那么别人一辈子也休想看到你的代码!

一、创建远程仓库(GitHub)

1、GitHub网站地址:https://github.com/,这个网站就是提供Git仓库托管服务的,所以,只要注册一个GitHub账号,就可以免费获得Git远程仓库。

2、由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要如下设置:

  第1步:创建SSH Key。在用户主目录下(例如:C:\Users\Administrator\),看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:

ssh-keygen.exe //创建SSH key 【公钥和私钥,连接省却了用户名密码的输入】git窗口下,直接执行ssh-keygen.exe,默认往下执行,然后把公钥复制到github上

  如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
  第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面,然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容,最后点击“Add Key”按钮完成。
  说明:为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。当然,GitHub允许你添加多个Key。
  假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。

二、添加远程库:

1、登录GitHub网站,并按网站要求创建一个新的仓库;

2、根据GitHub网站提示,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。

3、本地仓库与GitHub上相应的仓库建立关联,代码如下:([email protected]:zh605929205/LearnGit.git为我新建的仓库路径)

$ git remote add origin [email protected]:zh605929205/LearnGit.git

  添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。

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

$ git push -u origin master

  由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令(不用带-u参数)。当然也可以不写!就需要你手动输入yes
  当你第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告,这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。

5、通过GitHub上的仓库来克隆出新的本地仓库(可以在任意一个文件夹下,建议最好在一个固定的盘下方便于管理),要克隆一个仓库,首先必须知道仓库的地址,然后使用 git clone命令克隆从远程库克隆到本地(说白了就是下载版本库)。代码如下:

$ git clone [email protected]:zh605929205/LearnGit.git	//应用场景:切换办公地点:家和公司,第一次都能从远程库上克隆然后进行开发!

  也许还注意到,GitHub给出的地址不止一个,还可以用 https://github.com/zh605929205/LearnGit.git 这样的地址。实际上,Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https。Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。

三、本地与远程库协同开发

1、查看远程库:

$ git remote
$ git remote -v //加上-v参数可以查看详细信息 ----> 显示了可以抓取和推送的origin的地址。如果没有推送权限,就看不到push的地址。

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

语法:$ git push origin 分支名
$ git push origin master // $ git push origin dev

  但是,并不是一定要把本地分支往远程推送,那么,哪些分支需要推送,哪些不需要呢?

    master分支是主分支,因此要时刻与远程同步;

    dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;

    bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;

  总之,就是在Git中,分支完全可以在本地自己藏着玩,是否推送,视你的心情而定!

3、若是有多个分支,创建远程origin的dev分支到本地,需要创建本地分支并关联远程分支:

语法:$ git checkout -b 分支名 origin/分支名 //origin/dev为远程分支路径
$ git checkout -b dev origin/dev$ git branch --set-upstream 分支名 origin/分支名 //若本地已有分支,可通过该命令来关联远程分支

4、从远程库中拉下分支新版本,用以更新本地库:

$ git pull origin 分支名

5、远程库推送解决冲突:

  多人协同开发,向远程推送提交时产生冲突【实质就是提交快慢的问题】,则需先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送,如下:

$ git pull //从远程获取分支
$ git commit -m "marge files" //本地更新合并
$ git push origin dev //推送提交到远程分支

  注意:如果你在公司开发某段代码而忘记推送到远程库,别人又开发了别的功能并推送到远程库(此时远程库的版本已经与你本地库版本不一致),遇到这种情况,一定要记住先把远程库中对应的分支拉下来,然后再本地提交到版本库后,再重新推送到远程库!而且每次遇到解决冲突或是版本不一致的情况,一定要先看看是谁上一次做的操作,推送前一定要与其沟通!以免推送出错!

因此,多人协作的工作模式通常是这样:
  首先,可以试图用git push origin branch-name推送自己的修改;
  如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
  如果合并有冲突,则解决冲突,并在本地提交;
  没有冲突或者解决掉冲突后,再用 git push origin branch-name 推送就能成功!
  如果git pull 提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name 关联远程分支。

6、远程库的操作都是先克隆或是把程序拉到本地,然后在本地对代码进行修改,然后更新到本地版本库,再推送到远程库!这里边儿肯定是会涉及到分支的问题,在上一文中已经详细的说明了分支的操作!具体按照流程来即可!

协同开发

  1个远程库,多个人员使用,同时对某个业务线进行开发!

  既然要实现协同开发,那么一个人铁定是不行的。就需要创建组织,然后再对这个组件进行管理添加成员,点进去这个库,在people栏下点击邀请开发人员!发送邀请的同时可以对这个开发人员进行权限分配,以限制其都能有什么权限!

  注意:非组织成员是不允许对这个仓库进行操作的!

  协同开发的时候,共同使用一个项目,当需要对这个远程库提交的时候,一定是先进行拉取操作,然后再提交!否则就会因为版本库内代码不一致的问题导致报错或是紊乱!

  两人未沟通的情况下同时提交代码到远程库,肯定是得取决于谁提交的快谁会提交到远程库!提交慢的人会被拒绝,就是因为慢的原因!所以如果遇到这种被拒绝的情况,不用惊慌,你先把远程库的代码拉取下来,然后你再提交一次就OK了!【注意:解决冲突的时候,一定要先与上一个提交的人先沟通!】

奉上一张相关错误截图,借用的老师的图片,当遇到这个问题时,一定是版本冲突的问题!把远程库的代码拉下来,重新提交就OK!

四、参与开源项目 fork

1、首先你自己必需要有GitHub账号并已登录成功。

2、找到指定的开源项目GitHub地址,例如:

3、点击图上的Fork按钮,会在自己账号下克隆一个相同的仓库,例如:

4、使用git clone命令克隆到本地仓库,如:

$ git clone [email protected]:wheeky/learngit.git

5、在本地进行相应的操作,比如新增了一个文件(CTextBox.cs):

$ git add CTextBox.cs
$ git commit -m ‘add CTextBox.cs‘

6、使用git push命令推送更新到远程仓库:

$ git push origin master

此时远程仓库就可以看到相应的更新(红色框内显示最后提交的信息),如图:

7、创建pull request请求,向开源项目的作者发送更新请求,如下列图示:

  点击“New pull request”按钮,并在随后的页面里填写相应的标题、备注说明等信息提交即可,剩下的就是等原作者的处理。若提交成功可在作者的开源项目的Pull requests中可以看到自己请求记录,如下:

五、忽略特殊文件

  在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去(按照规则填写),Git就会自动忽略这些类型的文件。不需要从头写.gitignore文件,GitHub已经为我们准备了所有语言的各种配置文件,只需要找到python的文件,组合一下就可以使用了。所有配置文件可以直接在线浏览https://github.com/github/gitignore

  注意:.gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!

时间: 2024-12-24 13:23:41

Git学习笔记(三)远程库(GitHub)协同开发,fork和忽略特殊文件的相关文章

【版本控制】git学习笔记(三)

接着git学习笔记(二)学习,今天学习下git分支管理. 1.创建合并分支 默认创建的git目录只有master一个分支,现在我们创建dev分支,然后切换到dev分支: $ git checkout -b dev git checkout命令加上-b参数表示创建并切换,相当于以下两条命令: $ git branch dev $ git checkout dev 然后,用git branch命令查看当前分支: git branch命令会列出所有分支,当前分支前面会标一个*号. 然后,我们就可以在d

Git 学习笔记<本地版本库的管理> (二)

今天来记录一下关于版本库的创建与管理的笔记. 版本库是什么? 版本库可以理解为一个仓库(一个可以被git管理的目录),里面文件的修改删除都可以被追踪,并且每个版本都会保存以便还原(仅仅保存修改或删除的文件),于是可以认为保存了各种不同的版本,所以叫版本库. 如何管理? Git给你提供各种不同的指令来管理版本库. 1.创建: 选择一个地方创建一个新文件夹,然后进入这个文件夹(windows中不要出现中文路径) $mkdir LEARNER   //当前目录下新建文件夹 $cd LEARNER //

git学习笔记(一)--什么是GitHub

-Github是未开发者提供Git仓库的托管服务 -github与git的区别 --在git中开发者将源代码存入名叫"git仓库"的资料库中并加以使用.而github则是在网络上提供git仓库的一项服务 -github实现社会化编程 =github上正在开发知名软件 Ruby on Rails  -- https://github.com/rails/rails node.js  https://github.com/joyent/node JQuery  https://github

git学习笔记之远程仓库操作

在本地建立好git仓库之后,怎样将项目发布到远程仓库.步骤如下: 1,首先在https://github.com注册账户: 2,然后创建create repository(建立仓库): 3,给项目添加本地仓库:git remote add origin 'https://github.com/username/repositoryname.git'; 4,将本地项目推送到远程仓库:git push origin master

Git学习笔记(三)

Git提交相关内容 在Git提交时,会保存一个提交对象,该对象包含一个指向暂存区内容快照的指针,包含本次提交作者等相关附属信息,包含零个或多个指向该提交对象的父对象指针:首次提交时是没有祖先,普通提交有一个祖先,由两个或多个分支合并产生的提交则有多个祖先.在使用git commit新建一个提交对象前,Git会先计算每个子目录的校验和,然后在Git仓库中将这些目录保存为树(tree)对象.之后Git创建的提交对象,除了包含相关提交信息,还包含指向这个树对象(项目根目录)的指针,如此,它就可以在将来

Git学习笔记(三)版本回退

学习廖雪峰老师的Git教程的笔记,以供自己以后复习查看. ★★★★★使用 git log 命令可以查看文件改动的日志.(或者添加 --pretty=oneline让每一条返回结果在一行显示) 黄颜色的命令行 commit 后面的十六进制字符串是系统通过SHA1计算得到的 commit id . 在git中 HEAD 表示当前版本.上个版本是 HEAD^ ,再上一个版本是 HEAD^^  --. 当数量很大的时候,用 ~:比如往上数100个版本→HEAD~100. ★★★★★ 版本回退 版本回退命

git 学习笔记三 (windows环境)

分支管理 查看分支 git branch 创建dev分支 git branch <name> 切换到dev分支 git checkout <name> 创建同时切换到新分支 git checkout -b <name> 合并分支 git merge <name> 删除分支 git branch -d <name>

Git 学习笔记&lt;远程仓库与标签管理&gt; (四)

什么是远程仓库? 就像第一章介绍的那样,远程仓库可以储存你编写的所有源码和资源文件. 甚至也可以当网盘使,不过当然有很多契合git管理文本的特性. 下面就要以 github 为示例远程仓库进行介绍.  (也可以自己弄一台服务器作远程仓库). 创建仓库 在主页找到 +New repository 或者右上角的加号里有.输入名字 描述 然后没钱只能public就能确定了.然后呢,点名字打开你的仓库.(主页右下角可以找到) 关于与远程仓库的连接 首先你打开你的保险箱得先证明身份吧,不然我怎么知道你是客

Git 学习笔记&lt;分支管理&gt; (三)

分支是什么? 分支就像树分出的树枝,不同的是,它们之间可以互相合并. 将版本的推进想象成一个链表的伸长:  version 1.0 ==> version 2.0 ==>version3.0  . master是主要的分支基本上用于发布产品.你可以从master分出一个dev,在上面创建新功能,或者修bug然后调试.最后再合并到master里面.就像下面这样. master分支:  version 1.0=========>version 2.0===... \            

Git学习笔记总结和注意事项

一.Git简介 Git是目前世界上最先进的分布式版本控制系统,其特点简单来说就是:高端大气上档次! 二.Windows上Git安装 最早Git是在Linux上开发的,很长一段时间内,Git也只能在Linux和Unix系统上跑.不过,慢慢地有人把它移植到了Windows上.现在,Git可以在Linux.Unix.Mac和Windows这几大平台上正常运行了. msysgit是Windows版的Git,从http://msysgit.github.io/下载,然后按默认选项安装即可.安装完成后,在开