git:软件,帮助我们做版本控制
基本使用:
- 进入你想要管理的文件夹 - Git Bash Here - git init # 初始化;生成一个 .Git 的文件夹 - git status # 查看当前管理状态 (三种颜色) - git add . # 添加管理(. 所有);单文件就加 单文件名 - git commit -m '一定要好好写' # 提交 - git log # 打印所有的提交日志 - git reset --hard 版本号 # 回滚到某个版本 - git reflog # 获取所有历史提交日志 - git reset --hard 版本号 # # 回滚到某个(历史)版本
详细内容:
# 开发过程中临时需要修复bug或临时新功能到来 1. stash:stash用于将工作区发生变化的所有文件获取临时存储在“某个地方”,将工作区还原当前版本未操作前的状态;stash还可以将临时存储在“某个地方”的文件再次拿回到工作区。 git stash # 将当前工作区所有修改过的内容存储到“某个地方”,将工作区还原到当前版本未修改过的状态(只存红色的文件) git stash list # 查看“某个地方”存储的所有记录 git stash clear # 清空“某个地方” git stash pop # 将第一个记录从“某个地方”重新拿到工作区(会有自动合并的动作,可能有冲突) git stash apply # 编号, 将指定编号记录从“某个地方”重新拿到工作区(可能有冲突) git stash drop # 编号,删除指定编号的记录 (注:touch 表示创建文件) 2. branch: 问题:当在开发某个功能到一半时,如果想要回到原来的状态修复原来的代码 master (不能在 master 上修改代码) dev (开发) git branch dev # 拷贝当前分支的所有代码到dev分支 当要紧急修复bug了 a. [dev] 将dev中现在正在开发的功能提交到 dev git add . git commit -m 'xxx' b. 切换回主分支 git checkout master c. 创建并切换到bug分支 git branch bug git checkout bug (注:git branch -b dev === git branch bug + git checkout bug # 既创建又切换) 在 bug分支上进行修复.... git add . git commit -m 'xx' d. 切换到master并将bug分支合并、删除 git merge bug git branch -d bug # 删除bug分支 PS: git branch # 查询所有分支列表 (一旦出现分支,合并的时候就有可能出现冲突,产生冲突就得解决。。。) 问题:公司线上代码出现bug 怎么办? 回答:创建一个bug分支,在bug分支中修复好bug后,将其合并到master就行 然后删掉 bug 分支 回到dev分支继续开发 3. github命令: git remote add origin ...... git push origin dev # 推送到github 上 git clone ....(url) # 克隆到本地 git pull origin dev # 从 github上把 origin dev分支拉到本地 # 这句命令的作用等价于下面两句: git fetch origin dev git merge origin/dev # 这时的 merge 提交记录可能会出现分叉;# 如果不想提交记录出现分叉,可利用 git rebase origin/dev
4. git rebase # 合并+将提交记录合并到一条主线==> 提交记录更整洁 如果产生冲突: 解决完冲突后:git rebase --skip 问题: git rebase的作用?
github上传示例:
多人协同开发:
1. 允许他人操作程序: - 合作者(collaborator) -创建组织 (organization) 2. 创建自己各自的分支 - master - dev - neo 注: 看到 "fast-forwards" 这个错时,要先 pull 下来再push 上去(有冲突则合并冲突) 3. 规则 - 组内一起合并 - 合并时间:一个小功能一合并(一两天左右) 4. 做代码review - 组长做 怎么做 review ? - 创建review分支;合并到 dev 之前 先在 review分支中合并 5. 给别人代码贡献力量 Q:如果你要在github上给别人代码添加功能? fork new pull request
其它:
a. .gitignore 文件 b. 版本 git tag -a v1.0 -m '版本介绍' # 本地创建Tag git show v1.0 # 查看 git tags -n # 查看本地Tag git tag -l 'v1.4.2.*' # 查看本地Tag,模糊匹配 git tag -d v1.0 # 删除Tag git push origin :refs/tags/v0.2 # 更新远程tag git checkout v.10 # 切换tag git fetch origin tag V1.2 git push origin --tags git pull origin --tags git clone -b v0.1 ...(url)