根据廖雪峰的 git 教程整理的命令集合,以供学习使用~~~
安装 git 完成后,需要先登录账户
git config --global user.name "IceyCity"
git config --global user.email "120174xxx@cug.edu.cn"
创建版本库
初始化 git 仓库:git init
查看文件修改内容:git diff file
查看历史提交日志:git log
查看命令历史:git reflog
版本回退
git reset --hard HEAD^
回到上一个版本 git reset --hard 版本号
回到指定版本
撤销修改
git add
提交到暂存区 git commit
提交到当前分支 git checkout -- file
撤销你修改的内容 git reset HEAD file
把添加到暂存区的修改撤回
删除文件
- 正常删除:通过命令删除:
git rm file
->git commit -m ""
- 本地删错了,版本库里还存在:通过
git checkout -- file
恢复
远程仓库
创建密钥:ssh-keygen -t rsa -C "120174xxx@cug.edu.cn"
id_rsa.pub
将本地仓库与远程仓库关联,并推送本地仓库内容:
git remote add origin git@github.com:IceyCity/ 本地仓库名.git
git push -u origin master // 推送本地内容,并关联远程分支
分支管理
master
指向当前提交,HEAD
指向当前分支。
git switch -c dev // 创建并切换分支
git merge dev // 合并分支
git branch -d dev // 删除 dev 分支
- 当主分支与开发分支都有各自的
commit
之后合并,会发生冲突,需手动解决。 - 用
git log --graph
命令可以看到分支合并图。 - 要想看到合并分支的历史信息,需要加
--no-ff
参数,在合并分支的时候,不采用快速合并的方式。
git merge --no-ff -m "merge with no-ff" dev
git stash // 将所做的工作内容先隐藏
git stash list // 查看有几个 stash
git stash apply // 恢复工作内容不删除 stash
git stash pop // 恢复工作内容并删除 stash
git stash apply stash@{0} // 恢复指定的 stash
- 通过
git cherry-pick 版本号
可以把别的分支的提交复制到当前分支。 - 如果要丢弃一个没有被合并过的分支,可以通过
git branch -D <branch>
强行删除。
多人协作
- 查看远程库信息:
git remote -v
- 推送远程主 / 开发分支:
git push origin master/dev
- 创建远程开发分支到本地:
git checkout -b dev origin/dev
你的小伙伴已经向 origin/dev
分支推送了他的提交,而碰巧你也对同样的文件作了修改,并试图推送, 推送失败,提示 git pull
, 然而也失败,原因是:
没有指定本地 dev 分支与远程 origin/dev 分支的链接:git branch --set-upstream-to=origin/dev dev
git rebase
操作可以把本地未 push 的分叉提交历史整理成直线
标签管理
打新标签:git tag <name>
查看所有标签:git tag
给历史提交打标签:git tag <tagname> <commmit id>
查看标签信息:git show <tagname>
可以指定标签信息:git tag -a <tagname> -m "blablabla..."
删除标签:git tag -d <tagname>
推送标签到远程:git push origin <tagname>
推送所有标签:git push origin --tags
删除远程标签:
先删本地:git tag -d <tagname>
在删远程:git push origin :refs/tags/<tagname>