Skip to content

一、概述

Git是分布式版本控制系统(Distributed Version Control System,简称 DVCS),分为两种类型的仓库: 本地仓库和远程仓库

Git在开发中可用于备份、代码还原、协同开发、追溯开发人和开发时间。

1.1 工作流程

​ 1.从远程仓库中克隆或拉取代码到本地仓库(clone/pull) ​ 2.从本地进行代码修改 ​ 3.在提交前先将代码提交到暂存区 ​ 4.提交到本地仓库。本地仓库中保存修改的各个历史版本 ​ 5.修改完成后,需要和团队成员共享代码时,将代码push到远程仓库

二、命令操作

2.1 配置信息

个人信息

shell
#设置个人姓名
git config --global user.name "Your Name"
#设置个人邮箱
git config --global user.email "email@example.com"
# 查看配置


<NolebasePageProperties />




git config --global user.name
git config --global user.email

用户目录

shell
## 用户目录.bashrc文件
#用于输出git提交日志
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
#用于输出当前目录所有文件及基本信息
alias ll='ls -al'

解决乱码

shell
git config --global core.quotepath fals
# ${git_home}/etc/bash.bashrc 文件最后加入下面两行
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"

2.2 版本库相关操作

shell
# (克隆): 从远程仓库中克隆代码到本地仓库
git clone
# (检出):从本地仓库中检出一个仓库分支然后进行修订
git checkout
# (抓取) : 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。
git fetch
# (拉取) : 从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于fetch+merge
git pull
# (推送) : 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库
git push
# 初始化版本库
git init
# 添加文件到git管理
git add 文件
# 提交到仓库
git commit -m "描述信息"
# 查看状态
git status
#查看版本历史记录 带文件名时擦看文件
#options
#--all 显示所有分支
#--pretty=oneline 将提交信息显示为一行
#--abbrev-commit 使得输出的commitId更简短
#--graph 以图的形式显示
git log (文件名)
#回退版本 HEAD^标识上一个版本 上上版本为HEAD^^ 往上100个版本为 HEAD~100 HEAD^也可修改为固定版本号
git reset --hard HEAD^
#记录每一次命令
git reflog

2.3 修改相关操作

shell
#撤销修改 让文件回到最后一次git commit或git add的状态
git checkout --文件
# 清除工作区修改
git reset HEAD file

#删除 仅删除,没提交到版本库
rm 文件
#删除 删除并提交到版本库
git rm 文件名
#误删时找回文件
git checkout -- 文件

2.4 远程仓库相关

shell
# 在本地新建远程仓库 git remote:添加远程仓库命令 origin:远程仓库别名
git remote add origin git@git地址
#查看远程仓库信息
git remote -v
#将本地库的内容推送到远程仓库 origin:远程仓库别名 master:本地仓库分支
# -u:把本地的master分支和远程的master分支关联起来,简化后续操作
# -f 表示强制覆盖
# --set-upstream 推送到远端的同时并且建立起和远端分支的关联关系。
git push -u origin master
#克隆项目
git clone git@项目地址

2.5 分支管理

shell
#查看分支
git branch
#创建分支
git branch <name>
#切换分支
git checkout <name>
#创建+切换分支
git checkout -b <name>
#合并某分支到当前分支
git merge <name>
#删除分支 -d 检查校验  -D 不经过检查校验
git branch -d <name>

#stash 将现有修改存储,可切换其他分支进行操作
# 把改动的代码暂存到起来
git stash 
#查看stash
git stash list
# 恢复暂存区 
git stash apply <name>
#删除存储的修改
git stash drop<name>
#恢复并删除
git stash pop <name>
#清除所有stash
git stash clear

2.6 tag管理

shell
# 列出所有tag
git tag
# 查看tag详细信息 
git show [tagName]
# 新建一个tag
git tag [tagName]
# 提交指定tag
$ git push [仓库简称] [tagName]
# 新建一个分支,指向某个tag
$ git checkout -b [branch] [tag]
# 删除本地tag
$ git tag -d [tag]
# 删除远程tag (注意 空格)
$ git push origin :refs/tags/[tag]

2.7 忽略文件

.gitignore配置文件

shell
#忽略文件
git check-ignore -v 文件名
#强制添加忽略文件
git add -f 文件名

配置示例

gitignore
# 所有以.a 结尾的文件讲被忽略(递归)
*.a
# 不管其他规则怎样,强制不忽略  lib.a
!lib.a
# 只忽略 文件 TODO (注意这里是文件)
/TODO
# 忽略 build文件夹下所有内容(递归) 这里是文件夹
build/
# 忽略 doc 目录下以 *.txt 结尾的文件 (不递归)
doc/*.txt
# 忽略 doc 目录下以 *.pdf 结尾的文件 (递归)
doc/**/*.pdf