git 笔记

本文详细介绍了Git的安装、基本使用、版本控制、文件管理、日志查看、分支操作、远程仓库管理、代码合并与回滚等核心功能,并深入探讨了高级应用如文件比较、stash保存进度、冲突解决策略等,旨在帮助开发者高效掌握Git的各个方面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

git 流程

安装:
1 yum -y install git*
2 源代码安装 
	make prefix=/usr/local all
	make prefix=/usr/local install

安装文档:
	make prefix=/usr/local doc info
	make prefix=/usr/local install-doc install-html install-info

使用文档:
	git <sub-command> --help
	git help <sub-command>

git init
git add * [git clone url]
git commit -m "init"
git pull
git push origin develop

git push -f //强制推


修改上一次commit是的msg
git commit --amend 进入vim编辑界面
[--allow-empty 允许空提交]


修改历史版本中的msg 
git rebase -i <commit-id>


删除上一版本中的某个文件
git rm --cached fileName


将修改过的文件加入暂存区
git add -u (update)


将添加删除修改的文件提交到暂存区
git add -A (All)
git add -i (进入交互模式)
git add -f file(提交忽略的文件到暂存区)


对一个文件的内容进行选择性提交
git add -p

git add filename 逆向操作
git reset -- filename 
git reset HEAD  filename


文件差异比较
git diff filepath [--word-diff 逐行逐字比较 默认按行比较] [--cache 对比暂存区的文件差异 默认比较未commit的文件]

比较上一版本
git diff HEAD^^ -- file
git diff [--word-diff 逐字比较]
git diff HEAD
git diff --cached
原基线和原暂存区比较
git diff stash@{1}^2^ stash@{1}^2
原暂存区和原工作区比较
git diff stash@{1}^2 stash@{1}
原基线和原工作区比较
git diff stash@{1}^1 stash@{1}
用stash@{1} 来回复进度
git stash apply stash@{1}

git diff B A //比较里程碑B A
git diff A   //比较工作区 里程碑A
git diff --cached A //暂存区 
git diff //工作区 暂存区
git diff --cached //暂存区 HEAD
git diff HEAD //工作区 head
git diff path1 path2 //非git文件比较


保存工作进度
git stash

查看保存的工作进度列表
git stash list 
取出最近保存的工作进度
git stash pop

切换分支
git checkout <new_branch>
基于HEAD~3版本创建一个本地分支
git checkout -b newbranch HEAD~3


撤销工作区中尚未提交的修改
git checkout -- filename
git checkout .(全部)

使用master分支中的文件替换工作区和暂存区的全部或部分文件 较危险
git checkout HEAD . [filename]

恢复到之前保存的工作进度
git stash pop
删除 (默认删除最近的)
git stash drop  
git stash sava "msg"
清楚所有的进度
git stash clear
基于进度创建分支
git stash branch


清理文件 同时会清理掉本地已修改的git代码
git clean -fdx
git reset --hard
测试可能删除的文件
git clean -nd

删除暂存区文件 工作区不受影响
git rm --cache filename

暂存区目录树被master重写
git reset HEAD

引用退一步 暂可以理解为commit 撤销一次
git reset --soft HEAD^ 
git reset --mixed HEAD^ 


设置别名
git config --global(当前用户) [--system 面向全部用户] alias.st status

开启颜色设置
git config -global color.ui true


搜索工作区文件内容
git grep key


查看工作区状态
git status [-s 精简格式输出] [-b(branch) 列出属于哪个分区] [--ignored]


编辑git config文件
git config -e  
[默认对当前项目下的.git/config 文件编辑 (版本库级别)]
[--global 对当前用户全局的git配置文件编辑 .gitconfig (用户级别)]
[--system 系统级编辑 /etc/gitconfig (系统级别)]


设置config下的值
git config a.b.c d  
表示设置 节点
[a "b"]
	c = d


查看日志
git log [--stat 文件变更统计]
git log -p -2 //-p 选项展开显示每次提交的内容差异,用 -2 则仅显示最近的两次更新
git log --author=<pattern> //查看某人提交
git log --grep=<pattern> [filename]
git log filename //查看文件操作记录
git log --oneline --graph --decorate //图形查看提交树


重置master到某一版本
git reset  --hard HEAD^(head^表示父版本  提交ID->sha1)


恢复master到某一版本
git reflog show master | head -n
找到需要的ID 执行 
git reset --hart  <commit-ID>


切换URL
git remote set-url origin git@127.0.0.1:tete/api.git
已注册的远程版本库
git remote -v
注册远程版本
git remote add new-remote [--no-tags 避开远程版本库中的里程碑引入本地] file:///path
修改远程版本库名
git remote rename new-remote new-remote1
获取所有远程版本库更新
git remote update
忽略上一个命令的远程更新
git config remote.remotename.skipDefaultUpdate true
删除注册的远程版本库
git remote rm remotename


将最近3个提交转换为补丁文件
git format-patch [-s 当前用户签名] HEAD~3..HEAD


工作区中搜索
git grep 'wxpay'

查看提交日志中每次修改的文件及修改大小
git log --pretty=fuller --stat
git log [--pretty=oneline精要 fuller提交者 raw原始数据]

git log [--graph 显示分支图] --oneline [-p 显示日志的时候显示改动] [--stat 变更概要]
重置到某一次提交
git reset --hard 9eaass0

git reflog show master  | head -6
git reset -- hard master@{2}


打tag 里程碑
git tag -m "tag msg" tagname [ID 可选 默认HEAD]
获取tag名
git describe
git tag -n5 //获取五个tag名
git tag -d tagname //删除tag 
git tag -m "f update" tagname HEAD^//-f 强制更新

显示里程碑D及其提交
git show D -- stat


图形工具
gitk --all //显示所有分支
gitk --since="2 weeks ago"
git mergetool //图形合并工具

gitg &
qgit &


文件追朔
git blame filepath [-L n,m 查看某段]

rebase
git rebase --onto <newbase> <since> <till> //自since到till
git rebase --onto <-i ...> <--continue> <--skip> <--abort>
-i 变基过程中被中断时可采用的命令 继续变基或终止 等
--continue 变基过程中遇到冲突而暂停时 先解决冲突后添加到暂存区不提交 然后在恢复变基操作时使用
--skip     变基过程中遇到冲突而暂停时 跳过当前提交而使用
--abort    变基过程中遇到冲突而暂停时 终止变基操作 回到之前分支时使用

克隆
git clone [--bare] [--mirror] <repository> <local-dir>
<repository> 源 <local-dir>本地目录
--bare 克隆裸版本库 已dir.git .git为后缀
--mirror 同上 不过对上有版本库进行了注册 这样可以使用git fetch与上游版本库持续同步

丢弃relog 默认90天之前的
git relog expire --all 
git relog expire=now --all //将全部relog过期
对版本库进行整理
git gc 
git gc --prune=now 清理未关联的对象
git gc --auto

分支
git branch [-v 查看分支 -r查看远程分支]
git branch branchname
git branch branchname start-point //从point开始做分支
git branch [-d 删除分支] [-D 强制删除分支]
git branch [-m -M 强制重命名]

将开发中的分支develop,合并到稳定分支master
git checkout master
git merge develop
git commit

开发中的分支develop,衍合到稳定分支master
git checkout master
git rebase develop
git rebase --continue

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值