Git
用过且常用到的 git 命令,记录下来。方便查询
修改提交记录
1 | # 重写最后一次提交,不编辑描述信息 |
查看提交历史
1 | # 一行显示 |
设置一个 lg 别名,高效查看提交历史
1 | # 设置一个 lg 的别名 |
pull
git pull
其实是执行了两个操作:git fetch
和 git merge
。git pull
是获取远程仓库的新内容,并合并到本地(如果远程与本地都修改了同一行,需要处理冲突)。
git pull 用法:
1 | git pull <remote> <remoteBranch>:<localBranch> |
其实在平时使用时关联了远程仓库,直接执行 git pull
即可。
移除暂存区对文件的跟踪
1 | git rm --cached (-r 文件夹) files-path |
撤销工作区文件的更改
1 | git checkout -- fileName |
OR 撤销工作区的所有更改
1 | git checkout . |
撤销暂存区文件的修改
1 | git reset HEAD file |
OR 撤销暂存区的所有更改
1 | git reset . |
仓库操作
查看当前远程仓库
1
git remote -v
查看远程仓库详细信息
1
git remote show [remote-name]
要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用,运行
1
git remote add [shortname] [url]
移除远程仓库
1
git remote rm origin
从远程仓库抓取数据
1
git fetch [remote-name]
推送数据到远程仓库
1
git push origin master
远程仓库的删除和重命名
1
2git remote rename <oldName> <newName>
git remote rm
分支操作
功能分支的名字,可以采用 feature- 的形式命名。
Git 鼓励大量使用分支:
查看分支:
git branch
创建分支:
git branch <name>
切换分支:
git checkout <name>
创建+切换分支:
git checkout -b <name>
重命名分支:
git branch -m oldName newName
合并某分支到当前分支:
git merge <name>
合并当前分支到某分支:
git rebase <name>
删除分支:
git branch -d <name>
删除远程分支( v1.7.0 之后):
$ git push origin --delete <branchName>
服务器上获取最新的版本并将你本地主分支指向到它:
1
2git fetch origin
git reset --hard origin/master
重写历史提交记录
显示 HEAD 更改时间的列表
git reflog
git reflog 可以查看所有分支的所有操作记录(包括(包括 commit 和 reset 的操作),包括已经被删除的 commit 记录,git log 则不能查看已经删除了的 commit 记录,而且跟进结果可以回退到某一个修改, 红色加粗的即是被删除了的
改变最后的提交
git commit --amend
或git commit --amend -m "fix bug #42"
清除历史提交记录中的敏感信息
git filter-branch
更改旧的或多个提交
git rebase
Stash
git stash
git stash pop
git stash list
git tag
含附注的标签:
创建一个含附注类型的标签非常简单,用 -a (译注:取 annotated 的首字母)指定标签名字即可:
1 | $ git tag -a v1.4 -m 'my version 1.4' |
其他
内建的图形化 git:
1
gitk
彩色的 git 输出:
1
git config color.ui true
显示历史记录时,只显示一行注释信息:
1
git config format.pretty oneline
交互地添加文件至缓存区:
1
git add -i
单个文件到指定版本
1
git checkout <HEAD> <file>
常用命令
git clone https://github.com/
// 将远程库下载到本地git init
// 初始化一个 Git 仓库git add .
// 将工作区内容添加到暂存区(使用 -A 也可以)git status
// 查看状态git commit -m ‘comment’
// 将暂存区的内容提交到版本库git remote add origin https://github.com/
// 与远程库建立关联git push origin branchName
// 将本地版本库内容提交到远程分支,第一次需要加 -ugit pull origin branchName
// 将远程分支拉到本地后通过git merge合并git pull –rebase branchName
// 将远程分支拉到本地后通过git rebase合并git log –pretty=oneline –pragh
// 查看日志git checkout -b branchName
// 从当前版本库创建一个分支,并切换到该分支git branch
// 查看所有分支git branch -D branchName
// 删除分支git reset –hard HEAD
// 丢弃工作区和暂存区的所有更改git checkout – fileName
// 丢弃工作区的文件更改git checkout <HEAD> <file>
单个文件到指定版本git stash
// 将当前分支的内容暂存起来,等价 git stash pushgit stash list
// 列出当前分支缓存的内容git stash pop
// 拿出当前分支缓存的内容git fectch origin branchName
// 将远程分支拉到本地git merger branchName
// 将分支合并到本地git rebase branchName
// 合并分支到本地git diff HEAD
// 将工作区与当前版本库对比
不常用命令
- `git tag ‘v1.0’ // 打标签
git tag -d ‘v1.0’
// 删除标签git branch -a
// 查看所有分支(包括远程分支)git branch -r
// 只查看远程分支git rm fileName
// 从 Git 中删除文件git mv oldName newName
// 文件改名git commit -am “init”
提交并且加注释git config –list
// 查看用户信息git grep ‘something’
// 文件内容搜索git reflog
// 分支等引用变更记录管理git show-branch
// 显示分支列表及拓扑关系git count-objects
// 显示松散对象的数量和磁盘占用git filter-branch
// 版本库重构git fsck
// 对象库完整性检查git blame fileName
// 列出文件内容,左侧是对应每行的提交纪录git gc
// 对仓库进行重新打包以节省空间(会定时运行)git revert
// 还原一个版本的修改
注意
git pull
相当于:git fetch
+git merge
git mv
相当于:mv /git rm
/git add