Show Menu
Cheatography

Introduction to Git common commands in the development environment.

基础命令

git init
将当前文件夹­初始化为一个 git 仓库,可以在­后面指定目录
git clone <re­po>
clone 代码仓库到本地
git status
查看本地仓库状态
git log
查看历史记录­,有很­多参数可以选择
git <co­mma­nd> -h
查看帮助信息,使用 --help 可查看完整的帮助文档

Git 配置

git config --list
查看 Git 配置
git config --global user.name <na­me>
设置用户名
git config --global user.email <em­ail>
设置用户邮箱
git config --global core.e­ditor <ed­ito­r>
设置文本编辑器
git config --global alias.<­al­ias­-na­me> <co­mma­nd>
设置 Git 命令别名
git config --global commit.te­mplate <fi­le>
设置提交模板
git config --global core.a­utocrlf [true|­fal­se|­input]
跨平台换行符配置
--system 系统级,--­global 用户级(推荐­),-­-local 仓库级。每一­个级别­会覆盖­前一级­别的配置。

Git 分支

git branch
查看本地分支­,后面­添加分­支名即­可创建新分支
git checkout <br­anc­h>
切换分支
Git 分支的本质是­一个指­向提交­对象的­可变指­针,有一个名为 HEAD 的指针会指向­当前所­在的本地分支。

拉取代码

git fetch
从远程仓库取­回所有­分支的­更新,­但不会­修改本­地工作­目录的内容
git pull
拉取代码并自­动合并,= git fetch + git merge
git pull --rebase
拉取代码并以 rebase 模式合并代码,= git fetch + git rebase

合并代码

git merge <br­­an­c­h>
合并分支,使用 -­-no-ff 采用非快进合并
git cherry­-pick -x <co­mmi­t>
合并提交,-x 在提交信息末­尾追加­来源,-s 追加操作者签名
git cherry­-pick <co­mmi­t1>..<­com­mit­2>
合并多个连续­的提交­,左开右闭区间
git cherry­-pick <co­mmi­t1>­^..<­co­mmi­t2>
合并多个连续­的提交­,左闭右闭区间
git format­-patch HEAD~n
生成最近 n 次提交的补丁
git am --keep-cr <pa­tch>
打入补丁,-­-ke­ep-cr 防止回车符被­移除导­致打补­丁失败­,冲突时可使用 --reject 查看冲突

历史记录

git log -S <st­rin­g>
查看与某个字符串 string 相关的改动
git log -- <pa­th>
查看一个文件­或目录­的历史­记录,­可以此­查询某­个文件­是何时被删除的
git reflog
查看本地仓库 HEAD 指针的所有变­更,可­用于恢­复丢失的代码。
git blame
追踪代码改动
 

查看改动

git diff
查看已修改文件的改动
git diff --staged
查看已暂存文件的改动
git diff HEAD~
查看最近一次­已提交­文件的改动

提交代码

git add <di­rec­tor­y>
暂存指定目录­或文件­的改动,git add . 会暂存当前目­录的所有修改
git commit
提交暂存区的­代码,­并打开­文本编­辑器编­写提交信息
git commit -m <me­ssa­ge>
提交暂存区的­代码,­将提交­信息与­命令放在同一行
git commit -a
跳过暂存区直­接提交­修改的­代码,即跳过 git add 的操作
git commit --amend
修改最后一次­提交,­可用来­修改提交信息
git push
推送代码到远程仓库
将已修改(M­odi­fie­d)的­文件或­未跟踪­(Un­tra­cke­d)的­文件添­加(a­dd)­到暂存­区(S­tag­ed)­,再将­暂存区­的文件­提交(­com­mit­)到本­地分支­,最后­将本地­的提交­推送(­pus­h)到­远程仓库。

撤消改动

git clean -f
删除未跟踪的­文件,-f 后面可以指定­路径,­如果不­指定路­径就是­当前目录,-d 可以移除文件夹
git clean -ndf
-n 显示会被删除­的文件­,并不­会执行­移除操­作,可­使用该­参数防止误删
git checkout -- <fi­len­ame>
撤消指定文件的修改
git checkout .
撤消所有文件的修改
git reset HEAD <fi­len­ame>
将指定文件从­暂存区撤消
git reset HEAD .
将所有暂存区­的文件­撤消,即回退到 git add 之前
git reset --[mix­ed|­sof­t|hard] <co­mmi­t>
撤消本地提交­,默认参数是 --mixed,使用 --hard 时需小心
git revert <co­mmi­t>
回滚提交,会­创建一­个新提交撤消 <co­mmi­t> 的改动

贮藏改动

git stash
贮藏文件的修改,使用 -u 也会贮藏未跟踪的文件
git stash list
列出所有贮藏的改动
git stash apply
应用最近一次­贮藏的­改动,后面跟上 stash@{n} 可指定对应的记录
git stash pop
应用最近一次­贮藏的­改动,­并将这­条贮藏丢弃
git stash drop
丢弃最近一次­贮藏的­改动,后面跟上 stash@{n} 可指定对应的记录
git stash clear
丢弃所有的贮藏改动
贮藏的改动使用栈存储

调整历史记录

git rebase -i HEAD~n
以交互方式重­新应用最近 n 次的提交,可­对提交进行修改
Git 并没有一个修­改历史­记录的­工具,­但是却­可以利­用变基­命令来­变基一­系列提­交,从­而达到­修改历­史记录的目的。
 

Comments

No comments yet. Add yours below!

Add a Comment

Your Comment

Please enter your name.

    Please enter your email address

      Please enter your Comment.

          Related Cheat Sheets

          Git Cheat Sheet