在实际开发当中,会遇到一个很关键的问题,如果是多个人开发,该如何保证代码的时效性呢?我们在前面使用过云服务器进行远程开发,这确实是一个不错的办法,但是这需要开发者一直处于有网的环境而且登录ssh人数不能太多,所以一般来说远程ssh开发都是运维岗在做。那么该如何保证协同开发的进行呢?在早期使用的是SVN,目前使用的Git版本控制,顾名思义,就是对版本就是保存操作。

在这里我以基本的Git的命令,同时以Github,Gitee,自建云服务仓库为例进行协同开发。在开发自己的部分便可以进行提交与推送了。一般来说,Github在国内访问速度慢,如果没有科学上网工具那么就得使用Gitee,不过近年来,Gitee风评并不怎么样,但确实是国内第一的开源仓库了。所以很多公司企业都选择自己的服务器进行搭建仓库,一方面是内网控制保证了安全,另一方面都是私有仓库不易被外界知道。

对于Git,如果熟练掌握,将对协同开发有着重要的作用,如果不知道的话也无妨但是进入了公司依旧是要会的,当然我也会在日后的学习中继续加强,同时也慢慢进行协同开发。

目录

  • Git按照配置
  • 操作
    • 工作流程
    • 创建仓库
    • 提交与修改
    • 分支管理
    • 查看提交历史
    • git 标签
  • Git远程仓库
    • Github
    • Gitee
  • 私有服务器
  • 如何在IDEA使用Git

Git按照配置

先去官网下载Git。
配置如下,提供了git config的工具,专门配置与读取工作的环境变量。

# --global 更改的配置就是位于用户目录下,以后所有的项目都会默认使用这个用户信息。
git config --global user.name "jacin"
git config --global user.email jacinlee@qq.com

可以通过

git config --list # 看用户与账号信息

操作

工作流程

一般的工作流程:克隆Git 资源为工作目录;在克隆的资源上添加或者修改文件;如果修改了可以更新资源;在提交前查看修改;提交修改;可以撤回提交并再次修改。
工作区:电脑所能看到的目录;
暂存区:index 或stage 一般存在.git目录下的index(.git/.index)
版本库:.git (版本库)

创建仓库

使用当前目录作为Git仓库,初始化

git init

在当前目录生成一个.git,使用此作为Git仓库

git init newrepo

如果当前目录有几个文件想纳入版本控制,需要使用git add

git add *.c
git add README
git commit -m '初始化版本项目' # linux 使用单引号‘ ,windows使用"

克隆仓库

git clone <repo> # repo git仓库git clone <repo> <directory> # dire本地目录

例如:

git clone git://github.com/schacon/grit.git # 克隆Ruby语言的Git仓库

git的工作就是创建和保存项目的快照及其对比。
常用的命令如下: git clone ; git push ; git add ; git commit ; git checkout;git pull
说明: workspace 工作区;staging area:缓存区 local repository 版本库或本地仓库;remote repository远程仓库

提交与修改

git add # 添加文件到缓存区
git status # 查看当前的状态
git diff # 比较文件的不同,即缓存区和工作区的差异
git commit # 提交缓存区到本地仓库
git reset # 回退版本
git rm # 删除
git mv # 移动或重命名工作区文件
git log # 查看历史提交记录
git blame <filename> # 以列表形式查看指定文件的修改记录
git remote # 远程仓库操作
git fetch # 从远程获取
git pull #下载代码并合并
git push # 上传代码并合并

分支管理

每一种版本控制以某种形式支持分支,一个分支代表一条独立的开发线。
使用分支意味着可以从开发主线分离开来,然后在不影响主线的继续工作。
Git分支实际是指向快照的指针。

git branch (branchname) # 创建分支命令
git checkout (branchname) # 切换分支

先创建一个测试目录

$ mkdir gitdemo
$ cd gitdemo/
$ git init # 默认创建master分支
Initialized empty Git repository...
$ touch README
$ git add README
$ git commit -m '第一次版本提交'
[master (root-commit) 3b58100] 第一次版本提交1 file changed, 0 insertions(+), 0 deletions(-)create mode 100644 README

列出分支基本命令

