配置 |
git config –global user.name “John Doe” |
配置 Git 提交姓名 |
配置 |
git config –global user.email “[email protected]” |
配置 Git 提交邮箱 |
创建 |
git init |
初始化当前目录为 Git 目录 |
创建 |
git add ./[file_name] |
添加跟踪(所有)当前操作文件到 Git 管理暂存 |
创建 |
git clone [URL] |
从 URL 仓库clone文件并建立 Git 管理 |
提交 |
git commit -m ‘提交记录’ |
提交当前暂存区的文件并记录提交 |
提交 |
git status |
查看文件 Git 状态 |
提交 |
git status -s/–short |
查看文件 Git 状态(紧凑格式) |
提交 |
.gitignore文件 |
文件中记录当前目录下不参与 git 跟踪的文件 |
比较 |
git diff |
比较工作目录中当前文件和暂存区域快照之间的差异 |
比较 |
git diff –[cached/staged] |
查看已暂存与当前已提交的文件差异 |
删除 |
git rm [file_name] |
从当前 Git 仓库中删除某文件 |
删除 |
git rm -f [file_name] |
从当前 Git 仓库中删除某文件(包括已修改但未暂存的文件) |
删除 |
git rm –cached [file_name] |
从当前 Git 仓库中删除某文件不再跟踪(但保留在当前工作目录中) |
移动 |
git mv [file_old_name] [file_new_name] |
重命名/移动文件 |
日志 |
git log |
查看提交日志 |
日志 |
git log -p -[N] |
查看最近 [N] 次的提交日志和差异 |
日志 |
git log –stat |
查看每次提交的简略的统计信息 |
日志 |
git log –graph |
查看每次提交的图形化的统计信息 |
日志 |
git log –pretty=[oneline/short/full/fuller] |
指定使用不同于默认格式的方式展示提交历史 |
日志 |
git log –pretty=format:”%h – %an, %ar : %s” |
定制要显示的记录格式[^定制格式说明] |
撤销 |
git commit –amend |
撤销上次提交,并重新提交(用当前状态替换上次提交) |
撤销 |
git reset HEAD [file] |
取消某文件暂存(撤销某文件的 git add 操作) |
撤销 |
git checkout – [file] |
撤销对工作目录下未提交的文件的修改 |
远程 |
git remote [-v] |
查看远端仓库名[及其 URL] |
远程 |
git remote add [shortname] [url] |
添加远端仓库并命名 |
远程 |
git fetch [remote-name] |
拉取远端所有内容以及更新至本地引用 |
远程 |
git push [remote-name] [branch-name] |
推送本地[branch-name]分支至远端[remote-name] |
远程 |
git remote show [remote-name] |
查看远端仓库详细状态 |
远程 |
git remote rename [remote-old-name] [remote-new-name] |
重命名远端仓库 |
远程 |
git remote rm [remote-name] |
移除远端仓库 |
标签 |
git tag |
列出所有标签 |
标签 |
git tag -a [tag-name] -m “[annotation]” |
创建附注标签 |
标签 |
git show [tag-name] |
列出指定标签详细信息 |
标签 |
git tag [tag-name] |
创建轻量标签 |
标签 |
git tag -a [tag-name] [commit-sha-1] |
对某次提交(以 sha-1 码形式)补充标签 |
标签 |
git push [branch-name] [tag-name]/[–tags] |
将本地的[某个/全部]标签全部推送至远端 |
标签 |
git checkout -b [branchname] [tagname] |
在特定标签上创建一个新的分支 |
别名 |
git config –global alias.[alias] [command] |
创建一个[command]的[alias]别名(git config --global alias.unstage 'reset HEAD --' ) |
分支 |
git branch [branch-name] |
创建分支(但是不会切换至此分支) |
分支 |
git checkout [-b] [branch-name] |
[创建并]检出此分支为当前分支 |
分支 |
git merge [branch-name] |
在当前分支处合并某分支 |
分支 |
git branch -[d/D] [branch-name] |
[删除/强制删除]某分支 |
分支 |
git branch [-v/-vv] |
查看所有分支[以及它们最后一次提交/以及与本地缓存下的远端分支的联系] |
分支 |
git branch –merged/–no-merged |
查看[已经/尚未]合并到当前分支的分支 |
分支 |
git checkout -b [branch] [remotename]/[branch] |
从远端检出并创建本地分支同时默认跟踪远端此分支 |
分支 |
git checkout –track [remotename]/[branch] |
从远端检出并创建本地同名分支同时默认跟踪远端此分支 |
分支 |
git branch [-u/–set-upstream-to] [remotename]/[branch] |
设置或更新当前分支跟踪远端分支 |
分支 |
git fetch –all |
拉取远端分支所有更新至本地缓存 |
分支 |
git pull/[git fetch THEN git merge] |
拉取远端分支并合并 |
分支 |
git push origin –delete [branch-name] |
删除远端分支 |
变基 |
git rebase[目前使用不多,需要深入理解] |
不要对在你的仓库外有副本的分支执行变基,详情参见此处 |
储藏 |
git stash/git stash save |
储藏当前未提交的修改并回复工作目录至提交状态 |
储藏 |
git stash list |
查看当前储藏栈 |
储藏 |
git stash apply [stash@{2}] |
应用[最近的一次/指定的某次]储藏 |
储藏 |
git stash drop [stash@{0}] |
在储藏栈中删除[指定的某次]储藏 |
储藏 |
git stash pop |
在储藏栈中应用最近的一次储藏并删除 |
储藏 |
git stash –keep-index |
c储藏工作目录中未暂存的东西(已经通过 add 暂存的不储藏) |
储藏 |
git stash -u |
储藏当前未提交的修改(包括未加入 Git 跟踪的文件) |
储藏 |
git stash branch [branch-name] |
依据上次储藏的内容创建一个新的分支并应用上次的储藏(将上次储藏前的工作目录应用于一个新的分支上处理) |
清理 |
git clean |
清理当前目录中所有未被跟踪的文件且不能恢复(不包括 .gitignore 文件中的列表) |
清理 |
git stash –all |
清理当前目录中所有未被跟踪的文件并暂存起来 |
清理 |
git clean -f -d |
移除工作目录中所有未追踪的文件以及空的子目录 |
清理 |
git clean -d -n |
使用-n而不是-d表示做一次演习然后告诉你将要移除什么 |
清理 |
git clean -f -d -x |
移除工作目录中所有未追踪的文件以及空的子目录(包括 .gitignore 文件中的列表) |
清理 |
git clean -n -d -x |
演习移除工作目录中所有未追踪的文件以及空的子目录(包括 .gitignore 文件中的列表) |
重置 |
git reset[需要深入理解] |
详情参见此处** |
合并 |
git merge –abort |
在 merge 操作后需要处理冲突时使用此命令撤销此合并 |
合并 |
git reset –hard HEAD |
无论当前什么状态,直接恢复至本分支上次提交状态(这会将清除工作目录中的所有内容) |
合并 |
git reset –hard HEAD~ |
恢复至本分支上次提交的父状态(最近一次提交的父节点提交) |
合并 |
git reset/revert |
更多合并撤销详情见此处 |