<commit_before>---
layout: post
title:  Git 命令学习小结
category: 技术
tags: 
- git
keywords: 
- git 
description:
---

#### Git 命令学习小结

|command|comment|
|---|---|
|git clone &lt;url&gt;|ssh/http(s)/git三种协议，ssh和https可推送|
|git init|初始化Git仓库|
|git add &lt;file&gt;|将文件加入index file|
|git rm [--cached]|删除，加--cached表示仅从index file中删除文件，即放弃跟踪|
|git mv &lt;src&gt; &lt;dest&gt;|移动/更名|
|git diff --cached/--staged|当前索引与上次提交（有哪些需要commit）|
|git diff|当前索引与工作目录（有哪些需要add）|
|git diff HEAD[^]|工作目录与上次提交（当前目录与上次提交有何改变）|
|git commit [-a] -m &lt;msg&gt;|提交|
|git commit --amend [-m &lt;msg&gt;]|修复上次提交|
|git reset HEAD &lt;file&gt;|同--mixed，default option|
|git reset --mixed HEAD|撤销 commit 和index file,只保留 working tree 的信息|
|git reset --hard HEAD[^]|将 working tree 和 index file 都撤销到以前状态|
|git reset --soft HEAD[^]|只撤销 commit,而保留 working tree 和 index file 的信息回复到某个状态。以git reset --soft HEAD为例，commit回退到HEAD（相当于无变化），若是HEAD^，则commit回退到HEAD^|
|git reset|unstage files from the index|
|git gc|用垃圾回收机制清除由于 reset 而造成的垃圾代码|
|git status|显示当前工作目录状态|
|git log [-p]|显示提交历史（many useful options to be learned）|
|git branch [branch]|显示/新建分支|
|git branch -a|显示所有分支|
|git branch -d/-D|删除分支（d表示“在分支合并后删除分支”，D表示无论如何都删除分支）|
|git push origin --delete &lt;branchName&gt;|删除远程分支|
|git show-branch||
|git checkout &lt;branch&gt;|切换分支（分支未commit无法切换）|
|git checkout -b &lt;新分支名&gt;|创建新分支并切换到这个分支。|
|git checkout -b <branch_name> <remote_repository>/<branch_name>|创建新分支来跟踪远程分支|
|git merge &lt;branch&gt;|合并分支|
|git merge == git pull .||
|git show &lt;branch &#124; commit &#124; tag &#124; etc&gt;|显示对应对象的信息|
|git grep &lt;rep&gt; [object]|（在指定对象（历史记录）中）搜索|
|git cat-file|查看数据|
|git cat-file &lt;-t &#124; -s &#124; -e &#124; -p &#124; (type)&gt; &lt;object&gt;|type can be one of: blob, tree, commit, tag|
|git ls-files <file_name> |show information about files in the index and the working tree（实际是查看索引文件）|
|git watchchanged &lt;since&gt;..&lt;until&gt;|显示两个commit（当然也可以是branch）的区别|
|git remote [-v]|显示远程仓库，加-v选项可显示仓库地址|
|git remote add &lt;repo_name&gt;&lt;url&gt;|添加远程仓库，repo_name为shortname，指代仓库地址|
|git remote rename &lt;old_name&gt;&lt;new_name&gt;|更名|
|git remote rm &lt;repo_name&gt;|删除远程仓库|
|git remote show &lt;repo_name&gt;|查看远程仓库信息|
|git remote fetch &lt;repo_name&gt;|从远程仓库抓取数据（并不合并）|
|git pull &lt;repo_name&gt; &lt;branch_name&gt;|拉去数据并合并到当前分支|
|git pull --rebase|拉去远端分支数据，并以远端分支为base，将当前分支的新增commit应用到pull后的HEAD上|
|git push &lt;repo_name&gt; &lt;branch_name&gt;|推送指定分支到指定仓库|
|git fetch &lt;repo_name&gt; &lt;branch_name&gt;[:&lt;local_branch_name&gt;]|拉去数据，未合并|
|git reflog |查看本地仓库的变更历史|
|git push ssh://&lt;username&gt;@gitreview.eng.vmware.com:29418/&lt;repository&gt; HEAD:refs/for/master|推送本地分支到master进行gitreview|
|git rebase -i HEAD~4|交互模式处理最近的四次提交|
|git cherry-pick &lt;commit-id&gt;|选取某次提交到当前分支|
|git branch -vv|show local branch is tracking which remote branch|
|git remote -v|查看remote仓库配置|
|git branch --set-upstream-to=<remote>/<branch> <your_branch_name>|设置要tracking的远端分支|<commit_msg>Update 2017-08-03-Git命令学习小结.md<commit_after>---
layout: post
title:  Git 命令学习小结
category: 技术
tags: 
- git
keywords: 
- git 
description:
---

#### Git 命令学习小结

