前言
这里是我用于记录git命令的笔记,记录一些git常用和一些记不住的命令,忘记的时候用于查阅,后面会随着知识积累慢慢增加。
一、用户信息配置
-
git config user.name "xxx" --global
全局配置用户名字 -
git config user.email "xxx@xx.com" -global
全局配置邮箱 -
git config --list --local/global/system
查看不同作用域的配置信息
二、初始化仓库
-
git init
在现有目录初始化仓库 -
git init <project-path>
新建项目并初始化仓库
三、提交修改
-
git status
查看git状态 -
git add <file-name>
提交某个文件的修改 -
git add -u
提交已经跟踪的所有修改 -
git add .
git add --all
提交所有修改(二选一) -
git commit -m "<message>"
提交修改到仓库 -
git commit -a -m "<message>"
git commit -am "<message>"
直接提交所有的已跟踪的修改到仓库 -
git commit --amend
git commit --amend --no-edit
修改上一次提交
四、文件删除/重命名
-
git rm <file-name>
从工作区删除文件,并且从仓库中移除对某个文件的跟踪 -
git rm --cached <file-name>
只移除对该文件的跟踪,但是依旧在工作区保留文件 -
git mv <old-name> <new-name>
安全重命名 -
git clean
删除未跟踪并且未被.gitignore忽略的文件 -
git clean -n
查看哪些文件将会被删除,但是不会真正删除
五、查看提交历史
-
git diff
查看工作区和暂存区之间的区别 -
git diff -- <file-name>
查看某个文件工作区和暂存区之间的区别 -
git diff --cached
用于查看暂存区和上一个提交之间的区别 -
git diff HEAD
用于展示工作区和上一次提交之间的区别 -
git diff <commit-id> <commit-id>
用于展示两个提交之间的区别
git log
用于查看所有的提交git log -<number>
用于查看最近n次提交git log -p
用于展示每次提交log以及每次的改动git log --stat
用于展示每次提交log以及每次的改动的简要统计git log --oneline
用于展示一行简略信息git log --graph
用简单图形展示git show
用于展示上一个提交的修改git show <commit-id>
用于展示特定提交的修改git show --name-only <commit-id>
用于展示特定提交的修改的文件名git reflog
打印最近操作所对应的commit id
六、代码回滚
git checkout <file-name>
撤销工作区某个文件修改git checkout .
撤销所有文件git checkout <commit-id> <file-name>
恢复某个commit的指定文件到暂存区和工作区git reset <file-name>
撤销当前暂存区的修改
版本回退
-
git reset --soft <commit-id>
只移动仓库中HEAD
指针的位置,工作区和暂存区的修改都不变 -
git reset --mixed <commit-id>
移动HEAD
指针的位置,并使用回退的到版本重置暂存区,工作区的修改保持不变 -
git reset --hard <commit-id>
移动HEAD
指针位置,并使用回退的到版本重置工作区和暂存区,保持与指定的提交一致
重置修改
git revert <commit-id>
新建一个提交重置目标提交git revert -n <commit-id>
重置目标提交,但是不会新建提交,而是修改工作区和暂存区git revet <start-id>...<end-id>
重置多个提交(不包括start-id,但是包括end-id)git revert --continue
在revert遇到冲突并解决冲突后,继续执行撤销操作git revert --quit
终止revert,但保留当前的结果git revert --abort
撤销revert
七、分支
HEAD:指当前分支的最新提交点
git branch
列出本地所有分支git branch -r
列出所有远程分支git branch -a
列出所有本地和远程分支git branch -v
查看分支的详细信息git branch <branch-name>
新建分支git checkout -b <branch-name>
新建分支并切换分支git checkout <branch-name>
切换分支git checkout -
切换到上一个分支git branch -d <branch-name>
删除分支(针对已经合并过的分支)git branch -D <branch-name>
删除分支(不管是否合并)git merge <branch-name>
合并分支git merge --no-ff <branch-name>
不使用fast-forward模式合并git cherry-pick <commit-id>
挑选一个commit合并到当前分支git cherry-pick <branch-name>
挑选指定分支的最新提交git cherry-pick --quit
退出操作,保留当前进度git cherry-pick --abort
撤销本次操作
八、Tag
git tag
查看所有taggit tag -l <tag-name>
筛选相应的taggit tag --points-at <commit-id>
查看某个commit上所有的taggit show <tag-name>
查看某一个taggit show-ref --tags
查看所有tag以及它们分别对应的commitgit tag <tag-name>
新建taggit tag <tag-name> <commit-id>
在指定的提交新建taggit tag -a <tag-name> -m <message>
添加一个tag和messagegit tag -d <tag-name>
删除tag
九、临时加塞紧急任务
git stash
新建stashgit stash save <message>
指定你想要的messge信息git stash -u
将未跟踪的文件也加入暂存git stash -a
将所有文件加入暂存(即使该文件被git忽略)git stash list
查看暂存的历史git show stash@{<number>}
查看某一个次特定的暂存git stash apply
取出最近的暂存git stash apply <number>
取出目标暂存git stash pop
取出最近暂存,并删除该暂存的记录git stash drop
删除最近暂存git stash drop <number>
删除目标暂存git stash clear
清空历史
十、变基(重放)
-
git rebase <branch-name>
合并分支 -
git rebase -i <commit-id
可以交互式的操作到commi-id为止的提交(不包括commit-id所指向提交)的所有提交
十一、远程仓库
git clone <url>
拉取代码,并使用默认的远端仓库的名字git clone <url> <new-name>
拉取代码,自定义本地仓库名字git remote add <remote-name> <remote-url>
添加远程仓库git remote -v
查看远端仓库信息git remote remove <remote-name>
删除远程仓库git remote rename <old-remote-name> <new-remote-name>
重命名远程操作名字git push <remote-name> <branch-name>
推送分支到特定的远程仓库,如果只有一个远程仓库可以省略,第一次推送需要加入-u
参数git push <remote-name> <tag-name>
推送指定tag到远端git push <remote-name> --tags
推送所有tag到远端git fetch
拉取更新git pull
获取远端仓库更新,并自动合并到本地分支(相当于git fetch && git merge
)git pull --rebase
使用rebase方式拉取更新