远程仓库
github是git所用的远程仓库,免费的也有私用的。
github的账号注册,----省略。
创建ssh key:
$ ssh-keygen -t rsa -c 'github的账号'
查看各个系统的ssh key的路径
mac 命令行输入: open ~/.ssh
window 在地址栏输入 C:\Users\Administor 即可看到

git remote add origin git@github.com.sqh17/one.git 将本地仓库和github的空仓库绑定
⚠️注意
若出现 fatal:remote origin already exists。说明远程仓库已存在,已经和其他的绑定过,输入以下命令:
git remote rm origin

下一步,将本地仓库的内容推送到远程库中
git push -u origin master 将当前的本地库(已commit)推送到远程仓库 -u代表第一次推送时加上,若不是则不用。

以后本地有任何提交的,想推送,就
git push origin master

克隆仓库
github是开源社区,代码可以下载下来。用两种方式, 一个是下载压缩包的形式,一个就是克隆:
git clone git@github.com:sqh17/gitTest1.git 后面的是远程仓库的地址。

分支管理
git的最大的特点就是分支管理操作。直接从远程拷贝一份到本地就可以开发了,但是为了避免在主分支master开发影响其他开发人员的进度,都会有分支,分支开发完成,在合并到主分支。

创建分支
git checkout -b dev 创建分支dev并且切换到dev分支,
这个相当于两个操作:
git branch dev 创建分支dev
git checkout dev 切换到dev分支
⚠️注意
git branch 查看分支 星号代表所在的分支
master也算分支,主分支。

合并分支
在分支dev上开发完成时(先add后commit),需要合并到主分支,再pull到远程,其他开发人员就可以看到自己最新的代码了
git add ...
git commit -m '...'
git checkout master 切换到主分支
git merge --no-ff -m '合并分支说明' dev 将dev分支和master分支合并起来 (--no-ff -m ''这句话是防止快速合并,以防合并冲突时发生了什么,也可以不用加)
git branch -d dev 删除dev分支(不是必要的)

解决冲突
多人开发中都会出现代码合并导致冲突问题,这是难免的,只能手动去解决冲突。
何为冲突:
a开发的分支中有某段代码修改了,并且提交了,b之前没有pull到a最新代码,他也同样改了这段代码,并且提交,git发现这两段代码和远程仓库的代码不一致。这就发生了冲突
这最根本最根本的解决办法就是及时pull最新代码,但是有时候还是避免不了代码冲突。

出现冲突的前兆:
当git merge时会出现以下命令:

Auto-merging ...
CONFLICT (content): Merge conflict in ...
Automatic merge failed; fix conflicts and then commit the result.

解决办法:
1.git status 查看冲突的文件
2.打开冲突的文件,会发现以下代码:
<<<<<<< HEAD
-----这是版本库里的内容-----
=======
-----这是自己分支的内容-----
>>>>>>> dev

3. 根据情况选择对的代码,删除HEAD一行和dev一行以及中间的=====一行,留下有用的。
4. git add
5. git commit -m
6. git branch -d dev
⚠️注意
可以根据git log --graph查看分支图

