在实际开发当中,会遇到一个很关键的问题,如果是多个人开发,该如何保证代码的时效性呢?我们在前面使用过云服务器进行远程开发,这确实是一个不错的办法,但是这需要开发者一直处于有网的环境而且登录ssh人数不能太多,所以一般来说远程ssh开发都是运维岗在做。那么该如何保证协同开发的进行呢?在早期使用的是SVN,目前使用的Git版本控制,顾名思义,就是对版本就是保存操作。
在这里我以基本的Git的命令,同时以Github,Gitee,自建云服务仓库为例进行协同开发。在开发自己的部分便可以进行提交与推送了。一般来说,Github在国内访问速度慢,如果没有科学上网工具那么就得使用Gitee,不过近年来,Gitee风评并不怎么样,但确实是国内第一的开源仓库了。所以很多公司企业都选择自己的服务器进行搭建仓库,一方面是内网控制保证了安全,另一方面都是私有仓库不易被外界知道。
对于Git,如果熟练掌握,将对协同开发有着重要的作用,如果不知道的话也无妨但是进入了公司依旧是要会的,当然我也会在日后的学习中继续加强,同时也慢慢进行协同开发。
Git按照配置
先去官网下载Git。 配置如下,提供了git config的工具,专门配置与读取工作的环境变量。
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 '初始化版本项目'
克隆仓库
git clone <repo>
git clone <repo> <directory>
例如:
git clone git://github.com/schacon/grit.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
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.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
也可以使用git checkout -b (branchname)来创建新分支并立即切换到该分支下,从而在分支操作。
git checkout -b newtest
git 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
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,然后创建仓库,可以输入下面的命令进行配置。 项目名称最好与本地一致
git remote rm origin
如果要使用多个仓库(github)
git remote add github git@github.com:tianqixin/runoob-git-test.git
私有服务器
这里以腾讯云Centos 7为例
$ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
$ yum install 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服务器了。那么就可以在本地新建文件并提交了。
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远程控制,可以部署在自己的服务器上: 以上就是基本内容了。
|