摘要
使用本地仓库,对文件版本进行控制
正文
详细教程:参考https://www.liaoxuefeng.com/wiki/896043488029600
最近发现git的帮助挺好用的,解释的也很清晰
http的好处是,不用配置密钥,可以直接输入账号密码即可,缺点是每次都要输入。
ssh的适用固定的电脑,一次配置,无需密码。
一、图形界面工具
这边推荐使用sourceTree,我工作中用的就是这个。
二、基本操作
常用
初始化git
添加所有内容到git
查看状态
1
2
| git status # 查看变动状态
git diff <filename> # 查看变动的内容
|
取消本地暂存
提交到本地仓库
创建远程连接
1
2
3
| git remote add origin <git> #创建远程连接
git remote rm origin #删除远程连接
git remote -v #查看所有远程连接
|
创建本地分支
1
2
| git branch <分支名称> #建立分支
git branch #查看所有分支以及当前分支
|
重命名本地分支
git 本地分支和远程分支改名字 - 简书
1
| git branch -m old_branch new_branch
|
删除本地分支
1
| git branch --delete <分支名称>
|
删除远程分支
1
| git push origin --delete <分支名称>
|
切换分支
创建并切换分支
推送到远程分支
1
2
3
| git push origin <分支> #将本地的分支提交到远程仓库该分支下面,如果远程仓库没有该分支,就会创建该分支
git push origin <本地分支:远程分支> #将本地分支提交到远程指定分支上
|
查看提交日志
1
2
| git log # 如果含有中文,会自动用16进制编码
git log --pretty=oneline # 只输出文件版本号和注释
|
拉取远程代码
1
2
| git fetch origin <分支> #将远程分支拉到本地仓库
git checkout -b <本地分支> origin/<远程分支> #将远程分支内容保存到本地指定分支,并不会额外创建master分支
|
pull相当于以上两步,不过多出来了一个master分支
1
2
| git pull origin <远程分支>:<本地分支> #相当于以上两步,并且是拉取到master再拉取到dev
git pull origin <远程分支> #将远程分支拉取到本地分支
|
如果不想要master,可以这么操作
1
2
| git checkout -b <本地分支> #本地创建并切换分支
git pull origin <远程>:<本地> #无需中间master,直接拉到dev
|
版本回退
网页操作
以github为例,如图。
先查看所有提交历史,找到想要下载的commit
点击Browse the repository at this point in the history,直接下载即可。
命令行操作
1
| git reset --hard <commitId>
|
如果想要只输出文件版本号
跟注释,可以通过
git log --pretty=oneline查看
1
2
3
4
| $ git log --pretty=oneline
f6af78dc6dc5944e0e04df3ac46b83ecc667a3c4 (HEAD -> master) third commit
535bf16545a58f9e8c6f9d29218e5c46befa9a67 second commit
5d8a7ff0c255d26df63e675393a85c756e4230ce first commit
|
现在的位置是在third commit,如果想要回退到first commit,可以通过git reset --hard <HEAD>
1
2
| $ git reset --hard 5d8a7ff0c255d26df63e675393a85c756e4230ce
HEAD is now at 5d8a7ff first commit
|
可以看到现在已经回退到了first commit
但是,此时如果再用git log会发现之后的最新的那几个版本已经看不到了!
这就好比你从21世纪穿梭到19世纪,回不去了。
解决办法:
- 命令行没有清空的情况下,可以找之前的版本号
- 命令行清空的情况下,可以通过
git reflog来找版本号,git reflog用来记录你的每一次命令
1
2
3
4
5
| $ git reflog
5d8a7ff (HEAD -> master) HEAD@{0}: reset: moving to 5d8a7ff0c255d26df63e675393a85c756e4230ce
f6af78d HEAD@{1}: commit: third commit
535bf16 HEAD@{2}: commit: second commit
5d8a7ff (HEAD -> master) HEAD@{3}: commit (initial): first commit
|
删除仓库
windows
查看当前路径所有内容
展示指定文件夹内容
删除文件
递归删除文件夹
linux
查看当前路径内容
删除文件
1
| rm <filename or folder>
|
递归删除文件夹