“Git”的版本间的差异
来自百问网嵌入式Linux wiki
标签:visualeditor-switched |
|||
(未显示同一用户的2个中间版本) | |||
第1行: | 第1行: | ||
=简介= | =简介= | ||
+ | |||
+ | |||
+ | |||
+ | *一个可以在线学习git命令的网站 https://oschina.gitee.io/learn-git-branching/ | ||
+ | |||
+ | =Git命令与配置= | ||
+ | |||
+ | ==Git基本操作步骤== | ||
+ | 1.初始化仓库 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | git init | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 2.将文件添加到仓库 | ||
+ | |||
+ | <syntaxhighlight lang="bash"> | ||
+ | git add 文件名 # 将工作区的某个文件添加到暂存区 | ||
+ | git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件 | ||
+ | git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件 | ||
+ | git add . # 将当前工作区的所有文件都加入暂存区 | ||
+ | git add -i # 进入交互界面模式,按需添加文件到缓存区 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 3.将暂存区文件提交到本地仓库 | ||
+ | |||
+ | <syntaxhighlight lang="bash"> | ||
+ | git commit -m "提交说明" # 将暂存区内容提交到本地仓库 | ||
+ | git commit -a -m "提交说明" # 跳过缓存区操作,直接把工作区内容提交到本地仓库 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 4.查看仓库当前状态 | ||
+ | |||
+ | <syntaxhighlight lang="bash"> | ||
+ | git status | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 5.比较文件异同 | ||
+ | |||
+ | <syntaxhighlight lang="bash"> | ||
+ | git diff # 工作区与暂存区的差异 | ||
+ | git diff 分支名 #工作区与某分支的差异,远程分支这样写:remotes/origin/分支名 | ||
+ | git diff HEAD # 工作区与HEAD指针指向的内容差异 | ||
+ | git diff 提交id 文件路径 # 工作区某文件当前版本与历史版本的差异 | ||
+ | git diff --stage # 工作区文件与上次提交的差异(1.6 版本前用 --cached) | ||
+ | git diff 版本TAG # 查看从某个版本后都改动内容 | ||
+ | git diff 分支A 分支B # 比较从分支A和分支B的差异(也支持比较两个TAG) | ||
+ | git diff 分支A...分支B # 比较两分支在分开后各自的改动 | ||
+ | |||
+ | # 另外:如果只想统计哪些文件被改动,多少行被改动,可以添加 --stat 参数 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 6.查看历史记录 | ||
+ | |||
+ | <syntaxhighlight lang="bash"> | ||
+ | git log # 查看所有commit记录(SHA-A校验和,作者名称,邮箱,提交时间,提交说明) | ||
+ | git log -p -次数 # 查看最近多少次的提交记录 | ||
+ | git log --stat # 简略显示每次提交的内容更改 | ||
+ | git log --name-only # 仅显示已修改的文件清单 | ||
+ | git log --name-status # 显示新增,修改,删除的文件清单 | ||
+ | git log --oneline # 让提交记录以精简的一行输出 | ||
+ | git log –graph –all --online # 图形展示分支的合并历史 | ||
+ | git log --author=作者 # 查询作者的提交记录(和grep同时使用要加一个--all--match参数) | ||
+ | git log --grep=过滤信息 # 列出提交信息中包含过滤信息的提交记录 | ||
+ | git log -S查询内容 # 和--grep类似,S和查询内容间没有空格 | ||
+ | git log fileName # 查看某文件的修改记录,找背锅专用 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 7.代码回滚 | ||
+ | |||
+ | <syntaxhighlight lang="bash"> | ||
+ | git reset HEAD^ # 恢复成上次提交的版本 | ||
+ | git reset HEAD^^ # 恢复成上上次提交的版本,就是多个^,以此类推或用~次数 | ||
+ | |||
+ | git reflog | ||
+ | |||
+ | git reset --hard 版本号 | ||
+ | |||
+ | --soft:只是改变HEAD指针指向,缓存区和工作区不变; | ||
+ | --mixed:修改HEAD指针指向,暂存区内容丢失,工作区不变; | ||
+ | --hard:修改HEAD指针指向,暂存区内容丢失,工作区恢复以前状态; | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 8.同步远程仓库 | ||
+ | |||
+ | <syntaxhighlight lang="bash"> | ||
+ | git push -u origin master | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 9.删除版本库文件 | ||
+ | |||
+ | <syntaxhighlight lang="bash"> | ||
+ | git rm 文件名 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 10.版本库里的版本替换工作区的版本 | ||
+ | |||
+ | <syntaxhighlight lang="bash"> | ||
+ | git checkout -- test.txt | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 11.本地仓库内容推送到远程仓库 | ||
+ | |||
+ | <syntaxhighlight lang="bash"> | ||
+ | git remote add origin git@github.com:帐号名/仓库名.git | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 12.从远程仓库克隆项目到本地 | ||
+ | |||
+ | <syntaxhighlight lang="bash"> | ||
+ | git clone git@github.com:git帐号名/仓库名.git | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 13.创建分支 | ||
+ | |||
+ | <syntaxhighlight lang="bash"> | ||
+ | git checkout -b dev | ||
+ | -b表示创建并切换分支 | ||
+ | 上面一条命令相当于一面的二条: | ||
+ | git branch dev //创建分支 | ||
+ | git checkout dev //切换分支 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 14.查看分支 | ||
+ | |||
+ | <syntaxhighlight lang="bash"> | ||
+ | git branch | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 15.合并分支 | ||
+ | |||
+ | <syntaxhighlight lang="bash"> | ||
+ | git merge dev | ||
+ | //用于合并指定分支到当前分支 | ||
+ | |||
+ | git merge --no-ff -m "merge with no-ff" dev | ||
+ | //加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 16.删除分支 | ||
+ | |||
+ | <syntaxhighlight lang="bash"> | ||
+ | git branch -d dev | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 17.查看分支合并图 | ||
+ | |||
+ | <syntaxhighlight lang="bash"> | ||
+ | git log --graph --pretty=oneline --abbrev-commit | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 18.查看远程库信息 | ||
+ | |||
+ | <syntaxhighlight lang="bash"> | ||
+ | git remote | ||
+ | // -v 显示更详细的信息 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 19.git相关配置 | ||
+ | |||
+ | <syntaxhighlight lang="bash"> | ||
+ | # 安装完Git后第一件要做的事,设置用户信息(global可换成local在单独项目生效): | ||
+ | git config --global user.name "用户名" # 设置用户名 | ||
+ | git config --global user.email "用户邮箱" #设置邮箱 | ||
+ | git config --global user.name # 查看用户名是否配置成功 | ||
+ | git config --global user.email # 查看邮箱是否配置 | ||
+ | |||
+ | # 其他查看配置相关 | ||
+ | git config --global --list # 查看全局设置相关参数列表 | ||
+ | git config --local --list # 查看本地设置相关参数列表 | ||
+ | git config --system --list # 查看系统配置参数列表 | ||
+ | git config --list # 查看所有Git的配置(全局+本地+系统) | ||
+ | git config --global color.ui true //显示git相关颜色 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 20.撤消某次提交 | ||
+ | |||
+ | <syntaxhighlight lang="bash"> | ||
+ | git revert HEAD # 撤销最近的一个提交 | ||
+ | git revert 版本号 # 撤销某次commit | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 21.拉取远程分支到本地仓库 | ||
+ | |||
+ | <syntaxhighlight lang="bash"> | ||
+ | git checkout -b 本地分支 远程分支 # 会在本地新建分支,并自动切换到该分支 | ||
+ | git fetch origin 远程分支:本地分支 # 会在本地新建分支,但不会自动切换,还需checkout | ||
+ | git branch --set-upstream 本地分支 远程分支 # 建立本地分支与远程分支的链接 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 22.标签命令 | ||
+ | |||
+ | <syntaxhighlight lang="bash"> | ||
+ | git tag 标签 //打标签命令,默认为HEAD | ||
+ | git tag //显示所有标签 | ||
+ | git tag 标签 版本号 //给某个commit版本添加标签 | ||
+ | git show 标签 //显示某个标签的详细信息 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 23.同步远程仓库更新 | ||
+ | |||
+ | <syntaxhighlight lang="bash"> | ||
+ | git fetch origin master | ||
+ | </syntaxhighlight> | ||
+ | //从远程获取最新的到本地,首先从远程的origin的master主分支下载最新的版本到origin/master分支上,然后比较本地的master分支和origin/master分支的差别,最后进行合并。 | ||
+ | git fetch比git pull更加安全 | ||
+ | |||
+ | ==Git基本操作命令== | ||
+ | *git init # 初始化本地git仓库(创建新仓库) | ||
+ | *git config --global user.name "xxx" # 配置用户名 | ||
+ | *git config --global user.email "xxx@xxx.com" # 配置邮件 | ||
+ | *git config --global color.ui true # git status等命令自动着色 | ||
+ | *git config --global color.status auto | ||
+ | *git config --global color.diff auto | ||
+ | *git config --global color.branch auto | ||
+ | *git config --global color.interactive auto | ||
+ | *git config --global --unset http.proxy # remove proxy configuration on git | ||
+ | *git clone git+ssh://git@192.168.53.168/VT.git # clone远程仓库 | ||
+ | *git status # 查看当前版本状态(是否修改) | ||
+ | *git add xyz # 添加xyz文件至index | ||
+ | *git add . # 增加当前子目录下所有更改过的文件至index | ||
+ | *git commit -m 'xxx' # 提交 | ||
+ | *git commit --amend -m 'xxx' # 合并上一次提交(用于反复修改) | ||
+ | *git commit -am 'xxx' # 将add和commit合为一步 | ||
+ | *git rm xxx # 删除index中的文件 | ||
+ | *git rm -r * # 递归删除 | ||
+ | *git log # 显示提交日志 | ||
+ | *git log -1 # 显示1行日志 -n为n行 | ||
+ | *git log -5 | ||
+ | *git log --stat # 显示提交日志及相关变动文件 | ||
+ | *git log -p -m | ||
+ | *git show dfb02e6e4f2f7b573337763e5c0013802e392818 # 显示某个提交的详细内容 | ||
+ | *git show dfb02 # 可只用commitid的前几位 | ||
+ | *git show HEAD # 显示HEAD提交日志 | ||
+ | *git show HEAD^ # 显示HEAD的父(上一个版本)的提交日志 ^^为上两个版本 ^5为上5个版本 | ||
+ | *git tag # 显示已存在的tag | ||
+ | *git tag -a v2.0 -m 'xxx' # 增加v2.0的tag | ||
+ | *git show v2.0 # 显示v2.0的日志及详细内容 | ||
+ | *git log v2.0 # 显示v2.0的日志 | ||
+ | *git diff # 显示所有未添加至index的变更 | ||
+ | *git diff --cached # 显示所有已添加index但还未commit的变更 | ||
+ | *git diff HEAD^ # 比较与上一个版本的差异 | ||
+ | *git diff HEAD -- ./lib # 比较与HEAD版本lib目录的差异 | ||
+ | *git diff origin/master..master # 比较远程分支master上有本地分支master上没有的 | ||
+ | *git diff origin/master..master --stat # 只显示差异的文件,不显示具体内容 | ||
+ | *git remote add origin git+ssh://git@192.168.53.168/VT.git # 增加远程定义(用于push/pull/fetch) | ||
+ | *git branch # 显示本地分支 | ||
+ | *git branch --contains 50089 # 显示包含提交50089的分支 | ||
+ | *git branch -a # 显示所有分支 | ||
+ | *git branch -r # 显示所有原创分支 | ||
+ | *git branch --merged # 显示所有已合并到当前分支的分支 | ||
+ | *git branch --no-merged # 显示所有未合并到当前分支的分支 | ||
+ | *git branch -m master master_copy # 本地分支改名 | ||
+ | *git checkout -b master_copy # 从当前分支创建新分支master_copy并检出 | ||
+ | *git checkout -b master master_copy # 上面的完整版 | ||
+ | *git checkout features/performance # 检出已存在的features/performance分支 | ||
+ | *git checkout --track hotfixes/BJVEP933 # 检出远程分支hotfixes/BJVEP933并创建本地跟踪分支 | ||
+ | *git checkout v2.0 # 检出版本v2.0 | ||
+ | *git checkout -b devel origin/develop # 从远程分支develop创建新本地分支devel并检出 | ||
+ | *git checkout -- README # 检出head版本的README文件(可用于修改错误回退) | ||
+ | *git merge origin/master # 合并远程master分支至当前分支 | ||
+ | *git cherry-pick ff44785404a8e # 合并提交ff44785404a8e的修改 | ||
+ | *git push origin master # 将当前分支push到远程master分支 | ||
+ | *git push origin :hotfixes/BJVEP933 # 删除远程仓库的hotfixes/BJVEP933分支 | ||
+ | *git push --tags # 把所有tag推送到远程仓库 | ||
+ | *git fetch # 获取所有远程分支(不更新本地分支,另需merge) | ||
+ | *git fetch --prune # 获取所有原创分支并清除服务器上已删掉的分支 | ||
+ | *git pull origin master # 获取远程分支master并merge到当前分支 | ||
+ | *git mv README README2 # 重命名文件README为README2 | ||
+ | *git reset --hard HEAD # 将当前版本重置为HEAD(通常用于merge失败回退) | ||
+ | *git rebase | ||
+ | *git branch -d hotfixes/BJVEP933 # 删除分支hotfixes/BJVEP933(本分支修改已合并到其他分支) | ||
+ | *git branch -D hotfixes/BJVEP933 # 强制删除分支hotfixes/BJVEP933 | ||
+ | *git ls-files # 列出git index包含的文件 | ||
+ | *git show-branch # 图示当前分支历史 | ||
+ | *git show-branch --all # 图示所有分支历史 | ||
+ | *git whatchanged # 显示提交历史对应的文件修改 | ||
+ | *git revert dfb02e6e4f2f7b573337763e5c0013802e392818 # 撤销提交dfb02e6e4f2f7b573337763e5c0013802e392818 | ||
+ | *git ls-tree HEAD # 内部命令:显示某个git对象 | ||
+ | *git rev-parse v2.0 # 内部命令:显示某个ref对于的SHA1 HASH | ||
+ | *git reflog # 显示所有提交,包括孤立节点 | ||
+ | *git show HEAD@{5} | ||
+ | *git show master@{yesterday} # 显示master分支昨天的状态 | ||
+ | *git log --pretty=format:'%h %s' --graph # 图示提交日志 | ||
+ | *git show HEAD~3 | ||
+ | *git show -s --pretty=raw 2be7fcb476 | ||
+ | *git stash # 暂存当前修改,将所有至为HEAD状态 | ||
+ | *git stash list # 查看所有暂存 | ||
+ | *git stash show -p stash@{0} # 参考第一次暂存 | ||
+ | *git stash apply stash@{0} # 应用第一次暂存 | ||
+ | *git grep "delete from" # 文件中搜索文本“delete from” | ||
+ | *git grep -e '#define' --and -e SORT_DIRENT | ||
+ | *git gc | ||
+ | *git fsck | ||
+ | ==详细的Git使用说明== | ||
*[[How to use the git log command]] | *[[How to use the git log command]] | ||
*[[How to use the git branch command]] | *[[How to use the git branch command]] | ||
第8行: | 第302行: | ||
=参考= | =参考= | ||
+ | [[Category:Git]] |
2020年5月9日 (六) 16:48的最新版本
简介
- 一个可以在线学习git命令的网站 https://oschina.gitee.io/learn-git-branching/
Git命令与配置
Git基本操作步骤
1.初始化仓库
git init
2.将文件添加到仓库
git add 文件名 # 将工作区的某个文件添加到暂存区
git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件
git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件
git add . # 将当前工作区的所有文件都加入暂存区
git add -i # 进入交互界面模式,按需添加文件到缓存区
3.将暂存区文件提交到本地仓库
git commit -m "提交说明" # 将暂存区内容提交到本地仓库
git commit -a -m "提交说明" # 跳过缓存区操作,直接把工作区内容提交到本地仓库
4.查看仓库当前状态
git status
5.比较文件异同
git diff # 工作区与暂存区的差异
git diff 分支名 #工作区与某分支的差异,远程分支这样写:remotes/origin/分支名
git diff HEAD # 工作区与HEAD指针指向的内容差异
git diff 提交id 文件路径 # 工作区某文件当前版本与历史版本的差异
git diff --stage # 工作区文件与上次提交的差异(1.6 版本前用 --cached)
git diff 版本TAG # 查看从某个版本后都改动内容
git diff 分支A 分支B # 比较从分支A和分支B的差异(也支持比较两个TAG)
git diff 分支A...分支B # 比较两分支在分开后各自的改动
# 另外:如果只想统计哪些文件被改动,多少行被改动,可以添加 --stat 参数
6.查看历史记录
git log # 查看所有commit记录(SHA-A校验和,作者名称,邮箱,提交时间,提交说明)
git log -p -次数 # 查看最近多少次的提交记录
git log --stat # 简略显示每次提交的内容更改
git log --name-only # 仅显示已修改的文件清单
git log --name-status # 显示新增,修改,删除的文件清单
git log --oneline # 让提交记录以精简的一行输出
git log –graph –all --online # 图形展示分支的合并历史
git log --author=作者 # 查询作者的提交记录(和grep同时使用要加一个--all--match参数)
git log --grep=过滤信息 # 列出提交信息中包含过滤信息的提交记录
git log -S查询内容 # 和--grep类似,S和查询内容间没有空格
git log fileName # 查看某文件的修改记录,找背锅专用
7.代码回滚
git reset HEAD^ # 恢复成上次提交的版本
git reset HEAD^^ # 恢复成上上次提交的版本,就是多个^,以此类推或用~次数
git reflog
git reset --hard 版本号
--soft:只是改变HEAD指针指向,缓存区和工作区不变;
--mixed:修改HEAD指针指向,暂存区内容丢失,工作区不变;
--hard:修改HEAD指针指向,暂存区内容丢失,工作区恢复以前状态;
8.同步远程仓库
git push -u origin master
9.删除版本库文件
git rm 文件名
10.版本库里的版本替换工作区的版本
git checkout -- test.txt
11.本地仓库内容推送到远程仓库
git remote add origin git@github.com:帐号名/仓库名.git
12.从远程仓库克隆项目到本地
git clone git@github.com:git帐号名/仓库名.git
13.创建分支
git checkout -b dev
-b表示创建并切换分支
上面一条命令相当于一面的二条:
git branch dev //创建分支
git checkout dev //切换分支
14.查看分支
git branch
15.合并分支
git merge dev
//用于合并指定分支到当前分支
git merge --no-ff -m "merge with no-ff" dev
//加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并
16.删除分支
git branch -d dev
17.查看分支合并图
git log --graph --pretty=oneline --abbrev-commit
18.查看远程库信息
git remote
// -v 显示更详细的信息
19.git相关配置
# 安装完Git后第一件要做的事,设置用户信息(global可换成local在单独项目生效):
git config --global user.name "用户名" # 设置用户名
git config --global user.email "用户邮箱" #设置邮箱
git config --global user.name # 查看用户名是否配置成功
git config --global user.email # 查看邮箱是否配置
# 其他查看配置相关
git config --global --list # 查看全局设置相关参数列表
git config --local --list # 查看本地设置相关参数列表
git config --system --list # 查看系统配置参数列表
git config --list # 查看所有Git的配置(全局+本地+系统)
git config --global color.ui true //显示git相关颜色
20.撤消某次提交
git revert HEAD # 撤销最近的一个提交
git revert 版本号 # 撤销某次commit
21.拉取远程分支到本地仓库
git checkout -b 本地分支 远程分支 # 会在本地新建分支,并自动切换到该分支
git fetch origin 远程分支:本地分支 # 会在本地新建分支,但不会自动切换,还需checkout
git branch --set-upstream 本地分支 远程分支 # 建立本地分支与远程分支的链接
22.标签命令
git tag 标签 //打标签命令,默认为HEAD
git tag //显示所有标签
git tag 标签 版本号 //给某个commit版本添加标签
git show 标签 //显示某个标签的详细信息
23.同步远程仓库更新
git fetch origin master
//从远程获取最新的到本地,首先从远程的origin的master主分支下载最新的版本到origin/master分支上,然后比较本地的master分支和origin/master分支的差别,最后进行合并。
git fetch比git pull更加安全
Git基本操作命令
- git init # 初始化本地git仓库(创建新仓库)
- git config --global user.name "xxx" # 配置用户名
- git config --global user.email "xxx@xxx.com" # 配置邮件
- git config --global color.ui true # git status等命令自动着色
- git config --global color.status auto
- git config --global color.diff auto
- git config --global color.branch auto
- git config --global color.interactive auto
- git config --global --unset http.proxy # remove proxy configuration on git
- git clone git+ssh://git@192.168.53.168/VT.git # clone远程仓库
- git status # 查看当前版本状态(是否修改)
- git add xyz # 添加xyz文件至index
- git add . # 增加当前子目录下所有更改过的文件至index
- git commit -m 'xxx' # 提交
- git commit --amend -m 'xxx' # 合并上一次提交(用于反复修改)
- git commit -am 'xxx' # 将add和commit合为一步
- git rm xxx # 删除index中的文件
- git rm -r * # 递归删除
- git log # 显示提交日志
- git log -1 # 显示1行日志 -n为n行
- git log -5
- git log --stat # 显示提交日志及相关变动文件
- git log -p -m
- git show dfb02e6e4f2f7b573337763e5c0013802e392818 # 显示某个提交的详细内容
- git show dfb02 # 可只用commitid的前几位
- git show HEAD # 显示HEAD提交日志
- git show HEAD^ # 显示HEAD的父(上一个版本)的提交日志 ^^为上两个版本 ^5为上5个版本
- git tag # 显示已存在的tag
- git tag -a v2.0 -m 'xxx' # 增加v2.0的tag
- git show v2.0 # 显示v2.0的日志及详细内容
- git log v2.0 # 显示v2.0的日志
- git diff # 显示所有未添加至index的变更
- git diff --cached # 显示所有已添加index但还未commit的变更
- git diff HEAD^ # 比较与上一个版本的差异
- git diff HEAD -- ./lib # 比较与HEAD版本lib目录的差异
- git diff origin/master..master # 比较远程分支master上有本地分支master上没有的
- git diff origin/master..master --stat # 只显示差异的文件,不显示具体内容
- git remote add origin git+ssh://git@192.168.53.168/VT.git # 增加远程定义(用于push/pull/fetch)
- git branch # 显示本地分支
- git branch --contains 50089 # 显示包含提交50089的分支
- git branch -a # 显示所有分支
- git branch -r # 显示所有原创分支
- git branch --merged # 显示所有已合并到当前分支的分支
- git branch --no-merged # 显示所有未合并到当前分支的分支
- git branch -m master master_copy # 本地分支改名
- git checkout -b master_copy # 从当前分支创建新分支master_copy并检出
- git checkout -b master master_copy # 上面的完整版
- git checkout features/performance # 检出已存在的features/performance分支
- git checkout --track hotfixes/BJVEP933 # 检出远程分支hotfixes/BJVEP933并创建本地跟踪分支
- git checkout v2.0 # 检出版本v2.0
- git checkout -b devel origin/develop # 从远程分支develop创建新本地分支devel并检出
- git checkout -- README # 检出head版本的README文件(可用于修改错误回退)
- git merge origin/master # 合并远程master分支至当前分支
- git cherry-pick ff44785404a8e # 合并提交ff44785404a8e的修改
- git push origin master # 将当前分支push到远程master分支
- git push origin :hotfixes/BJVEP933 # 删除远程仓库的hotfixes/BJVEP933分支
- git push --tags # 把所有tag推送到远程仓库
- git fetch # 获取所有远程分支(不更新本地分支,另需merge)
- git fetch --prune # 获取所有原创分支并清除服务器上已删掉的分支
- git pull origin master # 获取远程分支master并merge到当前分支
- git mv README README2 # 重命名文件README为README2
- git reset --hard HEAD # 将当前版本重置为HEAD(通常用于merge失败回退)
- git rebase
- git branch -d hotfixes/BJVEP933 # 删除分支hotfixes/BJVEP933(本分支修改已合并到其他分支)
- git branch -D hotfixes/BJVEP933 # 强制删除分支hotfixes/BJVEP933
- git ls-files # 列出git index包含的文件
- git show-branch # 图示当前分支历史
- git show-branch --all # 图示所有分支历史
- git whatchanged # 显示提交历史对应的文件修改
- git revert dfb02e6e4f2f7b573337763e5c0013802e392818 # 撤销提交dfb02e6e4f2f7b573337763e5c0013802e392818
- git ls-tree HEAD # 内部命令:显示某个git对象
- git rev-parse v2.0 # 内部命令:显示某个ref对于的SHA1 HASH
- git reflog # 显示所有提交,包括孤立节点
- git show HEAD@{5}
- git show master@{yesterday} # 显示master分支昨天的状态
- git log --pretty=format:'%h %s' --graph # 图示提交日志
- git show HEAD~3
- git show -s --pretty=raw 2be7fcb476
- git stash # 暂存当前修改,将所有至为HEAD状态
- git stash list # 查看所有暂存
- git stash show -p stash@{0} # 参考第一次暂存
- git stash apply stash@{0} # 应用第一次暂存
- git grep "delete from" # 文件中搜索文本“delete from”
- git grep -e '#define' --and -e SORT_DIRENT
- git gc
- git fsck