有用的 Git 命令

撤销上次提交

git reset HEAD~1

当commit后发现文件有错误,或者有些文件没有add, 撤销上一次的commit过程,操作后,git log 中不会有上次的 commit,add到暂存区的文件也回到工作区。

修改上次提交描述

git commit --amend

当commit后发现commit的描述有错字或遗漏,可以通过此命令重新进入commit描述进行修改,完成后log中的描述被修正。

只添加已经跟踪的文件到暂存区

git add -u

当有些文件不想在本次添加到暂存区时,不能使用 git add . , 也不用逐个添加,用 -u (update) 参数快速添加已经跟踪的文件。

把文件从暂存区返回到工作区

git reset HEAD <file>

git add . 后针对个别文件取消 add,即打回工作区。

找回提交

git reflog

使用该命令可以查看提交、切换历史,使用哈希值回到某个提交

删除改动,回到上一次提交的版本

git checkout -- <file>

对文件修改后,需要撤销更改,回到无修改状态。

忽略已经被追踪过的文件

# 1.
git rm --cached <file>
# 2.
vim .gitignore
# 3.
git commit -m "We really don't want Git to track this anymore!"

已经追踪过的文件,只修改 .gitignore 是不管用的,因为其只对 untracked 的文件有效,需要使用本方法。

参考自:https://segmentfault.com/q/1010000000430426

拉取远程分支

git fetch origin branch-name
# 切换分支
git checkout branch-name

如果使用 pull, 则会执行 fetch + merge 操作,会合并到当前分支

单独克隆某个分支

git clone -b branch-name repo-url

关于换行符

Git 是在 Linux 下开发的,默认情况下代码仓库使用 LF 作为换行符。但在 Windows 下是 CRLF,为了保持多平台合作时的兼容,Git 提供了三个设置项目来约定换行符。

这样来看,最终仓库其实也可以混用,只是多平台写作可能有麻烦,因此,保证一点 仓库一定为 LF

在 Windows 下,通过设置 core.autocrlf=true 即可,一般windows会默认配置这个参素。在提交到仓库时,会默认做一个转化,这样在 Linux 下就不需要做任何设置。

autocrlf 细节:

总结一句话:在 Windows 下,开启全局 core.autocrlf=true 就可以不管了。在 Windows 下工作区就用 CRLF,不需要刻意设置。

TOP