基于Git的多人协同工作

 

简介

Git 是一款分布式版本控制系统,可以更好的对文件进行管理、备份、回退等操作,优点是在不同的电脑上实现文件的实时更新和同步。FEALPy的管理和协同开发就是基于git来完成的。

Git 有的三个工作区域和四个工作状态,了解这些才可以知道git的基本操作流程。三个工作区域是:

  • 工作目录:可以看见的文件夹里的文件
  • 仓库:看不见的(可以在 github 上看),这里边放的是你完成一个项目,要分享给别人东西
  • 暂存区域:当你修改一个文件后,你要将他放到一个地方,这个地方放里的所用东西是准备要提交到 git 仓库中的

四个工作状态分别未追踪,未修改,已修改,已暂存

  • 当你新建一个文件就是属于未追踪,你需要通过 add 命令把他加到暂存区,这时他就被 git 追踪到了,之后的每一次修改 git 都会记录。未修改,已修改是看文件你有没有改动过。修改过得你可以通过add 加到加到暂存区。已暂存就是在暂存区里的东西。

  • git 的流程就是,将新建或者修改的文件通过 add 加到暂存区,然后通过 commit 将暂存区的东西放入 git 仓库。

    workflow

基本使用方法

创建仓库和同步远程仓库

  git init    #对本地文件用git进行管理
  git remote add origin [远程仓库地址]  #关联本地仓库和远程仓库
  git clone [远程仓库地址]  #将远程仓库建立到本地上
  git pull    #将远程仓库内容拉取到本地

提交到远程仓库的步骤

  git status  #看现在文件的状态
  git add .    #将所有文件放到暂存区,也就是说将文件状态变为已暂存
  git commit   #将暂存区的东西都提交到git仓库中
  git push     #将本地仓库推送到远程git服务器上

版本回退

  git log     #查看仓库中推送的版本号和信息
  git reset --hard [commit id]  #将仓库回退到id的版本

分支管理

git checkout -b master2 #创建并切换到新建分支
git checkout master2    #切换分支
git branch -d fmaster2  #删除分支

FEALPy的协作开发

Gitlab

  • 在项目主分支上建立一个分支,点击原作者仓库 gitlab 右上角的 fork, 就会在自己的 gitlab 中新建一个同名仓库

    git-fork

  • 在自己的分支上进行操作,将自己 gitlab 中的同名仓库 git clone 到自己的本地, 然后就可以进行一系列操作, git add, git commit, git pull, git push, 也就是和平常经常进行的操作并无二制.但注意pull的时候需要如下进行

    git fetch --all
    git merge upstream/master origin/master
    
  • 向管理员提交 pull request,首先在自己的仓库页面, 点击左侧的 Merge Request,再点击 New Merge Request,

    git-merge

    确定上传到哪个分支, 点击 Compare branches and continue, 写清楚提交的理由点击submit,之后等待管理员审核即可.

    git-merge-reuqest

    git-submit

Github

  • fork项目到自己的仓库中

github-fork

  • 打开命令行,将项目下载到本地

github-clone

  • 进入本地文件,并进行相应修改,同样pull时候要
  git fetch --all
  git merge upstream/master origin/master
  • 上传到自己的GitHub仓库,并申请Pull Request

github-pull-request

常用技巧

解决Could not resolve host: github.com

git config --global --unset http.proxy
git config --global --unset https.proxy

每次push的时候不用输入用户名和密码

#在用户主目录home下输入
touch .git-credentials
vim .git-credentials
https://{username}:{password}@github(gitlab).com #在git-cerdential里输入用户信息
git config --global credential.helper store

解决中文乱码

 git config --global core.quotepath false

附录

1.官方帮助文档

2.廖雪峰git使用网站

3.简易上手指南

4.Pull Request 流程