Git学习笔记
Git历史
- git的作者也是Linux系统的作者
- 当时git的作者用的Bitkeeper来管理和维护代码,结果当时Linux开源社区的人偷偷搞破解被BitKeeper公司发现了,于是收回了免费使用权
- 然后这个大神就自己开发了一个,不能没得用嘛。结果越来越火了。
Git和svn的对比
- svn是集中式管理方式,会把代码提交到服务器,集中式开发很方便,缺点是服务器挂了就只能等。
- git是分布式版本控制系统,是不连接服务器的。git是有一个本地仓库的,不一定要链接服务器。
Git的工作流程
- 本地仓库闭环
- 先把本地仓库的代码和工作区代码进行校验
- 将工作区代码加入进暂存区
- 最后将代买提交到本地仓库形成闭环
- 远程仓库交换代码
- 将本地仓库push到远程仓库
- 有人要提取就将远程仓库代码复制到本地仓库
- 或者直接拉到工作区
- 然后再实现本地闭环
Git的安装
- 传送门
- 下载好之后一路点确认即可
- 装海龟
- 装语言包
怎么创建一个版本库
- 创建自己放版本库的文件夹
- 在文件夹页面右键选择创建版本库(直接鼠标右键即可),并直接确定,就能在这个位置创建一个
.git
的版本库- 这是一个隐藏文件夹,记得打开隐藏选项,不然会看不到
提交文件到工作区和暂存区
- 右键一个文件,移动到TortoiseGit选项中选中添加,其实是将文件添加到工作区,点击提交才能加进本地仓库
- 再次右键,选择提交到master,就能打开提交页面
- git需要写日志才能提交,最好写上自己改了什么,再提交
修改文件内容并提交
- 右键,选择tortoisegit选项,选择版本库浏览器,就能看到本地库里已提交的有什么文件
- 可以对文件进行修改操作
- 直接打开文件,开始操作,开始各种写。
- 修改保存后,右键修改的文件,点击git->提交master,然后跟上面提交文件一样,先写日志,再将文件提交到版本库
- 可以查看进行了那些修改
- 右键,选择tortoisegit,选择显示日志,就能查看每次提交的日志
- 选中其中两个版本,然后右键选择比较两个版本的差异,就可以看到两个版本之间内容之间的差异在哪里,修改部分会高亮
删除文件
- 删除的两种操作
- 可以直接选中文件,然后delete掉。
- 右键要删除的文件,选中tortoisegit选项,里面有个删除选项,点击删除。
- 注意,这样删除没有真正删除,他还是可以复原的
然后讲讲复原操作
-
复原操作
-
复原的前提是没有提交到版本库
-
直接右键选择tortoisegit选项,里面就有一个复原选项
-
点击复原,选择自己想要复原的文件
-
有时我的确想直接删掉不能复原,这样的话:
- 从版本库中删除,不能复原
- 执行一下删除操作
- 右键,选择git->提交master,然后和上面的提交操作一样,做完就能真正提交了。
而又有的时候我只是想删版本仓库里的文件,并不想删工作区的文件,这样的话:
- 删除工作副本
- 右键,选择tortoisegit选项,选择删除本地副本
- 这时候还没提交,是还没彻底删除的,于是我们就重复上面无法复原的删除操作就行
将一个工程加入本地版本库,并且忽略希望忽略的的文件
-
添加工程
- 选中文件夹后,按照添加文件那样添加就可以了。
-
忽略部分文件
-
选中想要忽略的文件夹或者文件,右键选择tortoisegit,找到添加到忽略列表选项,点击进入到界面
-
忽略类型
- 递归忽略:会把文件夹里的所有文件都忽略
- 只忽略指定文件夹的文件或者文件夹
建议选择递归忽略,全部忽略掉
-
选定
.gitignore
的文件位置- 一般来说会有三个,放在版本库根目录,放在文件夹根目录,放在exclude文件夹
- 建议选择放在文件家所在目录
-
点击确定之后会问你是否要删除本地文件,一般是不删除
-
-
可以看到忽略完之后能看到一个
.gitignore
文件,用txt打开,会看到一排文件名,是忽略的文件夹或者文件夹的名字
用Github创建一个远程仓库
-
首先先登陆注册一个GitHub账户。
-
建立一个仓库
-
在主页面上,找到创建新项目,点击,进入创建新项目
-
将仓库名字写上,描述写上
-
选择仓库类型
- public:就是向公众公开,就是所谓的开源
- private:不向公众公开,违反开源精神,要付一定的钱
-
-
利用https或者ssh推送远程仓库
-
ssh(使用私钥加密,公钥解密的方式,是暂时最安全的加密方式)
-
点击自己刚建立的仓库,看到这一行下面
Quick setup — if you’ve done this kind of thing before
能看到一个https和ssh的按钮选项,点击能生成对应的链接
这次我们点击ssh~
-
往下看,看到这个下面
…or push an existing repository from the command line git remote add origin git@github.com:xxxxxx/repo1.git git push -u origin master
这个就是将本地仓库推送到远程仓库的命令
-
-
生成一个ssh
-
右键,点击git bash here
-
输入下面的命令
ssh-keygen -t rsa
回车,等待执行完毕
-
执行完毕后,在
C:Usersadmin.ssh
可以找到自己刚刚生成的ssh。admin根据你自己的用户名来定,不一定是admin。
-
文件夹里有公钥和私钥
id_rsa //私钥 id_rsa.pub //公钥
私钥不要乱给。但要把公钥告诉给服务器。
以txt形式打开
id_rsa.pub
将里面的东西全部复制下来 -
回到GitHub,点击头像,找到setting,找到SSH and GPG key,点击
-
然后自定义一个ssh的名字,将刚刚复制的东西全部粘贴,再确定添加
-
ssh添加完毕
-
-
将项目发送到GitHub
-
这就很简单了朋友们,右键,点击git bash here
-
输入下面的命令,就是GitHub提供的命令
git remote add origin git@github.com:xxxxxx/xxxx.git//记得改掉xxx git push -u origin master
-
然后回车+yes,一路点,就发送过去了
-
回到GitHub刷新看看~
-
-
https
-
用https就很方便了朋友们~
-
点击自己刚建立的仓库,看到这一行下面
Quick setup — if you’ve done this kind of thing before
能看到一个https和ssh的按钮选项,点击能生成对应的链接
这次我们点击https~,复制链接
-
然后回到要同步的文件夹,右键,点击git同步
-
点击管理
-
编辑远端姓名,随便自己起
-
URL填自己刚刚复制的链接
-
删光Putty密钥
-
添加就可以,可能会弹出一个窗口,不理会确认就行
-
回到那个界面,我们呢点推送
-
会提示我们输入GitHub的账户名和密码,输入进行
-
然后就是等待成功喔~
-
-
从远程仓库克隆到本地
- 使用ssh克隆
- 登录GitHub,选择自己想要克隆的库点击点开
- 在页面中找到
clone and download
,点击 - 这里选择ssh,会自动生成一个链接,复制一下
- 回到你想要复制的文件夹,右键点击
git bush here
- 输入命令行
git clone + 你复制的ssh链接
,回车,不出意外就在下载了
- 使用https克隆
- 登录GitHub,选择自己想要克隆的库点击点开
- 在页面中找到
clone and download
,点击 - 这里选择https,会自动生成一个链接,复制一下
- 回到你想要复制的文件夹,右键点击
Git 克隆
- 它会自动帮你填上你刚刚复制的链接,点击确定就能成功克隆
将本地版本库推送到远程服务器
- 首先对自己的文件进行修改,提交到本地版本库
- 右键,点击
Git 同步
- 选择好服务器端之后,点击推送就能发送到服务器。
推送时出现冲突
-
推送的时候,如果别人先修改了服务器的版本库,而你没有在这个基础上修改,就会发生冲突,不会正常推送而是报错。
-
这时候需要处理发生冲突的文件。
-
这个时候我们只能选择拉取,并且拉取一定会失败,且文件会显示冲突
-
打开冲突文件后,会看到这样的情况。中间内容就是冲突内容,更改的时候将两个头给删掉,自己把冲突部分合并了。
<<<<<<< HEAD 。。。 >>>>>>> f704b43f53ce01496134a4c50d0f662de08c73b1
-
保存,右键选择tortoisegit选项,选择解决冲突
-
然后提交到远程服务器就可以了
-
分支
- 怎么创建分支
- 右键选择tortoisegit选项,里面有两个选项可以创建分支
- 切换/检出:创建分支后会直接选择新的分支作默认分支
- 创建分支:创建分支后不会选择性的分支作默认分支
- 选择之后步骤就是按照界面的操作点,直接确定就行了
- 右键选择tortoisegit选项,里面有两个选项可以创建分支
- 分支的概念
- 它相当于一个指针,指向开发版本的的当前时间线上
- 用某个指针开发后,版本互不影响,各走各的路,会形成一个分叉
- 同时他也可以合并指针,将两个指针指向的版本合并,变成一个新的版本