Git结构
交互
- push: 本地库 -> 远程库
- pull: 远程库 -> 本地库 修改的部分下载到本地
- clone: 远程库 -> 本地库 整个项目
- fork: 远程库1 -> 远程库2
- pull request: 远程库1 -> 审核
- merge: 审核 -> 远程库2
本地库
本地库初始化
git init
设置签名
项目/仓库级别
git config --global user.name MyName
git config --global user.email myEmail
系统用户级别
git config --global
- 优先级:优先使用项目级别签名
添加提交/查询状态
查询工作区/暂存区的状态 git status
文件添加到暂存区 git add test
warning: LF will be replaced by CRLF in test.
The file will have its original line endings in your working directory
文件移出暂存区 git rm --cached test
暂存区添加到本地库 git commit test
同时输入提交信息git commit -m "MyComment" test
历史版本
查看历史提交
git loggit log --pretty=oneline
按指定格式显示git log --onelinegit reflog
显示HEAD移动到当前版本的步数
前进后退版本
- 基于索引值
git reset --hard 索引值
- 使用
^
符号:只能后退(1 ^ one time)git reset --hard HEAD^^^
- 使用
~
符号:后退3步
git reset --hard HEAD~3
reset
三个参数
- --soft:仅在本地库移动指针
- --mixed:在本地库移动指针,重置暂存区
- --hard:在本地库移动指针,重置暂存区和工作区
找回删除文件
- 永久删除回退:
git reset --hard[指针位置]
- 删除后未提交到本地库:
git reset --hard HEAD
比较文件
- 将工作区的文件和暂存区文件进行比较
git diff [文件名]
- 将工作区的文件和本地库历史文件进行比较
git diff [本地库中的历史版本] [文件名]
- 比较文件夹所有文件
git diff
分支(branch)
- 同时并行推进多个feature的开发
git branch -v #查看分支
git branch hot_fix #创建分支
git checkout hot_fix #切换分支
#合并分支 先切换到接收修改的分支
git merge hot_fix
- 合并冲突文件
MERGING
状态
人工修改文件后 git add [file]
,git commit -m "msg"
(不带文件名)
Git版本管理机制
- SVN基于增量,Git基于快照
远程库
连接
git remote add [别名] [远程库地址]git remote -v
推送到远程库
git push [别名] [分支名]
如果不是基于远程库最新版,则不能推送。pull后如果进入冲突状态解决即可。
clone远程库
git clone [远程库地址]
- 完整的将远程库下载到本地
- 创建origin别名
- 初始化本地库
拉取
git pull
是拉取远程分支更新到本地仓库的操作。比如远程仓库里的学习资料有了新内容,需要把新内容下载下来的时候,就可以使用 git pull
命令。事实上,git pull
是相当于从远程仓库获取最新版本,然后再与本地分支merge(合并)。
即:git pull
= git fetch
+ git merge
git fetch origin master #[远程库地址别名][远程分支名]
git merge origin/master #[远程库地址别名/远程分支名]远程库合并到本地
git pull origin master
rebase
https://blog.csdn.net/wh_19910525/article/details/7554489
跨团队协作
pull request
是否merge
SSH
ssh-keygen -t rsa -C "youremail@example.com"
-rw-r--r-- 1 LOLLIPOP 197609 2602 4月 26 18:33 id_rsa
-rw-r--r-- 1 LOLLIPOP 197609 572 4月 26 18:33 id_rsa.pub
添加 ~/.ssh/id_rsa.pub
到Github
给ssh创建别名然后push
Git工作流
- 集中式工作流
- GitFlow工作流
- Forking工作流
一般流程
添加远程库(只执行一次)
git remote add origin git@github.com:xxxxxxxxxxxxxxxxx
写代码之前:
从远程库拉取最新的代码。
git pull --rebase origin master
写代码之后:
git add .
git commit -m '填写提交信息'
提交到远程库
git push -u origin master
参考链接:
版权属于:moluuser
本文链接:https://archive.moluuser.com/archives/23/
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。