看了廖雪峰老师关于 Git 的博客~收获还蛮多,需要记得东西比较多,所以写篇博客回顾一下学到的东西。
一、新建 Git 仓库
- git clone [你想要复制的仓库地址] -----从远程复制仓库
- git init ----- 新建仓库
二、本地文件修改并提交
git add <文件名称> ----- 提交此文件到暂存库
git add . ----- 提交工作目录下所有变动的文件到暂存库
git status ----- 查看未提交到暂存库的变动
git diff ----- 查看未提交到暂存库的变动(具体到文件内容哪一行增加了哪些内容)
git commit -m “comment” ----- 从暂存库提交到版本库并对应相应说明
三、历史
git log ----- 查看历史记录
每一次 commit 对应一次 commit ID
git reset --hard [commit ID] ----- 回到此次提交后的状态
HEAD表示当前状态
git reset --hard HEAD^ ----- 回到最后一次 commit 的上一个版本
git checkout – [file name] ----- 撤销此文件到最近一次 add 或 commit 的状态
git reset HEAD [file name] — 从仓库中撤销此文件到最后一次 commit 的状态
四、远程仓库
第一次与远程仓库连接时应该把你的电脑的ssh key添加到你要连接的远程仓库的电脑中
git remote add origin [远程仓库地址] (如:git@github.com:icecapriccio/test.git) ----- 与一个远程仓库关联
// origin 是远程仓库起的名字,起别的名字也可以,但 origin 比较通用
git push -u origin master ----- 把本地库的内容推送到远程仓库 origin 的 master 分支(第一次推送添加参数 -u,之后可不加)
此命令推送的是仓库的内容,并非工作区(当前文件内容)或暂存区的内容(add放的地方)。
git pull ----- 从远程库下载内容到本地版本库
五、分支
git checkout -b dev ----- 创建一个分支"dev"并切换到此分支上
git branch dev ----- 创建一个分支 “dev”
git checkout dev ----- 切换到分支 “dev”
git branch ----- 查看当前分支
git merge ----- 把 dev 分支合并到当前分支上
git branch -d [branch name] ----- 删除此分支
git stash ----- 把当前更改的内容暂存起来(相当于函数调用前把当前数据压栈)
git stash pop ----- 把 stash 的内容恢复
git stash list -----查看当前 stash 的内容
六、标签
git tag [tag name] ----- 打标签到当前分支上
git tag ----- 查看所有标签
git tag [tag name] [commit id] ----- 打标签到对应的commit id上
git show [tag name] ----- 查看标签对应的 commit 信息
git tag -d [tag name] ----- 删除标签
git push origin [tag name] ----- 推送标签到远程
git push origin --tags ----- 推送全部尚未到达远程的本地标签
其他:忽略文件/文件夹
在项目根目录(即git init的地方)建一个.gitignore文件,里面写进目录/文件路径,在git add、git status的时候就会忽视这些路径。
问题:git add . 之后,如何撤销一个文件的add?
答: git rm --cache [文件] / [-r 文件夹]
问题:git reset和git checkout的区别?