整理 Git 中常见、常用命令提供快速翻阅。
使用 git --version
查看当前版本。
Git 配置
git config --list
命令用来列出所有 Git 当时能找到的配置。
通过输入 git config <key>
来检查 Git 的某一项配置。
设置你的用户名和邮件地址
1 | git config --global user.name "xugz" |
git config --global alias.last 'log -1 HEAD'
创建别名。此时我们可以用 git last
命令代替 git log -1 HEAD
来查看最后一次提交。git config --global core.autocrlf false
设置是否自动转化行结束符。
windows:两个字符,CR+LF,即一个回车,一个换行
linux及OS X:一个字符,LF,在Linux下查看文件会在行末多个^M。
在windows下,git安装时,默认该选项为true,从仓库下载下来,结尾会改为CRLF格式。当提交文件到仓库时,会将CRLF格式转为LF。这样可以保证仓库中的文件是LF结尾的。
windows下开发将编辑器默认设置为LF格式(如VSCode,在settings中设置file:eol 选项为\n),core.autocrlf 该项设置为false最好。
获取 Git 仓库
通常有两种获取 Git 项目仓库的方式:
- 将尚未进行版本控制的本地目录转换为 Git 仓库;
- 从其它服务器 克隆 一个已存在的 Git 仓库
使用 git init
在已存在的本地目录中初始化仓库。
git clone <url> [rename_dir_name]
命令将指定仓库克隆下来,默认配置下远程 Git 仓库中的每一个文件的每一个版本都将被拉取下来。
这会在当前目录下创建 和你指定URL对应仓库名同名 的目录,并在这个目录下初始化一个 .git
文件夹, 从远程仓库拉取下所有数据放入 .git
文件夹,然后从中读取最新版本的文件的拷贝。如果你想在克隆远程仓库的时候,自定义本地仓库的名字,你可以通过额外的参数指定新的目录名。
分支操作
git branch
会列出你在本地的分支。git branch <branch_name>
使用该命令创建新分支。git branch -d <branch_name>
删除指定分支。git branch -v
查看每一个分支的最后一次提交。git branch --merged
查看哪些分支已经合并到当前分支, git branch --no-merged
查看尚未合并到当前分支的分支。
git checkout <branch_name>
切换分支。git checkout -b <branch_name>
创建新分支并切换。
git stash
命令用来临时地保存一些还没有提交的工作,以便在分支上不需要提交未完成工作就可以清理工作目录。git stash list
用以查看贮藏的内容。git stash apply [stash_name]
应用指定贮藏版本,不指定的话默认最新的贮藏。git stash drop [stash_name]
删除指定贮藏版本。git stash clean
清空所有贮藏版本。
git merge <branch_name>
将指定分支合并到你的当前分支。
查看变更
用 git status
命令查看文件状态。-s
选项可以以简洁的方式查看更改。新添加的未跟踪文件前面有 ?? 标记,新添加到暂存区中的文件前面有 A 标记,修改过的文件前面有 M 标记。
git diff
能通过文件补丁的格式具体地显示尚未缓存文件的变更对比。git diff --staged
或 git diff --cached
命令查看已暂存的将要添加到下次提交里的内容,这条命令将比对已暂存文件与最后一次提交的文件差异。git diff HEAD
查看已缓存文件的与未缓存文件的所有改动。git diff --stat
显示变动摘要。
用 git log
用 --oneline
选项来查看历史记录的紧凑简洁的版本。
使用 git log --oneline --graph
选项,开启了拓扑图查看历史中什么时候出现了分支、合并。
提交变更
用 git add <filename/.>
命令添加需要追踪的新文件和待提交的更改。
git checkout <filename>/.
撤销对指定文件/所有变更的修改。
git commit
提交更新。-m
用于备注提交说明。
-a
选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add
步骤。--amend
选项用来重新提交。例如,你提交后发现忘记了暂存某些需要的修改,可以像下面这样操作。从效果上来说,就像是旧的提交从未存在过一样,它并不会出现在仓库的历史中。
1 | git commit -m 'initial commit' |
用 git rm <filename>
从暂存区域移除指定文件。
git reset HEAD/<filename>
取消缓存已缓存的全部内容/指定文件。
git mv file_from file_to
移动/重命名已跟踪的文件。
忽略本地指定文件变更,比如本地配置了开发环境参数,不需要提交git update-index --assume-unchanged <filename>
当需要提交该文件时,执行 git update-index --no-assume-unchanged <filename>
取消忽略
远程仓库的使用
git remote -v
命令查看已经配置的远程仓库服务器名字及对应URL。git remote add <shortname> <url>
添加一个新的远程 Git 仓库,同时指定一个方便使用的简写。
git fetch <remote>
从远端仓库获取新分支与数据。
git pull
从远端仓库提取数据并尝试合并到当前分支。
git push [alias] [branch]
推送你的新分支与数据到某个远端仓库。git push origin --delete <branch_name>
删除指定的远端分支