|command|comment|
|---|---|
|git clone &lt;url&gt;|ssh/http(s)/git三种协议，ssh和https可推送|
|git init|初始化Git仓库|
|git add &lt;file&gt;|将文件加入index file|
|git rm [--cached]|删除，加--cached表示仅从index file中删除文件，即放弃跟踪|
|git mv &lt;src&gt; &lt;dest&gt;|移动/更名|
|git diff --cached/--staged|当前索引与上次提交（有哪些需要commit）|
|git diff|当前索引与工作目录（有哪些需要add）|
|git diff HEAD[^]|工作目录与上次提交（当前目录与上次提交有何改变）|
|git commit [-a] -m &lt;msg&gt;|提交|
|git commit --amend [-m &lt;msg&gt;]|修复上次提交|
|git reset HEAD &lt;file&gt;|同--mixed，default option|
|git reset --mixed HEAD|撤销 commit 和index file,只保留 working tree 的信息|
|git reset --hard HEAD[^]|将 working tree 和 index file 都撤销到以前状态|
|git reset --soft HEAD[^]|只撤销 commit,而保留 working tree 和 index file 的信息回复到某个状态。以git reset --soft HEAD为例，commit回退到HEAD（相当于无变化），若是HEAD^，则commit回退到HEAD^|
|git reset|unstage files from the index|
|git gc|用垃圾回收机制清除由于 reset 而造成的垃圾代码|
|git status|显示当前工作目录状态|
|git log [-p]|显示提交历史（many useful options to be learned）|
|git branch [branch]|显示/新建分支|
|git branch -a|显示所有分支|
|git branch -d/-D|删除分支（d表示“在分支合并后删除分支”，D表示无论如何都删除分支）|
|git push origin --delete &lt;branchName&gt;|删除远程分支|
|git show-branch||
|git checkout &lt;branch&gt;|切换分支（分支未commit无法切换）|
|git checkout -b &lt;新分支名&gt;|创建新分支并切换到这个分支。|
|git checkout -b <branch_name> <remote_repository>/<branch_name>|创建新分支来跟踪远程分支|
|git merge &lt;branch&gt;|合并分支|
|git merge == git pull .||
|git show &lt;branch &#124; commit &#124; tag &#124; etc&gt;|显示对应对象的信息|
|git grep &lt;rep&gt; [object]|（在指定对象（历史记录）中）搜索|
|git cat-file|查看数据|
|git cat-file &lt;-t &#124; -s &#124; -e &#124; -p &#124; (type)&gt; &lt;object&gt;|type can be one of: blob, tree, commit, tag|
|git ls-files <file_name> |show information about files in the index and the working tree（实际是查看索引文件）|
|git watchchanged &lt;since&gt;..&lt;until&gt;|显示两个commit（当然也可以是branch）的区别|
|git remote [-v]|显示远程仓库，加-v选项可显示仓库地址|
|git remote add &lt;repo_name&gt;&lt;url&gt;|添加远程仓库，repo_name为shortname，指代仓库地址|
|git remote rename &lt;old_name&gt;&lt;new_name&gt;|更名|
|git remote rm &lt;repo_name&gt;|删除远程仓库|
|git remote show &lt;repo_name&gt;|查看远程仓库信息|
|git remote fetch &lt;repo_name&gt;|从远程仓库抓取数据（并不合并）|
|git pull &lt;repo_name&gt; &lt;branch_name&gt;|拉去数据并合并到当前分支|
|git pull --rebase|拉去远端分支数据，并以远端分支为base，将当前分支的新增commit应用到pull后的HEAD上|
|git push &lt;repo_name&gt; &lt;branch_name&gt;|推送指定分支到指定仓库|
|git fetch &lt;repo_name&gt; &lt;branch_name&gt;[:&lt;local_branch_name&gt;]|拉去数据，未合并|
|git reflog |查看本地仓库的变更历史|
|git push ssh://&lt;username&gt;@gitreview.<EMAIL>.vmware.com:29418/&lt;repository&gt; HEAD:refs/for/master|推送本地分支到master进行gitreview|
|git rebase -i HEAD~4|交互模式处理最近的四次提交|
|git cherry-pick &lt;commit-id&gt;|选取某次提交到当前分支|
|git branch -vv|show local branch is tracking which remote branch|
|git remote -v|查看remote仓库配置|
|git branch --set-upstream-to=<remote>/<branch> <your_branch_name>|设置要tracking的远端分支|
|git show --name-only <commit_id>|查看commit提交的内容（--name-only：只看文件名不看内容）|
{'fraction_non_alphanumeric': 0.17489609310058188, 'fraction_numerical': 0.01030756442227764, 'mean_word_length': 7.107816711590297, 'pattern_counts': {'":': 0, '<': 19, '<?xml version=': 0, '>': 19, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1555607', 'n_tokens_mistral': 3199, 'n_tokens_neox': 3318, 'n_words': 536}