git总结

简介

工作区:工作能看见的目录
版本库:工作区中的隐藏目录.git
暂存区:版本库中的stage
HEAD:指向master(当前分支)的指针

git add //将文件修改添加到暂存区
git commit //将暂存区所有内容提交到当前分支
//git自动创建master分支

git clone克隆远程仓库:

1、HTTPS方式,直接git clone;2、SSH方式,需配置SSH KEY;
SSH KEY相关配置:
配置专属的SSH key,实现正常的身份认证,进行git操作

ssh-keygen -t rsa -C ****@qq.com//(注册github申请的邮箱,rsa是加密算法)

专属SSH key已生成:/users/用户名/.ssh/id_rsa.pub,复制内容至github的SSH key中
本地测试连接是否成功:

ssh -T git@github.com

查看版本

git --version

配置

配置信息

git config
git config --global user.name "lxh"
git config --global user.email "****@qq.com"
//--global:全局参数,只运行一次,之后在系统操作,git都使用该信息

检查配置

git config --list
//检查某一项配置:git config user.name

颜色配置

git config --global color.ui true//显示颜色

git忽略文件配置
//忽略某些特殊文件,不提交
在git工作区根目录下创建文件.gitignore,填入要忽略的文件名,一般不需要从头编辑,最后提交.gitignore

file.cpp
*.so
.*
!.gitignore//不忽略该文件
git add -f filename //强制添加被忽略文件
git check-ignore 文件//检查忽略规则

配置别名

git config --global alias.lxh status
//git status == git lxh

自定义git配置文件通常存放在.git/config

Git使用

初始化仓库

git init//使当前目录变成可被git管理的仓库
//.git,用来跟踪管理版本库

克隆现有仓库

git clone url [自定义仓库名可选] //默认每个文件每个版本

添加文件到暂存区

git add filename

提交暂存区内容到仓库

git commit -m "test"
//-m "..."备注说明

查看git仓库当前状态变化

git status

比较变动

git diff filename//查看相较于上一次暂存修改了什么内容

显示提交信息

git log
git log -1 //显示最后一次提交信息
//查看全部的commit记录
//--pretty=oneline 输出信息太多可添加,查看历史所有版本信息,只包含版本号和记录描述

git回退

//当前版本:HEAD
//上个版本:HEAD^
//上上个版本:HEAD^^
//往上n个版本:HEAD~n
git reset --hard HEAD^ //回退到上个版本

git重置
恢复到新版本,但找不到commit id

git reflog //记录每一次命令
git reset --hard (commit id)

重新提交

git commit --amend
//会将暂存区的文件提交,若自上次提交未作修改,提交不变,所修改的只是提交信息(会覆盖),只会显示一次提交
//eg:
git commit -m "test01"
git add a.txt
git commit --amend -m "test02"

取消暂存的文件

git reset HEAD filename...... 
//撤销暂存区的修改,重新放回工作区

撤销对文件的修改

git checkout -- filename......
//git会用最近提交的版本覆盖掉本地的文件

删除文件

git rm filename//从版本库删除文件
//并git commit
git commit -m "remove ...file"

Git分支

创建并切换分支

git checkout -b dev
//相当于
git branch dev
git checkout dev

查看当前分支

git branch//列出所有分支,当前分支前标有*

合并分支

git merge dev //合并指定分支到当前分支
git merge --no-ff -m "merge with no-ff" dev //--no-ff,禁用Fast forward模式,会生成一个新的commit

删除分支

git branch -d dev
git branch -D dev//强制删除

创建并切换分支

git switch -c dev
git switch dev//切换

隐藏当前工作区

git stash
//工作区会变干净,除非有没被git管理的文件

恢复工作区

git stash list //查看stash内容
//1、
git stash apply //恢复后stash内容并不删除,需要用git stash drop删除
//git stash apply stash@{0} 恢复指定的stash
//2、
git stash pop //恢复的同时删除stash内容

将指定的提交应用于其他分支

git cherry-pick commitid//复制特定的提交到当前分支,参数不一定是提交的哈希值,也可以是分支名,表示转移该分支的最新提交
//支持一次转移多个提交
//转移一系列连续提交
git cherry-pick A..B//不包含提交A,提交A必须早于提交B,包含提交A,A^..B

//cherry-pick选项
//-e,打开外部编辑器,编辑提交信息
//-n,只更新工作区与暂存区,不产生新提交
//-x,在提交信息末行追加信息,方便查询该提交是如何产生的
//-s,在提交信息末行追加签名
//-m parent-number,若原始提交为合并节点,cherry-pick默认失败,-m告诉git应采用哪个分支的变动,parent-number是从1开始的整数,代表原始提交的父分支编号
git cherry-pick -m 1 commitid
//cherry-pick采用提交来自编号1的父分支的变动,一般来说,1号父分支是接受变动的分支,2号父分支是作为变动来源的分支

//代码冲突,cherry-pick会停下
git cherry-pick --continue //修改冲突后让cherry-pick过程继续执行
git cherry-pick --abort //代码冲突后放弃合并,回到操作前
git cherry-pick --quit //代码冲突后,退出cherry-pick,不会回到操作前

添加一个远程仓库

git remote add name git://url 

将远程代码抓取到本地

git fetch name

查看远程库的信息

git remote
//-v 显示更详细信息

推送分支

git push origin ma:dev
//本地分支ma,远程分支dev,:dev可省略,远程对应的分支

抓取分支

git pull //抓取最新的提交

建立本地分支与远程分支的链接

git branch --set-upstream-to=origin/dev dev
git checkout -b dev origin/dev   //创建同时建立连接
git rebase //将分叉的提交历史整理成一条直线,看上去更直观

标签

//创建标签
git tag v1.0//默认标签在最新提交上
git tag v1.0 commitid 
//-a标签名,-m指定说明文字

//查看标签
git tag //标签按字母排序
git show v1.0 //查看标签信息

//删除标签
git tag -d v1.0 //标签只存储在本地,不会自动推送到远程

//推送标签
git push origin v1.0
git push origin --tags //一次性推送所有未推送到远程的本地标签

//删除远程标签
//先删除本地,再远程
git push origin :refs/tags/name
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值