参考
https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E8%8E%B7%E5%8F%96-Git-%E4%BB%93%E5%BA%93
文件的状态变化周期
文章目录
- git 基础
- 检查当前文件状态、查看已暂存和未暂存的修改
- 暂存前后的变化
- 跟踪新文件
- 提交更新
- 移除文件
- 移动文件、重命名操作
- 查看提交历史
- 撤消对文件的修改
- 查看远程仓库
- 推送到远程仓库
- 查看某个远程仓库
- 远程仓库的重命名与移除
- git 分支
- 分支切换
- 分支的合并
- 删除分支
- 删除远程分支
- 拉取
- Git 分支 - 远程分支
- Git 分支 - 变基
- git 补丁
git 基础
忽略文件
.gitignore # https://github.com/github/gitignore
检查当前文件状态、查看已暂存和未暂存的修改
git status
git status -s #状态简览
git status --short
暂存前后的变化
git diff
git diff --staged #比对已暂存文件与最后一次提交的文件差异
git diff --cached #查看已经暂存起来的变化
跟踪新文件
git add xxx
提交更新
git commit xxx
git commit -m "xxx"
移除文件
git rm xxx
移动文件、重命名操作
git mv xxx xxxc
查看提交历史
git log
git log -p -2 #显示每次提交所引入的差异(按 补丁 的格式输出),使用 -2 选项来只显示最近的两次提交git log --stat #除了显示基本信息之外,还附带了每次提交的变化
git log --pretty=oneline #oneline 会将每个提交放在一行显示,--pretty 使用不同于默认格式的方式展示提交历史
git log --pretty=format:"%h - %an, %ar : %s" #输出对后期提取分析格外有用
git log --since=2.weeks # 限制输出长度 --since 和 --until 这种按照时间作限制的选项很有用
撤消对文件的修改
git checkout -- xxx
git reset HEAD <file> #撤消之前所做的修改
查看远程仓库
git remote
git remote -v #显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL
git remote add <shortname> <url> #添加一个新的远程 Git 仓库
推送到远程仓库
git push origin master
查看某个远程仓库
git remote show origin
远程仓库的重命名与移除
git remote rename xxx xxxc
git remote remove xxx
git remote rm xxx
git 分支
分支切换
git checkout testing
git log --oneline --decorate --graph --all #输出提交历史、各个分支的指向以及项目的分支分叉情况
git checkout -b <newbranchname> #创建新分支的同时切换过去
分支的合并
git merge xxx
删除分支
git branch -d xxx
git branch -D xxx #强制删除
删除远程分支
git push origin --delete xxx
分支管理
git branch
git branch -v #查看每一个分支的最后一次提交
git branch --merged #查看哪些分支已经合并到当前分支
git branch --no-merged #查看所有包含未合并工作的分支
拉取
git pull #会查找当前分支所跟踪的服务器与分支, 从服务器上抓取数据然后尝试合并入那个远程分支。
#git pull 相当于是一个 git fetch 紧接着一个 git merge 命令
git fetch #服务器上抓取本地没有的数据时,它并不会修改工作目录中的内容
Git 分支 - 远程分支
git remote show <remote>
Git 分支 - 变基
https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%8F%98%E5%9F%BA
git 补丁
git format-patch -1git am xxx.patch # 打补丁
git apply xxx.patch#git format-patch详解
git format-patch HEAD^ #打包最近的一个patc,有几个^就打包几个patch的内容;或git format-patch -n
git format-patch -n1 -n2 #打包版本n1与n2之间的patch:
git format-patch xxx #某次提交以后的所有patch:,xxx是commit名
git format-patch -n xxx #某次提交(含)之前的几次提交:,xxx是commit名
git format-patch xxx..xxx #某两次提交之间的所有patch:,xxx是commit名
git format-patch xxx --stdout > xxx.patch # 将所有patch输出到一个指定位置的指定文件