设为首页 收藏本站
查看: 679|回复: 0

[经验分享] 如何使用Git和码云Git@OSC

[复制链接]

尚未签到

发表于 2018-1-12 21:46:06 | 显示全部楼层 |阅读模式
1.Git简介
  关于Git是什么,阅读博客Git简介
2.Git 基础
  Git命令很多,常用命令如下图
DSC0000.jpg



  • 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的使用,更为系统的学习可参考下列资料:

  • ProGit(中文版)
  • Git教程
  • 常用Git命令清单
  • Git远程操作详解
  • 猴子都能懂的GIT入门

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-434429-1-1.html 上篇帖子: Git版本控制之多人协作 下篇帖子: git入门大全
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表