下载地址:
https://npm.taobao.org/mirrors/git-for-windows/
环境配置:
- 用户名和邮箱
本质是本地文件,所以在本地文件中也可以改
$ git config --global user.name "username" # 配置用户名
$ git config --global user.email 333@qq.com # 配置邮箱
$ git config --global --list # 查看global(全局)配置
$ git config --system --list # 查看system(系统)配置
-
环境变量
配不配都行,只是全局使用
-
基本工作原理
- Directory:使用Git管理的一个目录,也就是一个仓库,包含我们的工作空间和Git的管理空间。
- WorkSpace:需要通过Git进行版本控制的目录和文件,这些目录和文件组成了工作空间。
- .git:存放Git管理信息的目录,初始化仓库的时候自动创建。
- Index/Stage:暂存区,或者叫待提交更新区,在提交进入repo之前,我们可以把所有的更新放在暂存区。
- Local Repo:本地仓库,一个存放在本地的版本库;HEAD会只是当前的开发分支(branch)。
- Stash:隐藏,是一个工作状态保存栈,用于保存/恢复WorkSpace中的临时状态。
git的工作流程:
1、在工作目录中添加、修改文件;
2、将需要进行版本管理的文件放入暂存区域;
3、将暂存区域的文件提交到git仓库。
因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)
3. 项目搭建
- 本地搭建
① 进入目标文件夹,初始化工作空间
完成之后会有一个隐藏的.git文件夹
$ git init # 初始化工作空间
- 远程克隆
$ git clone http://... # 远程仓库的项目的地址
4. Git文件操作
- Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.
- Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件
- Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改 !
- Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified
$ git status # 查看文件状态,后跟文件名查看指定文件
$ git add . # 将文件添加到暂存区
$ git commit -m "is a new file!" # 体检暂存区的东西 ,m提交消息
5. 忽略文件
- 有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等
- 在主目录下建立".gitignore"文件(Maven新建项目也会有),此文件有如下规则:
*.txt #忽略所有 .txt结尾的文件,这样的话上传就不会被选中!
!lib.txt #但lib.txt除外
/temp #仅忽略项目根目录下的TODO文件,不包括其它目录temp
build/ #忽略build/目录下的所有文件
doc/*.txt #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
6. 绑定SSH公钥
实现免密登录
$ cd 进入C:\Users\uyimirin\.ssh目录 # 一般在这里
$ ssh-keygen -t rsa # t加密以下
然后把公钥复制给gitee
7. idea集成Git
新建的项目,绑定项目:
方式一:将远程克隆的项目全部复制到idea新建项目下
方式二:idea创建项目时选择克隆的文件夹
8. 分支
常用命令:
# 列出所有本地分支
git branch
# 列出所有远程分支
git branch -r
# 新建一个分支,但依然停留在当前分支
git branch [branch-name]
# 新建一个分支,并切换到该分支
git checkout -b [branch]
# 合并指定分支到当前分支
$ git merge [branch]
# 删除分支
$ git branch -d [branch-name]
# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]
如果同一个文件在合并分支时都被修改了则会引起冲突:解决的办法是我们可以修改冲突文件后重新提交!选择要保留他的代码还是你的代码!
master主分支应该非常稳定,用来发布新版本,一般情况下不允许在上面工作,工作一般情况下在新建的dev分支上工作,工作完后,比如上要发布,或者说dev分支代码稳定后可以合并到主分支master上来。