本文记录一些学习《Pro Git》book的一些笔记和工作中常用到的一些git指令。
- git相当于一个小型文件系统,保存的是各个不同版本的文件,而非版本之间的修改。
- git config 分为三级,–system所有用户,–global当前用户,–local当前项目。后两个比较常用同样的配置项下一级会覆盖上一级
- git config --list --show-origin
列出已配置的项以及配置文件的位置 - git config --global user.name “John Doe”
刚安装完git通常要执行的命令,否则无法commit - git config --global user.email johndoe@example.co
刚安装完git通常要执行的命令,否则无法commit - git init
新建本地仓库 - git clone url
拉取远端项目到本地 - git clone url newName
拉取项目到本地,且文件夹名字为newName - git add file
将文件添加到暂存区 - git add -u
添加所有已修改和删除的tracked files到暂存区,不包括新增 - git reset HEAD file
将文件从暂存区移出 - git checkout – file
将文件变为上一次add或者commit的最新状态 - git diff
比较的是工作区与暂存区之间的变化 - git diff --cached或者–staged
比较暂存区与最新一次提交之间的变化 - git status
查看当前仓库状态 - git commit
提交,提交信息使用默认编辑器编辑 - git commit -m “123”
提交,提交信息-m之后的信息 - git commit -a (–all)
等价于git add -u加git commit - git rm file
不再跟踪文件且删除工作区文件,支持正则表达式 - git rm --cached file
不再跟踪文件且保留工作区文件,支持正则表达式 - git mv nameA nameB
重命名或者移动。等价于三个指令mv README.md README
+git rm README.md
+git add README
- git log
查看提交历史 - git log -n
显示n次提交历史 - git log -p(–patch)
显示每次提交所引入的差异(每次提交与上一次提交的变化) - git log --pretty=oneline
每次提交信息只显示一行 - git log --pretty=oneline --graph
–graph以分支图的形式显示信息 - git log --since=2022-01-01
显示时间点以来的提交 - git rebase master
将当前分支rebase到master分支 - git rebase master dev
将dev分支rebase到master分支 - git rebase -i HEAD~2
合并最近的2次提交 - git rebase --continue
继续rebase过程 - git rebase --abort
撤销此次rebase过程 - git config --global merge.tool meld
使用meld解决冲突 - git mergetool
当前仓库存在冲突时,使用配置好的冲突解决工具解决冲突 - git reset hash
重置HEAD指针到指定hash,不改变工作区内容 - git reset --hard hash
重置HEAD指针到指定hash,且改变工作区内容到指定hash版本 - git stash -m “message”
将当前工作区未commit的修改放到stash中 - git stash apply 0
应用索引0的stash,但不删除 - git stash pop 0
应用索引0的stash,且删除 - git checkout -b branch_name
创建新分支并切换到该分支 - git checkout branch_name
切换分支 - git checkout branch_name --recursive-modules
所有仓库和子仓库切换到指定分支 - git pull --recursive-modules
拉取所有仓库和子仓库 - git commit --amend
重新提交上次commit - git tag
显示已有标签 - git tag -a tag_name -m “message” [HASH]
给当前commit添加annotated tag附注标签,包含打标签者的名字、电子邮件地址、日期时间, 此外还有一个标签信息,带上hash给指定commit加tag - git tag tag_name [HASH]
给当前commit添加lightweight tag轻量标签,带上hash给指定commit加tag - git push origin tag_name
push 标签 - git push --tags
push所有标签 - git tag -d tag_name
删除标签 - git push origin --delete tag_name
删除远程标签 - git config --global alias.last ‘log -1 HEAD’
命令别名。git last==git log -1 HEAD - git remote prune origin
远程仓库分支删除后,删除相应的引用 - git branch
查看本地分支和当前分支 - git branch -d branch_name
删除本地分支 - git branch --merged [branch_name]
查已经merge到当前分支/branch_name分支的所有分支, - git branch --no-merged [branch_name]
查没有merge到当前分支/branch_name分支的所有分支 - git merge branch_name
在当前分支创建合并分支节点,并合并branch_name分支到当前分支 - git checkout -b serverfix origin/serverfix
创建分支本地分支serverfix,并1. 切换到该分支 2. 设置远程仓库origin上的serverfix远程分支为跟踪的分支 - git fetch
命令从服务器上抓取本地没有的数据,它并不会修改工作目录中的内容。 它只会获取数据然后让你自己合并 - git pull
它的含义是一个 git fetch 紧接着一个 git merge 命令 - git push origin -d serverfix
从origin仓库中删除分支serverfix - git rebase --onto master server client
取出 client 分支,找出它从 server 分支分歧之后的补丁, 然后把这些补丁在 master 分支上重放一遍,让 client 看起来像直接基于 master 修改一样 - git rebase basebranch topicbranch
topicbranch变基到basebranch
(Pro Git 前三章完结)