• [Git 1]基本操作与协同开发


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

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

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

    Git按照配置

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

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

    可以通过

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

    操作

    工作流程

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

    创建仓库

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

    git init
    
    • 1

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

    git init newrepo
    
    • 1

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

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

    克隆仓库

    git clone <repo> # repo git仓库
    
    git clone <repo> <directory> # dire本地目录
    
    • 1
    • 2
    • 3

    例如:

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

    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 # 上传代码并合并
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    分支管理

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

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

    先创建一个测试目录

    $ 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    列出分支基本命令

    git branch 
    *master  # 没有参数的时候会列出本地的分支
    git branch testing # 手动创建一个分支
    
    • 1
    • 2
    • 3
    $ ls
    README
    $ echo 'runoob.com' > test.txt
    $ git add .
    $ git commit -m 'add test.txt'
    [master 3e92c19] add test.txt
     1 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
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

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

    git checkout -b newtest
    
    git branch -d (branchname) # 删除分支命令
    
    git merge # 分支合并
    
    • 1
    • 2
    • 3
    • 4
    • 5

    查看提交历史

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

    在这里插入图片描述

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

    git 标签

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

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

    Git远程仓库

    Github

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

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

    在这里插入图片描述
    打开github进入ssh keys,在key复制之前的key
    在这里插入图片描述

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

    登录成功后在github点击new repository,创建成功后会出现以下界面:
    在这里插入图片描述
    根据上面的命令指示便可以进行生成了,期间会发邮件等验证等操作。

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

    Gitee

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

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

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

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

    在这里插入图片描述

    私有服务器

    这里以腾讯云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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

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

    $ cd /home/git/
    $ mkdir .ssh
    $ chmod 755 .ssh
    $ touch .ssh/authorized_keys
    $ chmod 644 .ssh/authorized_keys
    
    # 将本地的公钥密码导入到文件里面
    vim .ssh/authorized_keys
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    初始化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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    根据前面的步骤,已经将本地的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 # 进行提交
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    如何在IDEA使用Git

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

    在这里插入图片描述
    在本地更新完以后可以点击推送,这样github就可以收到了
    在这里插入图片描述
    同时在git部分也有git远程控制,可以部署在自己的服务器上
    在这里插入图片描述
    以上就是基本内容了。

  • 相关阅读:
    mysql插入\更新前+判断条件
    不同材质的油封及其使用温度限制
    前端开发 vs. 后端开发:编程之路的选择
    d3rlpy离线强化学习算法库安装及使用
    AM@2个极限存在准则及其应用
    Java之文件流(26个Demo)
    二维码智慧门牌管理系统升级技术解决方案
    前端面试题总结
    CentOS系统磁盘的分区格式化和挂载操作
    LRU算法
  • 原文地址:https://blog.csdn.net/QAZJOU/article/details/126641014