git branch
*master  # 没有参数的时候会列出本地的分支
git branch testing # 手动创建一个分支
$ ls
README
$ echo 'runoob.com' > test.txt
$ git add .
$ git commit -m 'add test.txt'
[master 3e92c19] add test.txt1 file changed, 1 insertion(+)create mode 100644 test.txt
$ ls
README        test.txt
$ git checkout testing
Switched to branch 'testing'
$ ls
README
$ git checkout master

也可以使用git checkout -b (branchname)来创建新分支并立即切换到该分支下,从而在分支操作。

git checkout -b newtestgit branch -d (branchname) # 删除分支命令git merge # 分支合并

查看提交历史

git log # 查看历史提交记录
git blame <file> # 以列表形式查看指定文件的历史修改记录

git log --oneline # 此项目的开发历史
git log --reverse --oneline # 逆向显示所有日志
git log --author # 查找指定用户的提日志

git 标签

进入到一个重要的阶段,希望永远记住提交快照,可以使用git tag打上标签。

git tag -a v1.0 # 给最新一次提交打上v1.0标签

Git远程仓库

Github

Git不像SVN有个中心服务器,目前使用的Git命令都是在本地执行。如果需要协同开发,必须要将数据放到能够连接的服务器上。
首先在本地创建ssh key

ssh-keygen -t rsa -C "jacinlee@qq.com"
一路回车就行,然后打开id_rsa.pub 复制里面的key


打开github进入ssh keys,在key复制之前的key

# 本地命令
ssh -T git@github.com
# 这样就认证成功了

登录成功后在github点击new repository,创建成功后会出现以下界面:

根据上面的命令指示便可以进行生成了,期间会发邮件等验证等操作。

git remote # 查看当前配置有哪些仓库
git fetch # 从远程仓库下载新分支与数据
git merge # 从远程仓库提取数据并尝试合并到当前分支

Gitee

和github一样,先验证ssh,然后创建仓库,可以输入下面的命令进行配置。
项目名称最好与本地一致

# 若出现 fatal: remote origin already exists.
# 说明本地库已经关联一个origin的远程库了
git remote rm origin # 删除,然后再关联

如果要使用多个仓库(github)

git remote add github git@github.com:tianqixin/runoob-git-test.git

私有服务器

这里以腾讯云Centos 7为例

# 安装git
$ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
$ yum install git# 创建一个git 用户组和用户
$ groupadd git
$ useradd git -g git

收集所有登录用户的公钥,公钥位于id_rsa.pub

$ cd /home/git/
$ mkdir .ssh
$ chmod 755 .ssh
$ touch .ssh/authorized_keys
$ chmod 644 .ssh/authorized_keys# 将本地的公钥密码导入到文件里面
vim .ssh/authorized_keys

初始化git仓库

$ cd /home
$ mkdir gitrepo
$ chown git:git gitrepo/
$ cd gitrepo$ git init --bare runoob.git
Initialized empty Git repository in /home/gitrepo/runoob.git/# 创建一个空仓库
$ chown -R git:git runoob.git
# 克隆
$ git clone git@ip:/home/gitrepo/runoob.git

根据前面的步骤,已经将本地的SSH配置给了linux服务器了。那么就可以在本地新建文件并提交了。

# 在本地建好一个Test,远程添加仓库
git remote add TestLinux git@ip:/home/gitrepo/runoob.git
touch a.txt
git add a.txt
git commit -m "init commit"
git push TestLinux master # 进行提交

如何在IDEA使用Git

方便点的直接使用Github进行共享与创建
点击VCS,在Github共享,每一次提交都会得到一个branch


在本地更新完以后可以点击推送,这样github就可以收到了

同时在git部分也有git远程控制,可以部署在自己的服务器上

以上就是基本内容了。

