Git常用指令汇总
Posted 夏小悠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git常用指令汇总相关的知识,希望对你有一定的参考价值。
文章目录
前言
本篇文章主要汇总了项目开发过程中常用的git
命令,以便后续查询。
1. 获取git仓库
git clone <url>
从服务器端克隆一个已存在的git
仓库到本地
# 克隆 Musicer 库到本地
git clone https://github.com/xiayouran/Musicer.git
# 不仅会 git clone 当前项目中的代码,也会 clone 项目中子项目的代码
# 即 git 中的 git
git clone --recursive xxxxxx
git init
将尚未进行版本控制的当前本地目录转换为git
仓库
git init
# 在当前目录生成.git子目录,所有有关此项目的快照数据都存放在这里,默认是隐藏的
# 添加仓库
git remote add origin git@xxxxxx.git
2. 记录每次更新到仓库
git status
查看哪些文件处于什么状态
git status
# 更精简的输出
git status -s
# git status --short
?? # 表示新添加的未跟踪文件
A # 表示新添加到暂存区中的文件
M # 表示修改过的文件
git add
添加新创建或修改的文件到本地的暂存区
# 添加所有文件
git add .
# 等同上述命令
git add --all
.gitignore
忽略文件
# 通过配置目录下的 .gitignore 文件来忽略某些文件
for example:
# 忽略任何目录下名为 .idea 的文件夹
.idea/
# 忽略所有的 .pyc 文件
*.pyc
git diff
显示哪些文件发生了改变
# 查看尚未暂存的文件更新了哪些部分
git diff
# 比对已暂存文件与最后一次提交的文件差异
git diff --staged
# 查看已经暂存起来的变化
git diff --cached
git commit
提交代码到本地库
# 添加提交描述
git commit -m 'xxx'
# 完成 add 和 commit 两个操作
git commit -a -m 'xxx'
git rm
删除文件
# 删除 xxx.txt 文件(包括磁盘上的)
git rm -f xxx.txt
# 删除 xxx.txt 文件(不包括磁盘上的),只是从暂存区删除
git rm --cached xxx.txt
# 清除本地缓存
git rm -r --cached .
git mv
移动文件
# 文件重命名
git mv xxx.txt yyy.txt
3. 查看提交历史
git log
查看提交历史
# 按时间先后顺序列出所有的提交,最近的更新排在最上面
git log
# 显示每次提交所引入的差异(按 patch 的格式输出)
git log -p
# git log --patch
# 限制日志条目数量
git log -p -3
# 只显示最近的三次提交
# 查看每次提交的简略统计信息
git log --stat
# 使用不同于默认格式的方式展示提交历史
# oneline 将每个提交放在一行显示,在浏览大量的提交时非常有用
git log --pretty=oneline
# --graph 在日志旁以 ASCII 图形显示分支与合并历史
git log --pretty=oneline --graph
# format 可以定制记录的显示格式,对后期提取分析格外有用
git log --pretty=format:"%h - %an, %ar : %s"
选项 | 说明 |
---|---|
%H | 提交的完整哈希值 |
%h | 提交的简写哈希值 |
%T | 树的完整哈希值 |
%t | 树的简写哈希值 |
%P | 父提交的完整哈希值 |
%p | 父提交的简写哈希值 |
%an | 作者名字 |
%ae | 作者的电子邮件地址 |
%ad | 作者修订日期 |
%ar | 作者修订日期,按多久以前的方式显示 |
%cn | 提交者的名字 |
%ce | 提交者的电子邮件地址 |
%cd | 提交日期 |
%cr | 提交日期(距今多长时间) |
%s | 提交说明 |
4. 撤消操作
# 覆盖上次的提交信息
git commit --amend
git reset
取消暂存
# 取消 xxx.txt 文件的暂存
git reset HEAD xxx.txt
5. 远程仓库的使用
git remote
查看已经配置的远程仓库服务器
git remote
# 显示需要读写远程仓库使用的 git 保存的简写与其对应的 URL
git remote -v
# 添加一个新的远程 git 仓库
git remote add <shortname> <url>
# 查看某个远程仓库
git remote show <remote>
# 查看 origin 远程仓库
git remote show origin
git fetch
从远程仓库中获得数据
# 从远程仓库中拉取所有本地还没有的数据
# 默认 clone 的仓库<remote>为origin
git fetch <remote>
# 只会将数据下载到本地仓库,并不会自动合并或修改当前的工作,需要手动合并
git push
推送到远程仓库
git push <remote> <branch>
# 将 master 分支推送到 origin 服务器
git push origin master
6. 打标签
git tag
给仓库历史中的某一个提交打上标签
# 列出已有的标签
git tag
# git tag -l
# git tag --list
# 创建附注标签(用于版本号)
git tag -a v1.0 -m "my version 1.0"
# 创建轻量标签
git tag v1.0
# 对提交历史打标签
git tag -a v1.0 <hash value>
# 删除标签(local)
git tag -d v1.0
# 删除远程标签
git push origin --delete v1.0
# 推送远程标签
git push origin master --tags
git show
查看标签信息和与之对应的提交信息
# 查看 tag 为1.0的信息
git show v1.0
7. 使用分支
git branch
创建分支
# 创建分支
git branch xxx
# 删除分支
git branch -d xxx
# 删除远程分支
git push origin --delete xxx
# 覆盖远程分支
git push -u origin xxx -f
# 查看当前所有分支
git branch
# 查看每一个分支的最后一次提交
git branch -v
# 要查看哪些分支已经合并到当前分支
git branch --merged
# 查看所有包含未合并工作的分支
git branch --no-merged
git checkout
切换分支
# 切换分支到xxx
git checkout xxx
# 创建分支yyy,并切换到分支yyy
git checkout -b yyy
git merge
合并分支
# 将分支xxx合并到当前HEAD所指的分支
git merge xxx
git pull
获取最新的远程仓库分支
# 获取最新的远程仓库分支
git pull origin xxx
8. Q&A
Q1:
出现warning: suboptimal pack - out of memory
异常信息:
A1:
需要在.git
目录下的config
文件添加:
[pack]
windowMemory = 64m
Q2:
如何删除大文件或工程缓存的日志文件?
A2:
执行如下命令:
# 找出大文件
git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk 'print$1')"
# 删除
git filter-branch --force --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch YOUR-FILE-NAME' --tag-name-filter cat -- --all
rev-list: # 用来列出Git仓库中所有提交中涉及的文件名及其ID
--objects: # 列出该提交涉及的所有文件ID
--all: # 所有分支的提交,相当于指定了位于/refs下的所有引用
verify-pack: # 命令用于显示已打包的内容,用它来找到那些大文件
-v: # 打印详细信息
filter-branch: # 用来重写Git仓库中的提交
--index-filter: # 用来指定一条Bash命令,然后Git会检出所有的提交,执行该命令,然后重新提交
–all: # 表示需要重写所有分支(或引用)
YOUR-FILE-NAME: # 查找出来的大文件名字或文件夹
# 清处并回收空间
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
# git gc --aggressive --prune=now
# 推送到服务器,清理远程仓库
git push origin --force --all
git remote prune origin
# 查看仓库大小
git count-objects -vH
Q3:
远端仓库太大,拉取不下来怎么解决?
A3:
执行如下命令:
# 克隆最新一次的commit
git clone --depth 1 git@xxxxxx.git
# 下载所有历史
git fetch --unshallow
温馨提示:一定要写好
.gitignore
,大文件别上传^_^
以上是关于Git常用指令汇总的主要内容,如果未能解决你的问题,请参考以下文章