GIT
工作目录
本地库
工作区 -> add -> 暂存区 -> commit -> 本地库
远程库:团队内协作
Amaster:创建本地库 -> push -> 远程库
Bworker:远程库 -> clone -> 本地库 -> 加入团队+push -> 远程库
Amaster:远程库 -> pull -> 本地库
远程库:跨团队协作
Amaster:创建本地库 -> push -> 远程库A
Bmaster:远程库A -> fork -> 远程库B -> clone -> 本地库 -> push -> 远程库B -> pull request+审核+merge -> 远程库A
Amaster:远程库 -> pull -> 本地库
具体操作
本地库
本地文件创建或修改会放到工作区
创建本地库
git config --global user.name "xx"
git config --global user.email "xx.."
git init
上传到本地库
git add xxx
git commit -m "..." xxx
查看工作区和暂存区状态
git status
untracked files 在工作区的文件
changes to be committed 在暂存区的文件
查看本地库操作记录
git log // 从最近操作到最远操作
// 空格下一页,b上一页
git log --pretty=oneline
git log --oneline
git reflog //多了HEAD@{数字} =》 指针回退到当前版本的步数
前进或回退版本
// 索引号:git reflog 开头的7个数字
git reset --hard 索引 // 移动本地库指针,重置工作区、暂存区
git reset --mixed 索引 // 移动本地库指针,重置暂存区
git reset --soft 索引 // 移动本地库指针
找回文件
// 暂存区
git reset --hard HEAD
// 本地库
git reset --hard 对应版本
对比文件
// 工作区与暂存区
git diff 文件[不写比较全部]
// 暂存区与特定本地库
git diff 索引 文件
分支
查看分支
git branch -v
创建分支
git branch 分支名
切换分支
git checkout 分支名
合并分支
// 1.切换到主线(分支)
git checkout master
// 2.合并(master)
git merge 分支名
// 3.解决冲突 (master|MERGING)
cat文件名并修改
git add 文件名
git commit -m "" // 不需要带文件名
远程库
创建远程库并起别名
git remote add 远程库别名 https://....
查看别名
git remote -v
push(前pull解决冲突+add+commit再push)
// 同一个项目
git push 远程库别名 本地库的分支名
// 不同的项目(先pull再push)
git pull 远程库别名 远程库的分支名 --allow-unrelated-histories
git push -u 远程库别名 远程库的分支名 -f
clone
git clone https://...
//初始化本地库+克隆远程库+创建远程库别名(origin)
pull = fetch + merge
// 1
git fetch 远程库别名 远程库分支名 // 工作区内容没变
git checkout 远程库别名/远程库分支名 // 查看文件是否正确
git checkout master
git merge 远程库别名/远程库分支名
// 2
git pull 远程库别名 远程库分支名
免密
cd ~
ssh-keygen -t rsa -C 邮箱名 // 将id_rsa.pub内容复制到对应网页
git remote add xxx git@...
IDEA集成
创建本地库
VCS - import VCS Repository - Greate Git Repository
提交到本地库
文件右击 - Git - add/commit
查看记录
Version Control - Console/Log
关联不同项目
git pull 远程库别名 远程库的分支名 --allow-unrelated-histories
git push -u 远程库别名 远程库的分支名 -f
push
文件右击 - Git - Repository - push
clone
File - NEW - Project from Version Control - Git