Git
要点
- 从远程库克隆
git clone URL
- 查看仓库状态
git status
- 查看日志,简要
git log --pretty=oneline
- 版本回退,
HEAD^
上个版本,HEAD^^
上上个版本git reset --hard [至少四位版本号]
- 使用SSH登录可以不用每次操作都输入密码,
ssh-keygen
在本地生成公钥,私钥,将公钥上传到github,clone是使用ssh登录的URL。 - 拉取远程仓库,自动合并,第一个为远程分支。
git pull origin master:master
- 使用fetch拉取,不合并,有冲突时可先fetch,然后merge分支。
git fetch origin master:master
- 创建分支
分支查看git branch branch_name
切换分支git branch
低版本切换分支git switch branch_name
合并分支,将tmp合并到当前分支git checkout branch_name
推送分支,第一个为本地分支,第二个为远程分支git merge tmp
git push origin master:master
- 打标签
推送标签git tag -a v1.0 -m "my version1.0"
git push origin v1.0
基础知识
-
三种状态:已提交,已修改,已暂存
-
简单配置:姓名、邮箱,–global表示全局设置。
-
设置本地git仓库
- 空文件夹
- 已存在文件的文件夹
- 空文件夹
-
克隆现有仓库
$ git clone https://github.com/libgit2/libgit2
这会在当前文件夹创建一个libgit2的目录,并在这个目录下初始化一个.git文件夹。后面加一个文件目录,会保存到新创建的目录里。
-
git status检查文件处于什么状态,-short 格式更紧凑的输出。
-
git add 追踪新文件,把已跟踪的文件放到暂存区,合并时把有冲突的文件标记为已解决状态。
-
忽略追踪,编写.gitignore文件。
-
git diff 查看尚未暂存的改动。
-
git commit 提交,-m提交信息,-a把所有已经追踪的文件暂存起来一起提交。
-
CONTRIBUTING.md位放到暂存区,-a后直接提交
-
git rm取消追踪,删除已经修改或者放到暂存区的文件,要加-f,强制执行,防止误删,因为这些文件没有快照。
-
把文件从暂存区移除但保留在工作目录中
git rm --cache README
- git log查看提交历史,
- –patch查看每次提交的变化
- –stat简要信息,–pretty=fomat:"参数"定制显示;
提交者是将commit的人,作者是做出修改的人 - –graph通过字符串形象的展示分支合并历史。
- -since、–until
git log --since=2.weeks
- –author
- –grep 搜索提交说明中的关键字;
*指定多个-author-grep会匹配任意符合的,–all-match,只会输出匹配所有条件的提交。
- -S str 显示添加或删除str的提交。
- 撤销操作
- 如果有文件忘记提交或提交信息写错,将暂存区的文件提交
例:有文件忘记放到暂存区,只会有一个提交,第二次提交会覆盖第一次的。git commit --amend
git commit -m 'initial commit' git add forget_file git commit --amend
- 取消暂存的文件
git reset HEAD file_name
- 撤销对文件的修改 <危>
git checkout -- file_name
- 拉取远程仓库
git clone
- git remote -v 显示简写及URL
- 添加仓库
git remote add <shortname> <url>
- 上传
git push origin master