Git

什么是git

定义

  • 开源的分布式版本控制系统

特点

  1. 分布式
  2. 按元数据方式存储数据
  3. 内容完整性高

工作流程

stateDiagram 资源库 --> 工作副本:clone 工作副本 --> 修改工作副本: 编辑、添加、删除 资源库 --> 修改工作副本: 更新 修改工作副本 --> 检查修改: 查看status, change 检查修改 --> 提交修改: push 提交修改 --> 修改错误: push,change 修改错误 --> 资源库: push 提交修改 --> 资源库: push

创建仓库

创建

  • git init <repo>创建仓库repo

  • 生成.git目录

纳入版本控制

  • git add <file>让git对文件进行跟踪

    • 该操作支持正则表达式
  • git commit -m <file> 提交文件

复制

  • git clone <repo> (<dir>)将仓库repo拷贝到dir目录

配置

  • git config显示当前的git配置信息

  • git config -e针对当前仓库编辑文件

  • git config -e --global针对系统中所有的仓库

  • 设置全局用户信息

1
2
git config --global user.name <name>
git config --global user.email <email>

基本操作

示意图

stateDiagram workspace --> staging_area: add staging_area --> lcoal_repository: commit lcoal_repository --> remote_repository: push remote_repository --> lcoal_repository: fetch/clone lcoal_repository --> workspace: checkout remote_repository --> workspace: pull

简单的操作步骤

1
2
3
git init # 初始化仓库
git add . # 将文件添加到暂存区
git commit # 将暂存区内容添加到仓库

提交和修改

git add

git add [file1] [file2] … 添加多个文件到暂存区
git add [dir] 添加目录到暂存区
git add . 添加当前目录下所有文件到暂存区

git diff

git diff [file] 显示暂存区和工作区的差异
git diff –cache(staged 也可) [file] 显示暂存区和上一次提交的差异
git diff [first-branch]…[second branch] 显示两次提交之间的差异

git commit

git commit -m [message] 提交暂存区到本地仓库
git commit [file1] [file2] … -m [message] 提交暂存区的指定文件到本地仓库
git commit -a 不需要git add直接提交

git reset

git reset HEAD 回退所有内容到上一个版本
git reset HEAD [file] 回退文件file到上一个版本
git reset –soft HEAD~n 回退到前n个版本
git reset –hard HEAD 撤销工作区中所有未提交的修改内容
  • HEAD^^的个数表示前几个版本

  • HEAD~n可以取代上面的方式

  • message为备注信息

其他指令

git status 查看仓库状况,显示有变更的文件
git rm 从暂存区和工作区中删除文件
git mv 移动或重命名工作区文件

提交日志

git log

git log –oneline 查看历史提交记录的简洁形式
git log –graph 拓朴图形式查看历史提交记录

git blame <file>查看指定文件的修改记录

远程操作

git remote

git remote -v 显示所有远程仓库
git remote show [remote] 显示某个远程仓库信息
git remote add [shortname] [url] 添加远程版本库
git remote rm name 删除远程仓库
git remote rename [old_name] [new_name] 修改仓库名

git fetch

  • git fetch [alias]提取更新数据

  • 执行完后需要git merge branch从远程仓库提取数据并尝试合并到当前分支

git pull

1
git pull [远程主机名] [远程分支名]:[本地分支名]
  1. 将远程主机的分支拉过来与本地分支合并

  2. 若远程分支与当前分支合并,则冒号后可以省略

git push

1
git push [远程主机名] [本地分支名]:[远程分支名]
  1. 将本地分支推送到远程主机

  2. 参数

–force 强制推送
–delete 删除主机分支

分支管理

创建分支

  • git branch <name>创建分支

  • git branch列出分支

切换分支

  • git checkout <name>

分支合并

  1. git merge <branch>
  • 将分支branch合并到当前所在分支中
  1. 合并冲突

删除分支

  • git branch -d <name>

查看提交历史记录

  1. git log查看历史提交记录

  2. git blame <file>以列表形式查看指定文件的历史修改记录

Git与Github

添加远程仓库

1
2
git remote add [远程仓库名称] [url]
# 名称自取,url可以是https,也开始是ssh等其他格式

生成SSH Key

1
2
ssh-keygen -t rsa -C “Email@example.com”
# 邮箱为注册github的邮箱
  • 待定
Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy