项目中一直使用Git、现在对Git做一个总结
Git 分布式代码管理工具
流程图如下
工作原理
命令演示
1 初始化一个代码仓库
git init
2 如果使用Git 必须给Git配置用户名和邮箱
git config user.name "XXX"
git config user.email "XXX@qq.com"
给Git配置全局的用户名和邮箱
git config --global user.name "XXX"
git config --global user.email "XXX@qq.com"
3 初始化项目
touch main.m 创建main.m
git add mian.m 将main.m 添加到缓存区
git add . 将不在暂缓区的文件全部添加到暂缓区
git commit -m"初始化项目" 将暂缓区的所有内容添加到本地仓库,情况暂缓区
git remote add origin https://github.com/****** 将本地git文件链接到远程地址
git push origin master 推送当前代码到远程仓库
4 查看文件状态
git status
红色 该文件被添加或者修改,但是没有天骄到git的暂缓区
绿色 该文件在暂缓区,但是没有提交到本地仓库
5 给命令其别名
git config alias.st "status" 给 status 起别名st
git config alias.ci "commit -m" 给commit -m起别名 ci
git config --global alias.st "status" 全局给 status 起别名st
6 删除文件
git rm main.m 将mian.m删除
7 产看版本信息
git log 版本号是由sha1算法生成的40位哈希值
git reflog 可以查看所有版本回退的操作
8 版本回退
git reset --head HEAD 回到当前版本
git reset --head HEAD^ 回到上个版本
git reset --head HEAD^^ 回到上上个版本
git reset --head HEAD~100 回到前100个版本
git reset --head 版本号(前五位) 回到某个固定版本号的版本
9 给log起别名
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
10. 强制推送
A开发 git reset --head HEAD^
A开发 git push -f
B开发 git reset --head HEAD^
需求和通知一下同伴 让同伴也将本地版本库回退到指定版本
二 共享版本库
自己搭建git服务器(Linux)
可以把代码托管到(GitHub、OSChina)
一个文件夹
一个U盘
在在一个文件夹下 共享版本库 命令
git init --bare
三、分支介绍
1、创建分支 并切换到该分支 git checkout -b + 分支名字
2、切换分支 git checkout + 分支名字
3、删除分支
- git branch : 查看当前在哪个分支
- git branck -r :查看本地版本库分支
- git branch -d + 分支名字 删除本地分支
- git branch -r -d origin/分支名字 删除本地仓库分支
- git push origin --delete+分支名字 将删除的分支操作推送到远程仓库
四 tag 介绍
git tag -a ’版本’ -m ‘描述’
git push - -tags 把tag推送到远端
git tag '版本号'
git push origion 'tag号'
git tag -d 'tag号' 删除远端tag
git push origion : tag号 删除远端tag
一般使用 本地commit 后 本地打一个tag git tag '版本号'
然后 git push origion 'tag号' 直接将本地修改推送到指定tag
删除子模块
# 逆初始化模块,其中{MOD_NAME}为模块目录,执行后可发现模块目录被清空git submodule deinit {MOD_NAME} # 删除.gitmodules中记录的模块信息(--cached选项清除.git/modules中的缓存)git rm --cached {MOD_NAME} # 提交更改到代码库,可观察到'.gitmodules'内容发生变更git commit -am "Remove a submodule." # 逆初始化模块,其中{MOD_NAME}为模块目录,执行后可发现模块目录被清空 git submodule deinit {MOD_NAME} # 删除.gitmodules中记录的模块信息(--cached选项清除.git/modules中的缓存) git rm --cached {MOD_NAME} # 提交更改到代码库,可观察到'.gitmodules'内容发生变更 git commit -am "Remove a submodule."# 逆初始化模块,其中{MOD_NAME}为模块目录,执行后可发现模块目录被清空git submodule deinit {MOD_NAME} # 删除.gitmodules中记录的模块信息(--cached选项清除.git/modules中的缓存)git rm --cached {MOD_NAME} # 提交更改到代码库,可观察到'.gitmodules'内容发生变更git commit -am "Remove a submodule."
git remote -v 常看远端分支地址
git remote add origion_afn afn地址 添加一个远端地址
git fetch origion_afn 把之前远端的地址拉倒自己的仓库
git branch -av 查看
git checkout origion_afn/master -b origion_afn/master 本地创建并切换到这个分支
git tag 查看当前tag
git checkout 3.1.0 -b origin-afn/3.1.0
git merge origin-afn/3.1.0 将3.1.0合并到主分支