[Git 1]基本操作与协同开发相关推荐

  1. git 入门教程之协同开发

    前面我们已经介绍过远程仓库的相关概念,不过那时并没有深入探讨,只是讲解了如何创建远程仓库以及推送最新工作成果到远程仓库,实际上远程仓库对于团队协同开发很重要,不仅仅是团队协同开发的基础,也是代码备份的 ...

  2. 使用git和github进行协同开发流程

    目录 前言 仓库(Repository) 源仓库 开发者仓库 分支(Branch) 永久性分支 暂时性分支 工作流(workflow) 总结 参考资料 前言 (本文假设各位已经对基本git的基本概念. ...

  3. android 分支管理,Android Studio git使用,包括协同开发,分支管理。

    首先要有几个概念. master是主分支,永远是当前发布出去的版本. 而开发则是在分支上进行的,比如新建一个Dev分支. 那么大家都在Dev分支上开发,发布的时候由小组长合并到master分支上. 并 ...

  4. Git之多人协同开发

    一.获取远程库信息 $ git remote -v origin https://github.com/xxxxx/node.git (fetch) origin https://github.com ...

  5. Git入门——团队协同开发

    Git原理入门 团队协同开发 要理解git的使用原理,就要知道团队协同开发的概念.就目前我们掌握的知识来讲,如果想要多人开发同一个项目,那只能通过拷贝的方式 A和B同时开发了一个项目,同时拷贝给C,由 ...

  6. iOS协同开发-iOS代码版本控制-GitHub代码托-关东升-专题视频课程

    iOS协同开发-iOS代码版本控制-GitHub代码托-4908人已学习 课程介绍         介绍了如何使用Git进行代码版本控制,其中包括Git服务器的搭建.Git常用命令和协同开发,还介绍了 ...

  7. 【阶段小结】协同开发——这学期的Git使用小结

    [阶段小结]协同开发--这学期的Git使用小结 一.Git简介 1. Git简单介绍 2. Git工作流程以及各个区域 3. Git文件状态变化 二.Git安装&Git基本配置 三.个人踩坑 ...

  8. git 与团队协同开发,避免冲掉别人代码的方法

    在团队开发中,git的使用已经很常见了,博主也是经常使用coding,github等代码托管平台.在多人协同开发中,我们经常会遇到这样的问题:A在本地开发完成后,将代码推送到远程,这时候B的本地代码的 ...

  9. git 怎么备份本地分支_git 入门教程之协同开发

    前面我们已经介绍过远程仓库的相关概念,不过那时并没有深入探讨,只是讲解了如何创建远程仓库以及推送最新工作成果到远程仓库,实际上远程仓库对于团队协同开发很重要,不仅仅是团队协同开发的基础,也是代码备份的 ...

最新文章

  1. 病虫害模型算法_基于深度学习的目标检测算法综述
  2. 022 Spark shuffle过程
  3. Html_Img元素 设置图片与其他元素横排高度一致
  4. MySQL批量update数据(更新的数据值不同)
  5. Android Flash分区大小查看
  6. 简述什么是图灵机_什么是图灵机
  7. 【Oracle】非RMAN恢复数据文件、控制文件
  8. 让你的模型acc更上一层楼:模型trick和数据方法总结
  9. Java设计模式(Design Patterns In Java)读书摘要——第1章 绪论
  10. Mac下librdkafka下载安装
  11. read.html5.qq.com,从QQ浏览器缓存文件中提取出完整的视频
  12. 数仓建模—表设计规范
  13. 文字识别方法全面整理
  14. 易到要在网约车市场突围并不容易
  15. Lucas-Kanade稀疏光流法
  16. 怎样完成一次比较漂亮的晋升面试演讲
  17. 【书谷】一个免费赠送图书的好网站,推荐给书虫们
  18. 推荐一个在线音乐插件
  19. STM32CubeMX学习(一) USB HID 双向通信
  20. HBuilder X 初体验

热门文章

  1. 软件测试密码修改教程,软件测试之用户注册和密码修改测试用例设计
  2. php整型的最大值,php整型(Integer)
  3. Java-多线程讲解(2)
  4. OA系统是把无所不能的“万能钥匙”?
  5. ubuntu | 用crossover安装-微信和企业微信
  6. 微信终端跨平台组件 Mars 在移动网络的探索和实践
  7. C语言指针(函数指针数组,二级指针)
  8. 从员工到总经理的成长笔记:自慢(6)
  9. matlab之运动目标检测
  10. 微信小程序:购物车总结(商品左右联动)