git
参考网址
Git命令行基本操作 - Tocy - 博客园 (cnblogs.com)
git仓库结构及重要概念
git结构:工作区、缓存区、本地仓库、日志区(日志区、操作日志区)、Head指针(默认指向最后一次提交)、分支
git的本地仓库通过commit快照的形式存储工作区的数据,也就是会完整永久存储每一次commit,可以通过“git log”查询每次commit的id,浏览日志完毕,按键盘q退出回到终端,“git log -n20 --oneline" 可以简洁方便的查看,只看前20
一、git本地管理
1.新建/克隆本地仓库
- 创建仓库
git init 是使用 Git 的第一个命令。
在执行完成 git init 命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据,其他的项目目录保持不变。
git init
该命令执行完后会在当前目录生成一个 .git 目录。刚刚创建出来的git
- 克隆仓库
如果需要克隆远程仓库,可以使用git clone
,比如:
git clone [repository url]
2.查看本地仓库状态
作用:查看本地工作区、本地git仓库、临时存储区域三者之间的文件差异
git-status - Show the working tree status
git status
3.提交文件到本地git
作用:add 将文件加入临时区,commit提交到本地git仓库
git add *
git commit -m [message]
4. .gitignore 文件配置
作用:可以用于忽略一些不需要git管理的大型文件
/uni_modules
/unpackage/dist
可以使用.gitkeep文件来维持没有内容的文件夹
5.查看本地分支
git branch
刚初始化的git仓库不会创建本地分支,需要一次commit过后才会有本地分支master
二、git远程管理
1.查看仓库远程链接
git remote
2.添加本地远程链接缩写
git remote add [shortname] [url]
3.上传文件到云平台
表示把当前的本地分支git库提交给remote 路径上的branchname分支
git push [remote/shortname] [branchname]
第一次提交需要: -u
git push -u origin tabbar
4.下拉文件到工作区
git pull <remote> <branch>
无历史关联拉取:用于第一次拉取
git pull orginal master --allow-unrelated-histories
git clone <url>
## 建议使用git clone ,最好不要新建仓库强拉
三、git ssh
作用:不用密码就可以拉推
步骤:需要获得ssh公钥,并将其复制到Gitee 和 GitHub 上
四、git分支
1.查看本地分支
git branch
2.创建、删除分支
git branch [newname]
git branch -d [newname]
3.切换分支
git checkout [branchname]
4.合并分支
merge :合并被合并分支到当前分支上
git merge [被合并分支]
五、问题及解决方案
git warning: LF will be replaced by CRLF in package.json解决办法
在修改了package.json文件之后,使用git add . 提交代码出现以下报错:
warning:LF will be replaced by CRLF in package.json.
The file will have its original line endings in your working directory
查询了一下资料,发现:
windows中的换行符为 CRLF,而在Linux下的换行符为LF,所以在执行git add . 时,会出现warning。
解决办法:
git config core.autocrlf false //禁用自动转换
六、git常见遇到问题
1.git master 没有对应的上游分支
关键理解git branch的追踪关系
2.git pull错了如何恢复
3.git push错了如何恢复
4.远程仓库拒绝接受
原因:远程仓库认为它有比你更高版本的更新,需要你同步后才准上传
措施:
1.强烈建议新建仓库或先commit备份下或新建分支或手动更改
2.或者拉去更新后的版本,然后再次推送,这样做可能导致你无法接受该仓库对你代码的更改的事情发生,可以先在本地仓库留存记录,
七、git追踪关系
1.查看追踪关系
$ git branch -vv
绿色master 本地分支 后面的数字是本地仓库的id缩写,也就是你最后一次commit的id ;蓝色是远程url缩写/分支 最后v3.0是commit时写的那段话
2.建立追踪关系
2.1 手动建立追踪关系
$ git branch --set-upstream-to=<远程主机名>/<远程分支名> <本地分支名>
2.2 push时建立追踪关系
$ git push -u <远程主机名> <远程分支名>
加上-u参数,这样push时,本地指定分支就和远程主机的同名分支建立追踪关系。
2.3 新建分支时建立跟踪关系
$ git checkout -b <本地分支名> <远程主机名>/<远程分支名>
新分支指针指向 <远程主机名>/<远程分支名> 所指的位置。具体位置可用 git log --oneline --graph 查看。
2.4pull是建立追踪关系
git pull <远程链接缩写> <远程分支名> --allow-unrelated-histories
3.注意
直接git pull建立不了追踪关系,它不知道往哪儿推,往往就是它报错
八、idea应用git
1.设置板块
2.vsc板块
在没有绑定git时,git的位置是vsc,选择新建本地git仓库
3.插件板块
搜索gitee 可以添加该插件,绑定gitee账户,就不用输入密码,我用的ssh也可以不用,就无需插件
4.git板块
九、项目开发流程
1.从github等以后仓库git clone项目
-
寻找一个空文件夹,打开powershell/cmd 【推荐powershell】
-
执行clone命令
git clone <远程URL>
-
使用某IDE打开该文件夹
2.自己新建项目或本地项目,然后再建立git
-
IDE新建项目或打开老项目
-
github或gitee创建仓库,并初始化至少一个分支master
-
本地项目的终端或操作初始化git
git init
-
提交到本地git,并由此创建branch master
git add * 【注意.gitignore文件】 git commit -m v X.X
-
提交远程
-
如果新建的github仓库不为空,需要首先强拉仓库,如下
git pull <远程主机名> <远程分支名> --allow-unrelated-histories 【强制建立联系分支之间联系】 git push -u <远程主机名> <远程分支名> 【一般需要第一次推才能建立联系】
-
如果新建仓库为空,直接
git push -u <远程主机名> <远程分支名>
-
十、git删除本地缓存区
可以删除add到缓存的内容,比较安全
-
删除所有缓存【强制加 -f】
git rm -r --cached *
-
删除某个文件缓存
git rm -r --cached <文件名>
十一、git版本回退和恢复【高危操作,一定要先提交先提交】
-
把工作区和缓存区回退到指定版本commit id对应
[通过git log -n10 --oneline]查询git log -n10 --oneline
git reset --hard <commit id> 【黄色就是】
- 恢复commit
git reflog -n10 --oneline
git reset --hard <commit id>