精简Git使用笔记
Quick Review
Git 是分布式版本管理系统,可用于多人(设备)同步对同一项目进行编辑工作;每人本地都有一个完整的项目文件,Git服务器主要用于多人之间同步项目工作量,而不是存储。
Git 工作原理与流程:
常用命令:
git remote add <remote_repository_name> <SSH_Address>
本地库关联Git服务器远程库git add .
把当前目录下所有改动提交到Stagegit commit -m "注释"
提交到当前分支的本地Repositorygit push [-u <remote_repository_name> master]
提交到远程库,-u
用于首次指定默认提交到远程库(origin)的master分支git pull
冲突解决,拉到本地对比修改后再pushgit checkout -b <branch_name>
创建并切换到新分支(build的缩写)git merge <branch_name>
将指定分支合并到当前分支
Git管理的是文件的(初始版本和)修改,而不是文件本身。文件在工作区,修改在repository。
Git能追踪所有文本文件内容变化,但是二进制文件(.docx也是)内容改动无法追踪,只能追踪二进制文件附加信息,如大小改变等
Git名词解析
- 工作区:包含
.git
文件夹的目录及其子目录 - 版本库(repository):
.git
文件夹
Git命令
git init # repository(git项目库)初始化
git add <readme.txt | dirname> # 把(被修改的)文件/目录(的所有文件)添加到repository的暂存区(Stage)
git commit <-m "注释"> # 把暂存区的内容提交到repository的当前分支
git status # 查看repository状态(提交状态、合并冲突状态等等)
git diff readme.txt # 查看文件修改记录(different的缩写)
>>> git diff HEAD -- readme.txt # 查看repository和工作区的文件区别
git log # 查看commit记录
>>> git log --graph --pretty=oneline --abbrev-commit # 查看合并日志
git reset --hard <HEAD^ | commit id> # 回退上一个版本(commit id写前4位即可,git自己会找)
>>> git reset HEAD readme.txt # 撤销Stage内容
git reflog # 每次执行命令记录(常用查看commit id)
git checkout -- readme.txt # 把工作区撤销到最近一次add/commit状态
git rm readme.txt # 删除repository中文件
git remote add <remote_repository_name> <SSH_Address> # 本地库与远程库关联(远程仓库名可自定义,一般用origin)
>>> git remote -v # 看远程库信息
>>> git remote rm origin # 删除远程库与本地库的绑定关系
git push [-u <remote_repository_name> <remote_branch_name>] # 提交远程repository(-u 指定默认使用分支,第一次提交时使用)
>>> git push origin <tag_name> # 推送指定标签到远程库
>>> git push origin --tags # 推送所有标签到远程库
>>> git push origin :refs/tags/v0.9 # 删除远程标签(本地先删除)
git checkout -b <branch_name> # 创建并切换到新分支(build的缩写)
>>> git checkout <branch_name> # 切换分支
git switch -c <branch_name> # 创建并切换到新分支(create的缩写)
>>> git switch master # 切换为master分支
git branch # 查看处于哪个分支
>>> git branch -d <branch_name> # 删除分支,-D 强行删除
>>> git branch --set-upstream-to=origin/dev dev # 设置分支对应
git merge <branch_name> # 将指定分支合并到当前分支
>>> git merge --no-ff -m "merge with no-ff" dev # 禁止fast-forward模式
git stash # 暂存工作现场,即将Stage里的修改恢复到上一次commit
>>> git stash list # 查看保存的工作现场列表
>>> git stash apply [stash@{0}] # 恢复并且不删除stash,多个stash时可指定
>>> git stash pop # 恢复并删除stash
git cherry-pick 4c805e2 # 复制commit到当前分支,通过commit id(适合改bug)
git pull # 把远程对应分支拉到本地合并后再提交【需要分支对应,看git branch】
git tag <tag_name> [commite id]# 为最新的一次commit命名,也可为指定id的commit命名
>>> git tag -a v0.1 -m "version 0.1 released" 1094adb # 可添加注释
>>> git tag -d v0.1 # 删除标签
Git注意事项
- git reset到上一个版本后,也可以重新回到新版本,只需要commit id
- git merge后,冲突部分会直接在内容中出现
<<<<<<<
,=======
,>>>>>>>
标识,修改后再到当前分支add/commit即可完成合并。 - 合并时,在没有冲突的情况下,git使用
Fast-Forward
模式合并,即直接把master分支拉倒dev进度,这会没有提交记录。可以禁止Fast-Forward模式git merge --no-ff -m "merge with no-ff" dev
- 分支策略:master正式分支,dev开发分支,michal/bob个人分支
HEAD,HEAD^,HEAD^^,HEAD~100
分别表示当前分支的当前版本,上一版本,上两个版本,上100个版本。- 关于rebase
- 官方gitignore文件: .gitignore
本文参考:https://www.liaoxuefeng.com/wiki/896043488029600