git和github的使用
这是关于使用git和github的笔记。
git和github的使用
实际使用补充:
一、本地库和远程库关联(个人使用)
1、本地初始化&创建本地库
模型:
(本地库先有代码,再与远程库关联,上传本地库的代码给远程库,这个是个人使用的常用操作)
首先,创建工作区的文件夹,里面写代码相关;
Bash here-》git init(创建.git文件,也就是本地库)
2、github代码托管,远程库
首先,创建远程库。登录自己的github,并且创建仓库(写名称,描述,readme先不选择)。
此时,官网自己也会告诉你,本地库关联远程库的方法。也附带了远程仓库的地址(HTTPS方式(这里用这个方式),SSH方式(后面知识点有将))。
3、关联本地库和远程库。
由于之前我们已经在本地创建了本地库。
在本地文件夹中,
Bash here ->git remote add origin https://github.com/xinkuiwu/algorithmTraining.git (进行远程地址关联,远程主机名(别名)为origin)
可以通过 git remote -v 查看远程地址。
(fetch用于取回,push用于推送,都是git命令)
注意,此时,本地仓库除了.git隐藏文件夹,需要有新的文件在本地库,因为刚创建的.git本地库是空的,需要添加一些文件(工作区),git add .(暂存区),git commit -m ‘操作说明’(本地库)。否则直接git push 是会报错的。
所以,我们可以本地创建一个文件,如readme.md。
git add .
git commit -m
此时本地库有了更新。
然后将本地库的更新推送至远程库
git push -u origin master
此时,完成了本地库和远程库的关联。之后如果本地有更新情况,在使用git push推送至远程库即可。
说明:
git push命令用于将本地分支的更新,推送到远程主机。它的格式与git pull(下拉远程更新到本地)命令相仿。
git push <远程主机名> <本地分支名>:<远程分支名>
(这里的:前后是必须没有空格的。)
git push origin master
上面命令表示(省略了远程分支名,表示将本地分支推送与之存在”追踪关系”的远程分支),将本地的master分支推送到origin主机的master分支。如果后者不存在,则会被新建。
如果当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略。
git push origin (将当前分支推送到origin主机的对应分支。)如果当前分支只有一个追踪分支,那么主机名都可以省略。即git push
如果当前分支与多个主机存在追踪关系,则可以使用-u
选项指定一个默认主机,这样后面就可以不加任何参数使用git push。即
git push -u origin master
(这个也是官网用的,将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。)
二、团队协作工作
像团队开发,通常是老大已经在本地库做好一部分,push上传至远程库;团队的成员先clone下,进行相关开发修改,然后也push到远程库,然后老大再从远程库pull下拉,在进行整体修改等。循环这个步骤。
但是不是什么人都能加入团队,不然就乱糟糟了,团队老大要邀请才行。
邀请某人加入协作团队成员。(需要人授权并把连接地址送给要被授权的某人,某人加入才行)
即老大的远程库(github)中,settings-> collaborators->输入团队小弟github账户名称-> add collaborator
然后等待团队小弟的确认(发送邀请链接,然后团队小弟打开确认)
git pull 从远程库下拉到本地库的工作区
git pull <远程主机名> <远程分支名>:<本地分支名>
git pull 和 git fetch区别
git fetch是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并(git merge)到工作本机分支中。
而git pull 则是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。
三、跨团队协作
有时候需要多个团队一些协作,主团队A先复制项目Github连接,然后以非团队人员的身份B去fork(页面有个fork选项)。
例如我在别人的项目仓库下fork,此时,我自己远程仓库会添加主团队的项目仓库,上面也声明来仓库来源。
接着,就和之前一样,clone在本地修改开发,然后推送到自己的远程库,然后自己提出pull request(new pull request->creat pull request)。
然后主团队,审核代码,然后没问题再合并代码。然后就接着就是将远程库修改拉下本地,继续开发。
基本操作
其他:
1、head指针,用于控制版本的前进后退,后面有说。通过head指向的分支控制,进行版本控制。
2、分支管理,在版本控制过程中,使用多条线同时推进多个任务,提升开发效率。一般,主支(master)是发布的,直接线上使用的,其他一些开发功能是一些分支,开发调试成功没问题了,才会并入主干分支,在这个过程中,如果某些分支开发失败,不会对其他分支有影响(包括master),删除该分支,重新开发即可。(创建分支git branch XX,切换分支git checkout XX,合并分支,即先切会原分支,在把旧分支合并进去,用git checkout XX和git checkout XXX ,此时可能出现冲突)
解决冲突:
3、git工作流
4、如果是局域网的管理,可以使用gitlab。(搭建gitlab服务器)
全面知识点-学习总纲:
1、 版本控制
团队协作:希望版本控制工具能管理文件本身和里面的内容,允许很多人修改同一文件。(协同修改、数据备份、版本管理、权限控制、历史记录、分支管理)
2、 Git是分布式控制版本工具
3、
(上面写错了,初始化应该是git init)
4、 分支管理
5、 Git基本原理
6、 Github
创建远程库
远程库地址
在本地创建远程库地址别名(不用每次复制远程库地址)
查看远程地址
(fetch用于取回,push用于推送)
推送分支
此时,远程库就有对应推送的文件了
(上面写错了,克隆应该是git clone [远程地址])
邀请某人加入协作团队成员。(需要人授权并把连接地址送给要被授权的某人,某人加入才行)
Pull直接就合并了,用方法1比较保险,能确认一下合并内容
(小刘:GitHub;老王、老王媳妇是开发人员)
跨团队协作
复制Github连接,以非团队人员的身份去fork
(提出pull request)
(原团队看这个pull request)查看
(以上所有all操作已经满足日常需要了)
7、 Git 图形化界面操作
一般的IDE都有GIT插件,也可以从IDE下载GIt插件做一些Git处理,例如eclipse,Sublime text3等。
一般流程:
建立本地库
推送到远程库
冲突- 解决冲突 –合并
8、 Git工作流
9、 Gitlab服务器搭建过程
(linux环境下装)centOS(Linux环境)
(和GitHub差不多,主要用于局域网,有一定的自由度)
10、 总结