详细教程建议访问廖雪峰老师的教程
——> https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
或者查看知乎话题
——> https://www.zhihu.com/question/20070065/answer/517839193
以下是个人整理(欢迎补充):
创建仓库
1) mkdir learngit #(创建目录)
2) cd learngit #(进入目录)
3) pwd #(查看当前路径)
4) git init #(将目录变成仓库)
创建编辑文件
1) vi readme.txt #(创建一个文本并编辑)
2) vi 命令:
i #进入编辑模式
ESC #退出编辑模式
wq #保存并退出
文件操作
1) git add readme.txt #添加到仓库
2) git commit -m "文件描述" #提交文件
3) git status #查看状态
4) git diff + 文件名 #查看文件具体修改内容
5) git log #查看历史纪录
6) git reflog #记录每一次命令
版本回退
1) git reset #回退版本
HEAD #表示当前版本
HEAD^ #上一个版本
HEAD^^ #上上个版本
…… ……
HEAD~100 #往上一百个版本
用法:git reset --hard HEAD^
工作区、暂存区、版本库
1) 工作区:learngit 目录
版本库:.git 目录
暂存区:stage 或 index
2) git diff #查看工作区与暂存区的不同
3) git diff --cached #查看暂存区与版本库的不同
4) git diff HEAD --文件 #查看工作区与版本库的不同
5) 文件修改时处于工作区
git add 放到暂存区
git commit 上传到版本库
撤销操作
1) git checkout --文件 #撤销操作
如果已经git add 到暂存区
1) git reset HEAD 文件
2) git checkout --文件
远程仓库
创建SSH key
1) ssh -keygen -t rsa -C "你的邮箱"
2) 去 C://user/Hasee/.ssh 文件夹下,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,随便说都ok
3) 打开GitHub > Settings > SSH keys > 粘贴公钥 > add key
创建远程仓库
1) 在GitHub中点击 new repository
2) 输入名字name:learngit(自定义随便起)
3) create
添加远程库
git remote add origin git@github.com:mg-mo/learngit.git
其中: origin 是远程库的名称
git@github.com:mg-mo 是你的git用户
将本地内容提交到远程库
1) git push -u origin master # 首次提交加 -u
2) 修改后重新提交 git push origin master
git push 提交失败
原因: README.md 文件不在本地
解决方法:
1) git pull --rebase origin master
2) git push -u origin master
克隆
1) 新建一个仓库 gitskills
(勾选Initialize this repository with a README,GitHub会自动为我们创建一个README.md文件)
2) 输入命令克隆到本地
git clone git@github.com:mg-mo/gitskills.git
将本地代码更新到本地
git fetch origin master (master 为分支名称,可更改)
不知道分支是啥? 不慌,继续往下看
创建合并分支
借用廖雪峰老师的解释:每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master
分支。HEAD
严格来说不是指向提交,而是指向master
,master
才是指向提交的,所以,HEAD
指向的就是当前分支。
1) 新建dev 分支并切换到dev
git checkout -b dev # -b 表示创建分支
git branch # 列出所有分支,当前分支有一个*
分支的操作
1) 在dev 分支上对文件做出修改,切回master 分支
git checkout master
2) 将dev 分支的修改合并到master
git merge dev
3) 删除 dev 分支
git branch -d dev
4) 查看分支历史
git log --graph --pretty=oneline --abbrev-commit
5) 禁用快速合并
git merge --no-ff -m "添加commit描述" dev
存储当前工作及恢复
1) 存储:
git stash
2) 恢复:
git stash apply (恢复内容但不删除stash,需要 git stash drop 删除)
git stash pop (恢复内容且删除stash)
查看远程库信息
git remote -v
更改提交协议
git remote set-url origin git@github.com:mg-mo/learngit.git
多人协作
1) 创建远程分支到本地
git checkout -b dev origin/dev
在远程分支提交失败
1) 指定本地分支与远程分支链接
git branch --set-upstream-to=origin/dev dev
2) 抓取提交
git pull
3) 合并修改再提交
git merge dev
打标签
引用廖雪峰老师的解释:发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。
1) git tag v1.0 #标签打在commit 上
2) git tag v0.9 124cfmg #指定commit id
3) git tag #查看标签
4) git show v0.9 #查看标签信息
5) git tag -a v0.1 -m "version 0.1" 111122cf
-a v0.1 是指定标签名
-m "version 0.1" 是说明文字
111122cf 是id
6) 推送标签到远程
git push origin v1.0 #单个提交
git push origin --tags #全部提交
7) 删除远程标签
1) 先删除本地标签
git tag -d v0.9
2) 删除远程标签
git push origin :refs/tags/v0.9