参考

git 官网 book

git 官网 api

Git分支管理策略

Git 常用命令大全

Win7 git cmd 中文乱码 (最新终极解决办法)

git 使用场景

  • git 安装

  • github、gitee 上拉取项目(仓库)

  • 本地项目同步到 gitee 实现多台设备间的同步(类似映像笔记功能,github/gitee 操作都类似,gitee访问流畅些不用考虑网络问题)

  • git 创建分支实现不同进度开发 + 多人协同开发

git安装

git官网 下载对应的安装包,使用默认安装配置,一路next完成安装。

github、gitee 上拉取项目(仓库)

在安装好git之后,就可以通过git工具下载 github/gitee 远程仓库上的项目。例如:需要的第三方库,想要参考学习的项目

  • 仓库主页复制 git clone 地址
  • 在本地文件夹右键 git bash here --> 输入克隆命令(回车执行命令) --> 等待克隆完成 --> 当前文件夹会创建一个项目名的文件夹 --> 项目克隆成功。也可以使用 cmd 命令行 cd 到指定的目录,执行 git clone https://gitee.com/springff/java-note.git 命令。

git同步

本地项目同步到 gitee 实现多台设备间的同步

在工作电脑、家用电脑上实现代码同步,笔记同步。和映像笔记、百度云工具类型可以在A设备上访问到B设备做的更改,只是这些工具是自动同步,git 本地 + git 远程 是手动实现(更灵活)。

客户端A

  • 在 github/gitee 网站上创建空项目,获取到时候上传(push)的地址
  • 将本地工程添加到本地的 git仓库:add --> commit
  • 将本地仓库同步到远程仓库

客户端B

  • 直接从远程仓库的 clone 项目到本地

同步

  • 无论是客户端A还是客户端B,修改之前都建议先从远程仓库拉取内容到本地,完成更新(避免提交时发生冲突)。
  • 客户端修改之后,将修改的内容提交到远程仓库

git 分支

创建分支

git gui 选中仓库目录直接创建 repository , 默认就是 master 分支

创建开发分支 devlelop,并且将切换到 develop:

git checkout -b develop master

切换到主分支:

git checkout master
# 切换到开发分支
git checkout develop 

从本地仓库 clone

注意 clone 是将整个项目拷贝,所有的分支版本都会被拷贝下来

参考:git 克隆本地仓库

# cd 到源仓库, . 表示当前目录, ../copy 表示指定的目录
$ git clone -l -s -n . ../copy
$ cd ../copy
# 查看分支
$ git show-branch

develop 分支合并到 master 分支

拷贝 master 分支最新的代码

版本控制忽略

参考:

# 将已经添加到版本控制的文件从版本控制中删除,但是并不删除文件本身
# 将要忽略的文件添加到 .gitignore 文件中,然后执行 git rm --cached命令(执行rm命令前最好备份整个 git 项目)
$ git rm --cached filename

git 暂存分支上的修改

参考:git stash 用法总结和注意点

问题:

本地:分支切换之前的修改是否需要提交,还是只需要 staged changes 状态就可以?

无论是 changs not staged 还是 staged changes 状态都不行,切换分支之前需要在当前分支修改提交,然后再切换分支,这样在分支A上的修改就不会影响到分支B,但是这样不方便

解决方案:

使用 git stash 命令存档当前修改,切换到目标分支完成临时修改,修改完成后,切换回正在开发分支加载存档((不想进行add 和commit)。

git stash save "save message"  # 将当前的状态存档,存档后 git status 就会发现没有更改
git stash list # 查看git下所有存档,注意是栈结构,最新的存档在最前面
git stash apply stash@{0} # 将存档还原到当前分支(注意检查当前分支)
git stash drop stash@{0} # 删除存档

注意:

  • 只有 changes not staged 状态下的文件才会被存档, untraked files (没有被添加到 git 状态管理的文件不会被存档)

git 中文乱码

# 一键配置git中文乱码
git config --global core.autocrlf false; git config --global core.quotepath false; git config --global gui.encoding utf-8; git config --global i18n.commit.encoding utf-8; git config --global i18n.logoutputencoding utf-8 ; export LESSCHARSET=utf-8