如何使用Git和码云Git@OSC
1.Git简介
关于Git是什么,阅读博客Git简介
2.Git 基础
Git命令很多,常用命令如下图
- Workspace:工作区
- Index/Stage :暂存区
- Local Repository: 本地仓库
- Remote Repository:远程仓库
工作区、暂存区和本地仓库,逻辑上是本地计算机。当我们新建一个文件时,文件位于工作区,处于已修改(modified)状态,表明文件已进行了修改,但还没有提交保存;通过命令git add
将其添加到暂存区,文件是已暂存(staged)状态,表示把已修改的文件放到下次提交时要保存的清单中;通过命令git commit
将文件放入本地仓库,文件为已提交(commited)状态,表示该文件已经被安全地保存在本地数据库中,到这一步可以说是成功生成了一个新的版本。
远程仓库用来将本地仓库上传到网络,实现备份、共享和合作。我们选用开源中国的码云Git@OSC作为代码托管平台。
3.安装Git
- 到Git官网https://www.git-scm.com/ 下载Git客户端
- 安装时选择默认即可。
- 安装完成后在桌面的快捷菜单中选择
Git Bash Here
或者在开始菜单中选择Git Bash
: - 在Git Bash中执行命令
git --version
查看版本,证明Git安装成功
4.Git和码云的关联
4.1 在码云注册账号
登录码云 http://git.oschina.net/注册账号
4.2 配置Git
因为Git是分布式版本控制系统,必须在Git中配置本机的用户名和Email地址
- 执行命令
git config --global user.name "你的用户名"
,告诉git你的名字,这个用户名会出现在提交记录中 - 执行命令
git config --global user.email "你的邮箱"
,告诉git你的邮箱, 这个邮箱也会出现在提交记录中,注意Email尽量保持和你注册码云的Email一致。
4.3 创建SSH Key
因为你的数据保存在远程服务器,服务器需要对你的身份进行识别,SSH key 可以让你的电脑和码云 Git@OSC 之间建立安全的加密连接。
运行命令ssh-keygen -t rsa -C "你的邮箱"
,会有三次提示输入,直接回车即可。如果已经有SSH key,会提示是否覆盖。
在用户目录下找到 .ssh
目录,里面有一个id_rsa.pub
文件,保存的就是公钥。
登录码云,在SSH公钥文本框里粘贴id_rsa.pub
文件的内容:
执行命令ssh -T git@git.oschina.net
,若返回Welcome to Git@OSC
,则证明添加成功。
Git使用SSH连接第一次验证服务器的key时,需要你进行确认,此时输入yes回车即可,注意一定是yes
而不是y
。
4.4 创建远程仓库
在码云中新建项目
创建项目,输入项目名,选择项目语言。
复制远程项目仓库的地址:选择HTTPS,可以复制远程项目仓库的HTTPS地址,如
https://git.oschina.net/maoth/java-hebau.git
,选择SSH,则复制远程仓库的SSH地址。如git@git.oschina.net:maoth/java-hebau.git
4.5 克隆远程仓库
如果从零开发,最好的方式是先创建远程仓库,然后克隆远程仓库。
建立目录,如E:\java
,进入目录后,右击鼠标选择Git Bash Here
打开命令窗口,执行命令 git clone <版本库的地址>
,版本库的地址可以是HTTPS
地址,也可以是SSH
地址。如果前面创建了SSH Key
,那么版本库就应该使用SSH
地址。
可以看到,远程仓库的项目已经下载到了本地。下面就可以在本地编写代码了。
5.本地Git的使用
5.1 初始化仓库(Git init)
如果已经克隆了远程仓库,这一步可以省略。如果没有克隆远程仓库,需要创建一个新的Git代码库。
运行git init
命令初始化仓库,将会创建一个.git
文件夹,这个文件夹是Git来跟踪管理版本库。
5.2 添加文件(Git add)
在当前文件夹下创建一个HelloWorld.java程序
使用git status
命令可以查看当前仓库状态
提示说明有未跟踪(untracked)的文件,可以使用git add <file>
加进去,通常我们使用git add -A
命令,将所有相关文件存放到暂存区,此时git就可以跟踪该文件了。
再次使用git status
命令可以看到发生的变化,提示changes to be committed
说明可以进行提交了。
5.3 提交(Git commit)
使用git commit -m "提交信息"
命令将暂存区的所有文件提交到本地仓库,提交时要求写上提交信息,注意双引号必须是英文半角的。
提交后用git log
查看提交记录
5.4 文件修改和撤销
对文件进行修改后,通过git status
查看,显示一个文件进行了修改:
可以执行git diff
查看文件做了哪些修改:
红色字体表示是删除的内容,绿色字体表示是添加的内容。
如果想撤销这些修改,执行git checkout 文件名
文件修改后,进行add和commit就行了。
文件add后尚未commit时,可以通过命令git reset HEAD 文件名
进行撤销
文件commit后,用git log
查看提交记录,现在已经有三个提交的版本了。每个版本都有一行黄色commit
开头的哈希字串,这是每个提交的唯一ID。
文件已经提交后,如果想撤销,则执行git reset --hard 9316bda
(取哈希字串的前7位即可),提示HEAD已经指向9316bda了,用git log
查看,本地仓库已经回退到第一个版本了。
5.5 中文乱码问题
- 关于
git status
中文乱码问题,可以执行git config --global core.quotepath false
命令。 - 针对windows平台的乱码问题,一劳永逸的办法当然是采用全英文了。
6. 远程同步
6.1 推送本地仓库的更新到远程仓库
文件提交到本地仓库后,可以执行
git push origin master
将本地仓库上传到远程仓库,默认情况下,origin
指的是本地仓库在远程仓库的版本,master
指的是本地仓库的master分支。第一次push的时候,可能需要输入在码云注册的用户名和密码。
查看码云项目页面,文件HelloWorld.java已经上传到服务器。
6.2 抓取远程仓库的更新到本地仓库
执行git clone
命令后,自动创建了本地的master
分支,用于跟踪远程仓库中的origin/master
分支。当远程仓库的内容更新后,可以通过命令git pull
或者 git pull origin master
, 将更新的数据抓取到本地仓库,合并到工作目录的当前分支。
执行git pull
命令时,本地做的提交和服务器上的提交可能有差异,导致合并冲突,此时,需进行冲突处理。具体参考如何处理代码冲突
7.关于init仓库远程同步存在的问题
对于克隆的远程仓库,其使用的基本流程如下:
- 克隆远程仓库
- 创建文件
- 添加(git add)
- 提交(git commit)
- 推送(git push)
如果没有从远程克隆仓库,则需要在本地通过git init
命令初始化仓库,在commit之后,不能直接进行远程推送(push),必须先建立本地仓库和远程仓库的关联。
运行git remote add origin 远程仓库的ssh地址
命令用于添加远程仓库
执行git push -u origin master
命令,加上-u参数,Git不但会把本地的master分支内容推送到远程仓库,还会把两者关联起来。
此时,提示push
失败,原因是远程仓库中有本地没有的文件,需要先pull
下来。执行pull
命令
依然报错,提示fatal: refusing to merge unrelated histories
,拒绝合并互不相关的项目,那么,我们在执行命令时需要添加参数,即git pull origin master --allow-unrelated-histories
。
执行命令后,会出现提交的提示信息:
这是VIM文本编辑器
操作命令:
进入到输入状态:按i键
从输入状态退出:Esc键
—— Shift+;键
—— wq!(保存并退出)或q!(不保存退出)
——Enter
出现pull
成功的信息
最后执行推送命令git push -u origin master
远程同步成功,到远程仓库查看项目,会发现文件HelloWorld.java已经同步到远程仓库。
以后在commit
后需要同步到远程仓库时,只要直接执行git push
命令就行了。
上面只是简单介绍了Git的使用,更为系统的学习可参考下列资料:
如何使用Git和码云Git@OSC的更多相关文章
- Git与码云(Git@OSC)入门-如何在实验室和宿舍同步你的代码(2)
4. 处理冲突 4.1 向远程仓库push时无法提交成功,提示在push前应该先pull 如图所示: 有可能是因为远程仓库的版本与本地仓库的版本不一致,所以应先git pull将远程仓库的内容合并到本 ...
- Git与码云(Git@OSC)入门-如何在实验室和宿舍同步你的代码(1)
0.几个基本概念 本地仓库:本机上某个存放代码的仓库. 远程仓库:码云服务器上的代码仓库. 重要提醒:当我们在本地操作(新增.删除.修改)文件.目录时,并将其提交(commit),就是提交到了本地仓库 ...
- GitHub Desktop+码云(GIT.oschina)使用方法
一.如何从码云GIT导入到GitHubDeskTop桌面工具. 1.先用命令行切换到本地的目录. 2.使用git clone 码云GIT地址 命令将项目克隆到本地. 3.在GitHub Desktop ...
- 【项目管理】git和码云的使用
缘起 说了那么多关于git和码云相关的事,一直都没给大伙讲解这个码云究竟是个啥玩意儿. 今天就给大伙说说如何通过git和码云搭建属于自己的代码库. 码云 码云(Git@OSC)是开源中国社区团队推出的 ...
- git和码云的使用
什么是码云 快速入门 Git入门 码云是开源中国社区2013年推出的基于 Git 的完全免费的代码托管服务,这个服务是基于 Gitlab 开源软件所开发的,我们在 Gitlab 的基础上做了大量的改进 ...
- 【项目管理】git和码云的使用【转】
转自:https://www.cnblogs.com/riverdubu/p/6491944.html 缘起 说了那么多关于git和码云相关的事,一直都没给大伙讲解这个码云究竟是个啥玩意儿. 今天就给 ...
- 我的一个git(码云)之旅
合作开发项目,你就会用到git,现在码云比较简单,因为是中文化界面,学习起来难度比较低,又支持5人以下项目免费,所以学习码云更好入手一点. 下面的东西适合一些个基础比较低的用户学习,因为我就是啊... ...
- Git从码云Clone代码到本地
Git从码云或者Github 克隆代码到本地 1.下载安装Git,傻瓜式下一步下一步即可... 2.配置Git: 2.1.选择你要clone到本地的路径:右键--->$ Git Bash Her ...
- Git(使用码云)
使用GitHub时,国内的用户经常遇到的问题是访问速度太慢,有时候还会出现无法连接的情况(原因你懂的). 如果我们希望体验Git飞一般的速度,可以使用国内的Git托管服务——码云(gitee.com) ...
随机推荐
- asp.net 程序,当发生找不到文件的错误时,如何正确定位是哪个文件?
需要在Global.asax.cs中添加Application_Error代码如下,在Log中查看是哪个文件缺失: protected void Application_Error(object se ...
- Unity 粒子系统 特效 移除屏幕外面后再移回来 不会显示问题
今天遇到的问题 勾选Particle System组件中的Sub Emitters属性 如图
- Misra-Gries 算法
2017/8/13 12:51:30 一.算法解决的问题 统计频繁项:统计一个数据流中出现频率最高的 k 的元素. 例如 问:k=3,统计数据流 [1,2,1,4,2,5,6,4] 中的频繁项. 答: ...
- [原创] Python3.6+request+beautiful 半次元Top100 爬虫实战,将小姐姐的cos美图获得
1 技术栈 Python3.6 Python的版本 request 得到网页html.jpg等资源的lib beautifulsoup 解析html的利器 html5lib 指定beautifulso ...
- Linux - 简明Shell编程04 - 判断语句(If)
脚本地址 https://github.com/anliven/L-Shell/tree/master/Shell-Basics 示例脚本及注释 #!/bin/bash var=$1 # 将脚本的第一 ...
- android学习ViewPager的简单使用
使用ViewPager需要引入android.support.v4.View.ViewPager这样的jar包,谷歌公司为解决当前版本碎片化的问题,提供的兼容的包.主要目的就是解决向下兼容问题. 1, ...
- ctrl+c 和 ctrl+z 的区别
ctrl+c 和 ctrl+z 的区别 ctrl+c和ctrl+z都是中断命令,但是他们的作用却不一样. ctrl+c是强制中断程序的执行, 而ctrl+z的是将任务中断,但是此任务并没有结束,他仍然 ...
- java核心技术之流与文件
InputStream和OutputStream构成了输入/输出类层次结构的基础.用于按字节进行读写.而与之处在同一等级的Reader/Writer同样作为抽象类定义了用于对字符进行读取的类层次结构, ...
- Python beautifulsoup 选择器 select 选择<meta/>等不需要成对结尾标签未写‘/’
一些不需要成对的标签<meta/> <img/>d等使用bs4的css选择器时出现的情况: 选择某一标签,输出内容超出范围过多 from bs4 import Beautifu ...
- koa2 controller中实现类似sleep的延迟功能
今天有同事问我如何在koa2中的controller中使用延迟执行的功能,他直接在controller中使用setTimeout,但是没效果. 错误的代码类似下面这样: // 错误的方法 export ...