me

Git 版本控制


初始化

生成 ssh 密钥

# 使用的是 rsa 密钥
ssh-keygen -t rsa

区域

工作区,暂存区,版本库

git 基本命令

创建工作目录 对工作目录进行修改

git 暂存区命令

git init初始化仓库
git status查看本地工作区信息
git diff查看还有哪些文件没有暂存
git diff --staged查看哪些修改已经被暂存,还没有提交
git add ./提交所有变化
git add -u提交被修改和被删除文件(不包括新文件)
git add -A提交所有变化
git ls-files -s查看暂存区存储状况

更改文件与提交

git rm 文件名删除工作目录中的对应文件 再将修改添加到暂存区
git mv 原文件名 新文件名将工作目录中的文件进行重命名 再将修改添加到暂存区
git commit在文本中编辑注释
git commit -a跳过暂存区提交
git commit -m 注释将暂存区提交到版本库
git commit -a -m 注释跳过暂存区提交编辑注释
git commit –amend 注释(原来提交基础上提交,不是新的提交)

git 版本查看

git log带有完全键很多信息的版本查看,如作者
git log --oneline只有部分键,部分信息的版本查看
git log --prety=oneline查看提交的历史记录
git log --oneline --decorate --graph --all查看项目分叉历史
git config --global alias.别名"git 后的命令"配置别名
git log -1后面加数字,显示最近的几次提交

git 分支

git branch显示分支列表
git branch 分支名创建分支
git checkout 分支名切换分支
git branch -D 分支名强制删除分支
git branch -d branchname普通删除分支
git merge branchname合并分支
git reflog –-date=local查看当前分支是基于哪个分支建立的

切换分支

在切换分支时,如果当前分支上有未暂存的修改 (第一次) 或者有未提交的的暂存 (第一次) 分支可以切换成功,但这种操作可能污染其它分支

区域的的更改

版本回退 (revert 和 resert)

git log >git reflog只要是 HEAD 有变化,那么git reflog就会记录下来

参数:

resert
revert

-n或者–no-commit,应用这个参数会让 revert 改动只限于本地仓库,而不自动进行 commit

远程分支

git branch -r:查看远程分支

git fetch <远程主机> <分支名>:取回远程主机的分支

合并远程分支

git pull:用于从远程获取代码并合并到本地分支

同步远程分支

# 首先取回远程分支 dev,并跟踪
git fetch origin dev
# 创建本地分支 
git checkout -b dev
# 同步(合并)远程分支
git rebase origin/dev

同步上游分支,fork 仓库有多个分支的情况

git fetch upstream
git checkout -b dev upstream/dev
git push -u origin dev

分支注意

Cherry-pick

此命令用于多分支的代码仓库,可以将代码从一个分支转移到另一个分支。如果,你需要另一个分支的所有代码改动,那么就需要使用 merge 或者 rebase。如果你只需要部分变动(某几个提交),那么就需要使用 cherry-pick

常见的提交参数

解决冲突

也可以获取其它仓库的提交

tag

git 可以对某个版本打上标签 (tag),表示本版本为发行版

命令解释
git tag查看所有标签
git tag -l 1..打印符合检索的标签
git checkout 1.0.0查看对应标签的状态
git show v1.4完整标签的信息

创建本地标签

推送标签到远程仓库

删除本地标签git tag -d v1.0.0

删除远程仓库对应的标签git push origin --delete v1.0.0

其它

对于大型项目,我们只希望将项目的一部分拉取到本地,此时我们可以使用 sparse-checkout