Git 使用指南
- 初始化一个Git仓库,使
git init
命令。 - 可反复多次使用,添加多个文件
git add <file>
- 一次性添加全部修改
git add -all
- 一次性添加全部修改
- 使用命令
git commit -m <message>
- 从远程库克隆
git clone [https地址] [文件夹名字]
, 比如git clone https://github.com/llvm/llvm-project.git
会自动克隆为同名字的文件夹
版本控制
git log
查看版本历程,git reflog
全部变化- 好看的log形式
git log --graph --pretty=oneline --abbrev-commit
- 好看的log形式
- 版本回退
git reset --hard [commit id]
- 查看当前的修改情况
git status
- 撤销修改
git checkout --file
分支管理
- 创建分支
git branch <branch name>
- 切换分支
git checkout <branch name>
或者git switch <branch name>
- 创建并切换分支(合并上述两个操作)
git checkout <branch name> -b
或者git switch -c <name>
- 查看当前分支
git branch
- 合并分支
git merge <branch name>
- 使用不会丢掉分支信息的方式合并
git merge --no-ff -m "merge with no-ff" <branch name>
不是用Fast Forward 模式合并,可以看到合并记录
- 使用不会丢掉分支信息的方式合并
- 删除分支
git branch -d <branch name>
- 强行删除没有被合并的分支
git branch -D <branch name>
- Bug管理(待需要时学)
- Rebase(待需要时学)
- 查看远程库的信息
git remote -v
- 推送分支
git push origin <master or branch name>
(一般推送需要所有人跟进的分支)- 没有与本地关联时候的操作
git branch --set-upstream-to <branch-name1> origin/<branch-name2>
关联了本地的分支和远程库的分支
- 没有与本地关联时候的操作
- 抓取分支
git checkout -b dev origin/dev
(clone只有master的,还需要单独操作dev)
文件控制
git clean
git clean用于清除没有被跟踪的文件
$ git clean -n # 显示那些文件会被清除
$ git clean -f <path> # 删除未被跟踪的文件, 可以指定具体路径下
$ git clean -df # 删除未被跟踪的文件和文件夹,不包含gitignore中的文件,d代表文件和文件夹,f代表强制运行
$ git clean -xf # 删除未被跟踪的文件和文件夹,包含gitignore中的文件,x代表gitignore无效,包括文件和文件夹,f代表强制运行
- 恢复成和commit_id 一样干净
$ git clean -df
$ git reset --hard <commit_id>
$ git status
标签管理
创建标签
- 查看标签
git tag
(按照字母排序) - 创建标签
git tag -b <tag_name>
(创建的标签都只存储在本地,不会自动推送到远程)- 给指定id加入标签
git tag -b <tag_name> [commit_id]
- 创建带有说明的标签,用-a指定标签名,-m指定说明文字:
git tag -a v0.1 -m "version 0.1 released" 1094adb
- 给指定id加入标签
- 查看tag 信息
git show <tag_name>
删除标签
- 删除标签
git tag -d <tag_name>
- 如果要推送某个标签到远程,使用命令
git push origin <tagname>
- 一次性推送所有本地标签
git push origin --tags
- 一次性推送所有本地标签
- 删除远程库的标签
git push origin :refs/tags/<tagname>
Github
放入公钥
- ssh 生成 公钥密钥
ssh-keygen -t rsa -C "xxx@qq.com"
- 密码在根目录下的.ssh下 .pub文件是公钥
- 将公钥放入githb账户的setting-ssh keys
忽略特殊文件
有需要的时候可以学习
参考:
廖雪峰教程
ssh公钥放入github