git工作流程
workspace:工作区;index/stage暂缓区;repository:本地仓库;remore:远程仓库。
index会记录git add添加文件的相关信息,不保存文件实体,使用git status查看暂缓区的内容。
git常用命令
1.MAC生成密匙
密匙地址:~/.ssh
id_rsa是密匙,id_raa.pub是公匙
ssh-keygen -t rsa -C "邮箱地址"
2.版本回退
git status 查看当前库的内容,可以检查那些未提交到远程服务器的文件
git diff 查看修改的内容
git log 查看提交内容
初始化配置
- #配置使用git仓库的人员姓名
- git config --global user.name "Your Name Comes Here"
- #配置使用git仓库的人员email
- git config --global user.email you@yourdomain.example.com
- #配置到缓存 默认15分钟
- git config --global credential.helper cache
- git config -1 #列举所有配置
- #用户的git配置文件~/.gitconfig
查看文件diff
- git diff <file> # 比较当前文件和暂存区文件差异
- git diff
- git diff <$id1> <$id2> # 比较两次提交之间的差异
- git diff <branch1>..<branch2> # 在两个分支之间比较
- git diff --staged # 比较暂存区和版本库差异
- git diff --cached # 比较暂存区和版本库差异
- git diff --stat # 仅仅比较统计信息
查看提交记录
- git log
- git log <file> # 查看该文件每次提交记录
- git log -p <file> # 查看每次详细修改内容的diff
- git log -p -2 # 查看最近两次详细修改内容的diff
- git log --stat #查看提交统计信息
- git log --graph 以图示的方式展示提交记录
Git暂存管理
- git stash # 暂存
- git stash list # 列所有stash
- git stash apply # 恢复暂存的内容
- git stash drop # 删除暂存区
Git远程分支管理
- git pull # 抓取远程仓库所有分支更新并合并到本地
- git pull --no-ff # 抓取远程仓库所有分支更新并合并到本地,不要快进合并
- git fetch origin # 抓取远程仓库更新
- git merge origin/master # 将远程主分支合并到本地当前分支
- git co --track origin/branch # 跟踪某个远程分支创建相应的本地分支
- git co -b <local_branch> origin/<remote_branch> # 基于远程分支创建本地分支,功能同上
- git push # push所有分支
- git push origin master # 将本地主分支推到远程主分支
- git push -u origin master # 将本地主分支推到远程(如无远程主分支则创建,用于初始化远程仓库)
- git push origin <local_branch> # 创建远程分支, origin是远程仓库名
- git push origin <local_branch>:<remote_branch> # 创建远程分支
- git push origin :<remote_branch> #先删除本地分支(git br -d <branch>),然后再push删除远程分支
git merge和rebase的区别:
1.merge:
如上图是按时间点master和br1两个分支的提交记录;br1是在master分支的2节点创建的;
当br1执行git merge master命令时br2的提交记录变为:
可以看出br1分支执行merge之后分叉了,此时commit信息按照时间排列:0-1-2-3-4-5-6-7
2.rebase
当执行git rebase后,提交记录变为:
可以看出分支没有分叉,此时commit信息按照时间排列:0-1-2-3-5-4-6