临时分支
在项目开发时,都会有bug出现,我们不得不放下手中的项目,去解决bug,但是当前的项目未完成,不能提交,这时候临时分支就用上了。
1 git stash 把当前工作现场储藏起来,等恢复现场后再继续工作。
2 下一步就按照创建分支,合并分支来解决bug即可。
(git stash list 查看工作现场)
3 恢复现场有两种方式:stash内容是临时分支的内容?
a. git stash apply 恢复但stash内容并不删除,要结合git stash drop来删除
(恢复指定的stash git stash apply stash@{0}
b. git stash pop 恢复的同时把stash的内容删除。

多人协作
查看远程仓库的信息
git remote -v (-v代表显示更详细的信息)
如果团队用git开发,那么每个开发人员都会建立自己的分支,在自己的分支上开发,要及时从远程仓库git pull
步骤:
1 先git push origin branch-name
2 如果失败了,是因为远程分支比自己的先更新,则先git pull
3 成功之后
4 如果有冲突问题,按照冲突解决办法解决,再提交
5 最后git push origin branch-name
⚠️
git pull出现no tracking information
则说明本地分支和远程分支的链接关系没有创建,用命令
git branch --set-upstream branch-name origin/branch-name。

最后,关于版本控制系统的工具,在此已经复习完了,由于自己是新手,对此操作不是很多,如果有问题或不对的地方,请指出来。

版本控制工具--svn和git的使用(三) -----git的使用(2)的更多相关文章

  1. [.net 面向对象程序设计进阶] (23) 团队开发利器(二)优秀的版本控制工具SVN(上)

    [.net 面向对象程序设计进阶] (23) 团队开发利器(二)优秀的版本控制工具SVN(上) 本篇导读: 上篇介绍了常用的代码管理工具VSS,看了一下评论,很多同学深恶痛绝,有的甚至因为公司使用VS ...

  2. 版本控制工具SVN学习

    教学视频链接:https://edu.aliyun.com/course/83?spm=5176.10731334.0.0.778e6580zC0Ri0 版本控制工具SVN学习 1,SVN的简介 在实 ...

  3. 版本控制工具svn的安装与简单使用

    版本控制工具多用于多人协作开发项目中,这不同于个人开发项目,想把自己代码怎样放置都可以,而且删除了代码很难查找. 版本控制工具类似于个人处理钱的过程,放于自己口袋管理类似于个人开发情形,如果自己钱丢了 ...

  4. 版本控制工具-svn

    两个疑问: 1.什么是版本控制? 2.为什么要用版本控制工具? 银联卡的特征: 1.受保护的 2.受约束的 如何与银联卡对应? 1.个人的代码--口袋里的钱 2.版本控制工具中的代码--银联卡里的钱 ...

  5. 版本控制工具--svn和git的使用(三) -----git的使用(1)

    安装 git官网就有git各个系统的安装包,可以根据自己系统安装相应的安装包.window的git安装包 依据国内网速原因,将安装放到网盘里,链接: https://pan.baidu.com/s/1 ...

  6. 版本控制工具--svn和git的使用(二) -----SVN的操作

    SVN的使用 开头: 对于svn的详解,我不是很熟,只是用过svn的客户端,没使用过服务端,在这里我只是简单说一下在svn的客户端怎么拉取代码,提交代码和修改冲突等等.svn的客户端我在Mac中用的s ...

  7. 版本控制工具--svn和git的使用(一) -----版本控制的好处以及分类

    版本控制工具 版本控制VCS(Version Control Systems)是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统.这个系统可以自动帮我们备份文件的每一次更改,并且可以 ...

  8. 版本控制工具——SVN

    一.需求 需求之一:备份 小明负责的模块就要完成了,就在即将Release之前的一瞬间,电脑突然蓝屏,硬盘光荣牺牲!几个月来的努力付之东流 需求之二:代码还原 这个项目中需要一个很复杂的功能,老王摸索 ...

  9. 版本控制工具 svn 一

    一.svn 概述 1).svn的作用 1.多人协作开发:2.远程控制:3.版本控制 2).软件控制管理工具发展之路 SCM:软件配置管理,所谓的软件配置管理实际就是软件源代码的 控制与管理. CVS: ...

随机推荐

  1. 快速傅里叶变换 & 快速数论变换

    快速傅里叶变换 & 快速数论变换 [update 3.29.2017] 前言 2月10日初学,记得那时好像是正月十五放假那一天 当时写了手写版的笔记 过去近50天差不多忘光了,于是复习一下,具 ...

  2. POJ1743 Musical Theme [后缀自动机]

    题意:不重叠最长重复子串 后缀数组做法:http://www.cnblogs.com/candy99/p/6227659.html 后缀自动机的话,首先|Right|>=2 然后min(t[u] ...

  3. POJ 3608 Bridge Across Islands [旋转卡壳]

    Bridge Across Islands Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10455   Accepted: ...

  4. 2018/1/9 redis学习笔记(一)

    本文不涉及redis基本命令以及javaapi的解释操作; 首先介绍下redis,一个nosql非关系型数据库,运行在缓存中,特点就是可存储的数据结构类型很多,做为KEY-VALUE数据库,它的键只能 ...

  5. Windows 动态链接库编程

    Windows 动态链接库编程  1.介绍Windows操作系统是应用最关的操作系统,因此动态链接库也为程序员所熟悉,即使对于普通的使用者来说,很多时候也会碰到.dll结尾的文件,这就是动态链接库文件 ...

  6. 用VS2015编译sqlcipher

    简介 SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中.它是D.RichardHipp建立的公有领域项目.它的设计目标是嵌入式的,而且目前已经在很多嵌 ...

  7. [转]【C#】分享一个弹出浮动层,像右键菜单那样召即来挥则去

    适用于:.net2.0+ Winform项目 背景: 有时候我们需要开一个简单的窗口来做一些事,例如输入一些东西.点选一个item之类的,可能像这样: 完了返回原窗体并获取刚刚的输入,这样做并没有什么 ...

  8. TripleDES加密解密

    参考:http://www.cnblogs.com/chnking/archive/2007/08/14/855600.html 参考:http://blog.csdn.net/change_from ...

  9. mysql2 - 基础

    一.SQL 练习 在java1701下,创建Stuednt 表,并插入以下数据: 增加创建时间字段,如下: 更改所有时间为当前时间: 二.数据库基础知识 1. 关系模型 1.1 表 table.列 c ...

  10. Python数据结构之四——set(集合)

    Python版本:3.6.2  操作系统:Windows  作者:SmallWZQ 经过几天的回顾和学习,我终于把Python 3.x中的基础知识介绍好啦.下面将要继续什么呢?让我想想先~~~嗯,还是 ...