创建版本库
git init #初始化本地版本库
git clone <url> # 克隆远程仓库到本地
修改和提交
git status # 查看版本库当前分支状态
git diff # 查看变更内容
git add . # 添加所有文件到暂存区
git add <file> #添加指定文件到暂存区
git mv <old> <new> #文件改名
git rm <file> # 删除文件
git rm --cached <file> # 将文件从暂存区移除(不跟踪)
git commit -m "commit message" # 提交更改 -m 后添加注释
git commit --amend #修改最后一次提交
git log # 查看提交历史
git log -p <file> # 查看指定文件的提交历史
分支和标签
git branch # 查看所有本地分支
git branch <new branch> # 创建新分支
git branch -d <branch> # 删除分支 需要merge,-D 不需要merge
git checkout <branch/tag> # 切换到指定分支或标签
git checkout -b <new branch> # 创建并切换到指定标签
git tag <tag> # 在当前位置打标签
git tag <tag> <hash> # 在某个节点处打标签
扩展
HEAD 的移动
-
git checkout <hash>
HEAD指向指定提交点 -
git checkout HEAD^
HEAD指向HEAD的父节点 -
git chekcout HEAD~4
HEAD后退4个节点 -
git checkout HEAD~^2^1
移动HEAD的组合命令
其他
-
git branch -f master HEAD~2
移动master分支到HEAD后退2节点处 -
git describe <ref>
此操作返回<tag>_<numCommits>_g<hash>
,tag
:离此ref最近的标签,numCommits
:到当前位置的提交次数 ,hash
:此ref的hash值的前缀
合并
基本命令
git merge <branch> # 合并指定分支到当前分支
git rebase <branch> # 当前分支“复制”到<branch>
merge
和 rebase
的功能相同,都是合并分支,不同的是merge
会留下提交记录,提交树显的很复杂; rebase
则不会保留提交历史,提交树显的更加清爽
扩展
-
git rebase master
当前分支 “复制” 到master
分支 -
git rebase master side1
side1
分支 “复制” 到master
分支 -
git rebase side1 side2
side2
分支 “复制” 到side1
分支 -
git rebase -i HEAD~4
交互式rebase
-
git cherry-pick c4 c5
将c4 c5两个提交点合并到当前分支中
撤销
git reset <HEAD> # 撤销指定位置之后的操作(改写历史,不会有记录)
git revert <commit> # 撤销指定的提交 (会有之前提交的记录)
扩展
-
git reset HEAD^
撤销上一步提交 -
git revert HEAD
撤销提交操作 -
git reset --hard HEAD
撤销工作目录中所有未提交文件的修改内容
远程操作
git remote -v # 查看远程版本信息
git remote show <remote> # 查看指定远程版本库信息
git remote add <remote> <url> # 添加远程版本库
git fatch <remote> <place> # 从远程库文件
# 从 remote 仓库拉取,将远程的source分支与本地的destination分支合并
git fatch <remote> <source>:<destination>
git pull <remote> <branch> # 下载远程库文件并快速合并
git push <remote> <branch> # 上传文件并快速合并
# 推送到remote仓库,本地的source分支与远程的destination分支合并
git push <remote> <source>:<destination>
git push --tags # 上传所有标签
扩展
-
git fatch origin :bar
会在本地新建一个bar的分支 -
git push origin :foo
会将远程的foo分支删除 -
git push origin foo:master
推送本地foo分支到远程master分支 -
git push origin master^:foo
推送本地master分支的父节点到远程foo分支 -
git pull
命令等同于git fetch
+git merge <remote branch>
-
git pull --rebase
远程与本地分支rebase合并 -
git checkout -b totallyNotMaster o/master
通过远程分支检出一个新分支跟踪这个远程分支 -
git branch -u o/master foo
功能同上 -
git branch -u o/master
当前处在foo
分支上可以省略foo
,功能同上
最后放一张图,图片来源于网络,如有侵权,请联系我删除。
git命令.png
参考网站:
网友评论