代码托管中心

  • 代码托管中心用来维护远程库
  • 局域网下搭建的服务器:GitLab
  • 外网下的服务器:GitHub,码云

本地库基本操作

本地库初始化

git init
  • 可以通过 ls -lA 查看.git/下的子目录与文件

设置签名

  • 用来区分不同开发人员身份,与登陆到远程库的用户名和密码作用不同
  • 项目级别:git config user.name=tom_xm user.email=1600639146@qq.com,查看使用cat .git
  • 系统级别:git config –global user.name=tom_global user.email=1600639146@qq.com,查看步骤:定位到用户夹 cd ~ => 查看.gitconfig文件 cat .gitconfig

基本操作

  1. 查看
//查看当前的状态,没有被追踪的文件颜色为红色,即表明目前在工作区中;在暂存区中的文件显示为绿色
git status
  1. 添加
//将文件添加到暂存区中,此时使用git status文件显示为绿色
git add <filename>
  1. 撤销
//撤销add操作,将文件状态回退到工作区
git rm --cache <filename>
  1. 提交
//将文件从暂存区提交到本地仓库
git commit -m "<提交说明>" <filename>
  1. 查看历史记录
  • git log:详细查看提交的历史记录 git log
  • git log –pretty=oneline:简略查看提交的历史记录,hash值很长,每条记录一行 git log –pretty=oneline
  • git log –oneline:与git log –pretty=oneline的区别是其hash值比较短 git log –oneline
  • git reflog:最理想的方式,HEAD@{<回退步数>} git reflog
  1. 回退/前进历史版本
  • 基于索引值操作
git reset --hard <局部索引值>
  • 使用^符号:只能后退
//几个^表示后退几步
git reset --hard HEAD^
  • 使用~符号:只能后退
//n表示后退几步
git reset --hard HEAD~n

  • hard、mixed、soft对比
//本地库向前移动了一个单位,此时 git status 颜色为绿色,看起来是暂存区向后移动了一个单位
git reset --soft <局部索引值>
//本地库以及暂存区向前移动了一个单位,此时 git status 颜色为红色,看起来是工作区向后移动了一个单位
git reset --mixed <局部索引值>
//本地库、暂存区以及工作区向前移动了一个单位
git reset --hard <局部索引值>
//使用mixed或soft移动后回到当前指针指向的位置
git reset --hard HEAD

  • 永久删除文件并回退
rm <filename>

使用上述命令删除后,也可以通过 git reset –hard <局部索引值> 找回

  • 添加到暂存区的文件删除后找回
rm <filename>

使用上述命令删除后,也可以通过 git reset –hard HEAD 找回,使版本指针指向当前版本

  • 删除文件后找回总结 前提:本地库之前有保存文件版本   文件被提交到本地库:移动指针指向的历史记录
git reset --hard <局部索引值>

  文件没有被提交到本地库:移动指针指向当前指向的历史版本

git reset --hard HEAD

  1. 比较文件差异
//比较工作区与暂存区中文件的差异
git diff <filename>
//比较工作区与历史版本的差异
git diff <历史版本号> <filename>
//比较工作区中的所有文件
git diff
  1. 分支操作
  • 创建分支
git branch <分支名>
  • 查看分支
git branch -v
  • 切换分支
git branch <分支名>
  • 合并分支
git merge <分支名>
  • 合并的过程中冲突的解决 两个或以上的分支对同一文件的相同位置都进行了编辑 合并的过程中冲突的解决
  • 先将将git自己编辑文件时的内容删除,然后编辑文件改到满意为止,重新走一遍add、commit流程
git add fenzhi.txt
git commit -m "说明"

远程库基本操作

  • 在本地创建远程库地址别名
//远程库地址为origin
git remote add origin <远程库地址>
  • 向远程库推送内容
git push <远程仓库地址/别名> <分支名>
git push origin master
  • 克隆操作
git clone <远程仓库地址>
  1. 完整的远程库下载到本地
  2. 创建origin远程地址别名
  3. 初始化本地仓库别名

团队协作

团队内协作流程

  • 由项目主管创建项目,并邀请成员加入项目
git init
git add .
git commit -m "说明"
git remote add origin <远程仓库地址>
git push origin master
  • 团队成员克隆项目到本地
git clone <远程仓库地址>
git add .
git commit -m "说明"
git push
  • 合并远程分支
git add .
git commit -m "提交说明"
git fetch origin <分支名>
git merge origin/<分支名>
//以上两种操作等价于git pull origin <分支名>
  • 若产生冲突,进入冲突文件进行更改
  • 最后走一遍提交流程
git add .
git commit -m "提交说明"
git push

跨团队协作

跨团队协作流程

  • 以合伙人身份点击fork 以合伙人身份点击fork
  • 将fork后的项目克隆到本地
git clone <克隆后的远程仓库地址>
  • 提交操作
git add .
git commit -m "提交说明"
git push
  • 点击Pull request,new pull request 点击Pull request、new pull request
  • 点击create pull request 点击create pull request
  • 填写标题及内容 填写标题及内容
  • 提交成功后的状态 提交成功后的状态
  • 主管查看提交 主管查看提交
  • 主管在这个界面可以聊天、点击Files changes查看团队外成员提交内容并可以选是否合并 主管在这个界面可以聊天及是够选择合并