[Git] Git学习笔记
自己的使用总结,还不完善,时不时更新。
以下学习笔记的代码托平台为 GitHub,其他平台(如Gitee等)大同小异~、
1. 基本概念
-
仓库(Repository):实际上就是项目(一个仓库有100个start已经很了不起了);
-
复制克隆项目(Fork):把别人的仓库完完整整地复制到我的仓库里,且是独立存在的(但是这样的话是不是太浪费空间了),我们可以在里面随意添加代码、删除代码,跟原仓库都没影响;
-
发起请求(Pull Request):就是上面我们克隆的仓库做了修改之后,只要发起请求,原仓库主人就可以看到我们的修改,如果他觉得还不错的话就会合并到原仓库(也就是同意请求);
-
关注(Watch):如果Watch了某个项目,当项目有任何更新你都可以接收到动态;
-
事务卡片(Issue):发现代码BUG,但是目前没有成型代码,需要讨论时用;
-
Git工作区域:暂存区其实就是草稿箱;
先将工作区的文件提交到暂存区(存草稿),等确定提交之后就提交到Git仓库;
-
git status 命令可以查看文件的状态(是在工作区还是暂存区);
-
git add 文件名 命令可以提交到暂存区;
-
git commit -m “提交描述” 命令可以将暂存区的东西提交到Git仓库;
-
2. 开源项目贡献流程
2.1 新建Issue:
提交使用问题、建议或者想法(也就是反馈?)
2.2 Pull Request:
-
Fork项目;
-
修改自己仓库的项目代码
-
发起pull request
-
等待作者操作(审核、合并)
3. Git的配置
安装完Git之后需要初始化基本信息(只需要一次,这是全局的,对所有仓库生效,以后建新的仓库不需再配置)
config的三个作用域:
git config --local
只对某个仓库有效git config --global
对当前用户所有仓库有效git config --system
对系统所有登录的用户有效
-
设置用户名:
git config --global user.name '[用户名]'
-
设置用户名邮箱:
git config --global user.email '[邮箱]'
-
查看配置信息:
git config --list [作用域] # 如: git config --list local
4. 仓库相关
-
初始化仓库:
git init
-
查看关联的远程仓库:
git remote -v
-
关联远程仓库:
git remote add origin [仓库地址]
-
修改远程仓库地址:
git remote set-url origin [新仓库地址]
-
推送仓库:
【注】首次推送需要关联指定分支!
# 首次推送需要关联指定分支,例如当前分支关联远程仓库的 develop 分支,执行“git push --set-upstream origin develop” #(关联远程分支之后可直接使用,不需指定远程分支) git push # 或者指定分支 git push -u origin [分支名]
5. 常规操作
-
添加文件到暂存区:
git add [文件名] # 如:添加所有文件 git add *
-
提交:
git commit -m '[提交注释]'
-
查看文件的状态(是在工作区还是暂存区):
git status
-
移除已经add的文件:
# 方法一:不会删除物理文件 git rm --cached [文件路径] # 方法二:将该文件从缓存中删除的同时也删除物理文件 git rm --f [文件路径]
6. 分支操作
【注】仓库被初始化之后并没有分支,(好像也不能手动创建?)提交一次之后Git会自动创建一个master分支,并将本次操作提交到master分支。
-
查看现有分支:
# 查看本地分支 git branch -v # 查看所有分支(包括远程) git branch -a
-
创建新的分支:
git branch [新分支名] # 或 新建一个分支并切换到该分支 git checkout -b [新分支名]
-
切换分支:
git checkout [分支名] # 或切换分支
-
合并分支:
假设要将dev分支的内容合并到master分支中:
-
切换到master分支;
-
执行:
git merge dev
【注】如有冲突会合并失败
-
-
本地分支关联远程分支:
【注】当前分支首次推送到远程分支需要进行关联
git branch --set-upstream-to=origin/[远程分支名] [本地分支名] # 或者:当前所在分支第一次推送可直接同时关联远程分支 git push --set-upstream origin [远程分支]
-
查看本地分支关联的远程分支:
git branch -vv
-
重命名分支:
git branch -m [旧分支名] [新分支名]
执行之后推送到远程的指定分支(旧分支名);
7. 冲突解决
7.1 下面是很久以前的总结,不确定对不对。后面继续补充其他类型
在多人开发的时候,经常遇到的问题就是对于远程仓库上的某个版本,所有人都pull了,当某个人修改提交之后并push,那么其他的人再push就会被拒绝,这就是文件冲突(不过好像只是其中的一种);
以下是解决方式(其实我觉得效率一点都不高):
- 当push被拒绝之后,我们应该先pull(pull之前肯定已经commit了);
- pull时Git会就会自动合并;
- 合并之后根据Git打印的信息对每个合并后的文件进行修改;
- 之后add、commit、push
Rebase
8. 回滚
-
查看版本,确定需要回到的时刻:(第一条指令显示具体信息,第二条指令只显示一行,比较简洁)
git log #或者代码托管商的? git log --pretty=oneline
-
回滚操作
git reset --hard 版本号
-
退回最新版本:回滚之后后悔了(但是窗口关了,git log已经找不到以前的记录了),想回到之前的最新版本,使用
git reflog
查看历史操作,得到最新的 **commit id **,然后再用 2 中的退回操作进行退回就可以了
9. 搭建个人站点
可以配合vue之类的框架。一般用于搭建个人博客或者项目主页。
-
访问https://用户名.github.io
-
在git网站新建仓库(注:仓库名必须是【用户名.github.io】)
-
在仓库下新建index.html的文件即可
-
或二者在项目仓库的setting往下拉看到GitHub Pages,然后自己弄就行,不过这个是仓库的网页,更123点的自己创建的不太一样