git知识体系
2021-10-12 17:46:39 35 举报
AI智能生成
git知识体系
作者其他创作
大纲/内容
3. 分支
3.1 查看分支
git branch -a
查看所有的分支,包括本地和远程
查看所有的分支,包括本地和远程
git branch -r
查看远程所有分支
查看远程所有分支
git branch
查看本地所有分支
查看本地所有分支
3.2 分支的新建与合并
分支的新建与切换
git checkout
切换到本地dev分支
切换到本地dev分支
git branch -d/-D branchName
删除本地库
删除本地库
git branch branch_0.1 master
从主分支master创建branch_0.1分支
从主分支master创建branch_0.1分支
git branch <branch-name>
git checkout -b [branch]
git checkout -b <branch><tag>
git branch <branch> <commit>
git branch --track <branch> <remote-branch>
git checkout -
git branch --set-upstream <branch> <remote-branch>
分支的合并
解决完冲突后可以运用git add来表示编辑完冲突
git mergetool
git merge <branch>
git cherry-pick [commit]
删除分支
git branch -d [branch-name]
git push origin --delete [branch-name]
git branch -dr [remote/branch]
3.3 分支的管理
git branch --merged/--no-merged
已经或者尚未和当前分支合并的分支
git branch -d branchName会报错是因为这些分支中包含还没有合并进来的工作成果,删除会丢失数据
git branch -m branch_0.1 branch_1.0
将branch_0.1重命名为branch_1.0
将branch_0.1重命名为branch_1.0
3.4 利用分支进行开发的workflow
长期分支
特性(短期)分支
3.5 远程分支
用 (远程仓库名)/(分支名) 这样的形式表示远程分支
git push --set-upstream origin jy
第一次把本地分支推送到远程去
git fetch origin同步远程服务器上的数据到本地
git push origin branchName[/remoteBranchName]
push本地分支到远程分支去
git push -u origin master
git push origin test:master
提交本地test分支 作为 远程的master分支
提交本地test分支 作为 远程的master分支
git push --force
谨用
谨用
在 fetch 操作下载好新的远程分支之后,你仍然无法在本地编辑该远程仓库中的分支。
换句话说,在本例中,你不会有一个新的 serverfix 分支,有的只是一个你无法移动的 origin/serverfix 指针。
git merge origin/branchName
把该远程分支的内容合并到当前分支
git merge --no-ff -m "merge with no-ff" dev
git checkout -b localBranchName origin/remoteBranchName
把该远程分支的内容合并到当前分支
git checkout --track origin/serverfix
跟踪远程分支
跟踪远程分支
git checkout -b b newBranch origin/remoteBranch
为本地分支设定不同于远程分支的名字
3.6 分支的合并
把一个分支的修改整到另一个分支的两种方法
merge
rebase(变基)
准则:不要对在你的仓库外有副本的分支执行变基
git rebase master server
git pull --rebase
git fetch + git rebase
git rebase --abort
终止rebase
终止rebase
git rebase --continue
继续apply余下的补丁
继续apply余下的补丁
git rebase –i
交互模式
基本的衍合操作
删除远程分支
git push origin :remoteLocal
子主题
子主题
子主题
子主题
子主题
子主题
子主题
子主题
子主题
子主题
7.Git工具
7.1 选择修订版本
git show branchName
在当前分支显示某个分支最后一次提交
git rev-parse branchName
7.2 交互式暂存
7.3 Git工具- 储藏与
7.4 签署工作
7.5 签署
7.6 重写历史
打包
子模块
添加submodule
git submodule add 仓库地址 路径
删除submodule
下载的工程带有submodule
git submodule update --init --recursive
其他
git check-ignore
检测.gitignore文件
检测.gitignore文件
git archive
1.起步
Git能管理哪些文件
能以纯文本方式编写文件
二进制文件
安装
Debian平台
sudo apt-get install git
Ubuntu Linux平台
其他Linux
源码安装
解压,依次输入:./config,make,sudo make install
Mac OS X
homebrew
Windows
专有名词
Workspace:工作区
Index / Stage:暂存区
Repository:仓库区(或本地仓库)
Remote:远程仓库
示意图
链接
https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%9A%84%E6%96%B0%E5%BB%BA%E4%B8%8E%E5%90%88%E5%B9%B6
2.git 基础
2.1 创建版本库
git init
git init [project-name]
git clone <url>
下载制定标签
git clone --branch v1.6.5.7 https://github.com/ManaPlus/ManaPlus.git
2.2 添加/删除/重命名文件
新增
git add <file1> <file2> ...
git add <dir>
git add .
git add -p
git commit -m "提交内容"
git commit -am
git commit -v
删除
git rm --cached <file>
git rm <file1> <file2> ...
重命名
git mv <file-original> <file-renamed>
2.3 时光机穿梭
HEAD指针
HEAD 当前版本
HEAD^ 上一个版本
HEAD^^ 上上一个版本
HEAD~100 上100版本
git show d921970^2
文件只有两种状态
已跟踪
未更新
已修改
已暂存
未跟踪
git status
git status -s
git status --short
跟踪新文件
git add ./fileDir/fileName
忽略某些文件
cat .gitignore 查看
.gitignore文件也支持glob匹配模式
git diff 查看更改
git diff --staged查看已经暂存(还未commit)的文件里的更改
移除文件
git rm [-f]
git rm [-f]
git rm --cached fileName
从git仓库移除文件,但是保留在当前工作目录中
git rm * -r删除所有文件(包括目录)
git mv beforeName afterName
2.3 查看提交历史
git log 可以查看提交历史
git log [-p]
查看详细差异
git log [-n]
git log --author=wuxiaolan
git log
-p
-2
--stat
--pretty
oneline
short
full
fuller
format
--graph
git log --stat
git log --pretty=oneline/short/full/fuller
git log --grep keyword
git log --graph
查看提交树
查看提交树
git log -S [keyword]
git log [tag] HEAD --pretty=format:%s
git log [tag] HEAD --grep feature
git log --follow [file]
git whatchanged [file]
git log -p [file]
git log -5 --pretty --oneline
git shortlog -sn
git blame [file]
显示暂存区和工作区的代码差异
git diff --cached [file]
git diff HEAD
git diff [first-branch]...[second-branch]
git diff --shortstat "@{0 day ago}"
git show [commit]
git show --name-only [commit]
git show [commit]:[filename]
git reflog
git log --abbrev-commit --pretty=oneline
git show HEAD@{5}
git show master@{yesterday}
git show HEAD@{2.months.ago}
多点
git log ^refA refB
git log refB --not refA
双点
git log origin/master..HEAD
git log master..experiment
三点
git log --left-right master...experiment
gitk 查看git历史
git log的可视化版本
git log的可视化版本
2.4 撤销操作
取消已经暂存的文件
git reset HEAD [file]
git reset .撤销上次add
修改最后一次的提交
git commit --amend
修改最后一次提交
版本回退/前进
git reset --hard [HEAD^]
暂存区的修改回退到工作区
git reset HEAD [readme.txt]
git checkout [file]
git checkout [commit] [file]
git checkout .
git reset [file]
git reset --hard
git reset [commit]
git reset --hard [commit]
git reset --keep [commit]
git revert [commit]
git commit --amend
2.5 远程仓库的使用
git fetch [remote]
git push origin localBranchName:remoeBranchName
把本地的新建的分支推送到远程去
git remote show origin
服务器有哪些分支本地是没有更新的等等
关联远程库
git remote add origin [git@github.com:michaelliao/learngit.git]
git remote add origin [git@github.com:michaelliao/learngit.git]
git remote -v
git remote show [remote]
git remote add [shortname] [url]
git pull [remote] [branch]
git push [remote] [branch]
git push [remote] --force
git push [remote] --all
git remote set-url origin git@192.168.6.70:res_dev_group/test.git
变更项目地址
变更项目地址
2.6 标签操作
git tag
标签的两种类型
轻量级的
git tag tagName
含附注的
git tag -a tagName -m tagDesc
git tag -a tagName sha-1值
给以前的提交补充tag
git tag -s v0.2 -m "signed version 0.2 released" fec145a
-s用私钥签名一个标签
-s用私钥签名一个标签
git tag -d <tag>
删除本地标签
删除本地标签
git push origin :refs/tags/v0.9
删除远程库标签
删除远程库标签
git tag <tag> <commit>
git show [tag]
git push <remote> <tag>
git push <remote> --tags
git tag -l 'v0.1.*'
新建
git tag v0.2.1-light
2.7 技巧和窍门
git 后连按两次TAB,能列出所有匹配的可用命令建议
git 命令的部分命令,再按TAB,能自动补全git命令
git co(自动丿配git commit/config,建议直接输git com+TAB
配置
git config --list
显示当前的Git配置
显示当前的Git配置
Git别名
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
配置帐号密码
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
$ git config --global user.email "email@example.com"
更换默认的编辑器
git config --global core.editor "vim"
关闭自动换行
git config --global core.autocrlf false
git config --global core.safecrlf true
git config –global push.default matching
git config http.postBuffer 524288000
生成密钥
ssh-keygen -t rsa -C "noogel666@gmail.com"
git config --global core.editor "/Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl -n -w"
代码提交
git commit -m <message>
git commit <file1> <file2]> ... -m [message]
git commit -a
git commit -v
git commit --amend -m [message]
git commit --amend [file1] [file2] ...
8 自定义Git
8.1 配置git
外部的合并与比较工具
格式化与多余的空白字符
8.3 git钩子
提交工作流钩子
pre-commit在键入提交信息前运行
电子邮件工作流钩子
其他客户端钩子
子主题
服务器端钩子
post-receive可以用来更新其他系统服务或者通知用户
储藏
git stash list
查看所有stash
查看所有stash
git show stash@{0}
查看制定工作场景的变更
git stash save -a "messeag"
添加改动到stash
添加改动到stash
恢复改动
git stash pop
将文件从临时空间pop下来
将文件从临时空间pop下来
git stash apply <stash@{1}>
还原指定工作场景
还原指定工作场景
git stash apply --index
让暂存的文件重新被暂存
让暂存的文件重新被暂存
删除stash
git stash drop
git stash clear
取消储藏
git stash show -p stash@{0} | git apply -R
储藏中创建分支
git stash branch
创建stash
git stash push
FAQ
RPC failed; result=22, HTTP code = 413
git push ssh://192.168.64.250/eccp.git branch
0 条评论
下一页