GIT branch
本文可以作为手册查看branch相关命令
1. 创建
# 在当前commit对象上创建分支
git branch new_branch_name
# 在当前所在的提交对象上创建一个指针,并切换上去
git checkout -b new_branch_name
# 上述命令等价于
git branch branch
git checkout branch
2. 删除
# 删除本地仓库分支
git branch -d branch_name
# 删除远程仓库分支
git push remote_name --delete remote_branch
3. 查看
# 查看所有分支
git branch
# 查看每一个分支的最后一次提交
git branch -v
# 显示本分支已经合并进来的分支
git branch --merged
# 显示本分支尚未合并进来的分支
git branch --no-merged
# 查看本地跟踪分支,显示信息每一个分支正在跟踪哪个远程分支与本地分支是否是领先、落后
git branch -vv
4.切换分支
# 切换到一个已存在的分支,即head指针指向branch_name所指向的commit
git checkout branch_name
5.合并分支
# 合并分支,将branch分支合并到当前分支,如果branch分支是当前分支直接后继,即可触发快速合并(Fast-forward)
git merge branch
# 快速合并表示两个分支之间不存在冲突,若冲突发生,则会进行“三方合并”
# 冲突:不同的分支中,对同一个文件的同一个部分进行了不同的修改
# 三方合并:寻找两个分支的共同祖先commit,其后的commit对象进行合并
# 如果发生冲突,解决办法
# 合并过程中冲突发生会停止合并,使用git status查看冲突文件,手动解决冲突(选择哪个分支的内容)
# 可视化解决冲突
git mergetool
6.推送分支
# 切换到一个已存在的分支,即head指针指向branch_name所指向的commit
git remote add remotename url
# 推送 将本地分支推送到指定的服务器上面的指定分支
git push remote_name local_branch:remote_branch
7. 拉取分支
# 拉取远程仓库分支
# 本地分支不存在
# [常用]
git checkout -b local_branch remote_name/remote_branch
git checkout --track origin/serverfix
git checkout remote_branch
# 本地分支存在
git branch -u remote_name/remote_branch
# 与远程仓库同步数据;从服务器上抓取本地没有的数据;只会获取数据然后让你自己合并
git fetch remote_name
# 与远程仓库同步数据,并进行合并
git pull remote_name
# 等价于
git fetch remote_name
git merge branch_name
GIT COMMIT
# 修改当前分支最近一次提交的提交信息
git commit --amend
# 修改特定commit的提交信息
# 特定commit的父commit,然后对目标commit指向reword命令,wq,修改信息即可
git rebase -i parent_commit_id
# 压缩commit
git rebase -i parent_commit
squash commit1
squash commit2
squash commit3
GIT LOG
git log 用于查询提交信息,主要记录一些参数,以及如何过滤日志
git log --oneline
git log --graph
# 指定log输出格式
git log --pretty=format:"%h - %an, %ar : %s"
- git log --pretty=format:“”
options | comment |
---|---|
%H | 提交的完整哈希值 |
%h | 提交的简写哈希值 |
%T | 树的完整哈希值 |
%t | 树的简写哈希值 |
%P | 父提交的完整哈希值 |
%p | 父提交的简写哈希值 |
%an | 作者名字 |
%ae | 作者的电子邮件地址 |
%ad | 作者修订日期(可以用 --date=选项 来定制格式) |
%ar | 作者修订日期,按多久以前的方式显示 |
%cn | 提交者的名字 |
%ce | 提交者的电子邮件地址 |
%cd | 提交日期 |
%H | 提交的完整哈希值 |
%cr | 提交日期(距今多长时间) |
%s | 提交说明 |
- 多个参数介绍
GIT 其他
# 移动、重命名文件
git mv file1 file2
# 移除文件
git rm filename
查看区别
# 查看工作区与暂存区 同一文件区别
git diff
# 查看暂存区与最后一次提交的文件差异
git diff --staged/ --cached
.gitignore
文件 .gitignore 的格式规范如下:
-
所有空行或者以 # 开头的行都会被 Git 忽略。
-
可以使用标准的 正则表达式 模式匹配,它会递归地应用在整个工作区中。
-
匹配模式可以以(/)开头防止递归。
-
匹配模式可以以(/)结尾指定目录。
-
要忽略指定模式以外的文件或目录,可以在模式前加上叹号(!)取反。
# 忽略所有的 .a 文件
*.a
# 但跟踪所有的 lib.a,即便你在前面忽略了 .a 文件
!lib.a
# 只忽略当前目录下的 TODO 文件,而不忽略 subdir/TODO
/TODO
# 忽略任何目录下名为 build 的文件夹
build/
# 忽略 doc/notes.txt,但不忽略 doc/server/arch.txt
doc/*.txt
# 忽略 doc/ 目录及其所有子目录下的 .pdf 文件
doc/**/*.pdf