Git常用命令

一、Git交互流程和基础命令

Git的命令有很多,我们不一定要全部记住。在理解下图Git各个部件之间的交互流程后,通常只要记住7个就足够我们日常使用了,剩下的命令只需做到大致有个印象,需要的时候再来查阅即可。

git各个部件之间的交互流程

在上图中的各个部件为:

  • Remote是指在远程服务器端的代码仓库;
  • Repository是指在本地的代码仓库;
  • Workspace是指当前的工作空间,也许是某一个分支;
  • Index是指暂存区,已经暂存但是还没有提交时的一个代码暂存区域;

在上图中各个动作为:

  • clone是将远程代码仓库的内容全量拷贝到本地,形成本地的代码仓库;
  • fetch是指将远程代码仓库中领先于本地代码仓库的内容拉取过来,更新本地的代码仓库;
  • checkout是指根据本地代码仓库检出需要的工作空间;
  • pull是指直接将远程代码仓库中领先于工作空间的内容拉取过来,更新工作空间的内容;
  • add是将已经修改的内容加入暂存区域,等待提交;
  • commit是将所有暂存的内容提交到本地的代码仓库上;
  • push是将本地代码仓库上领先的内容推送到远程代码仓库;

二、Git常用命令

Git提供了很多强大而又有意思的命令,下面我们挑选一些相对常用的予以说明。

2.1 代码库相关

  • 将某个文件夹设置为本地代码库:git init
  • 新建某个文件夹同时将其设置为本地代码库:git init filename
  • 根据url拉取远程的一个代码库到本地:git clone http://xxxx

通过init命令初始化的本地仓库并未关联到远程仓库,需要通过git remote add命令来增加关联到某个远程仓库,详细内容可以参考下面章节列举的远程操作部分。

2.2 配制相关

  • 显示当前的git配置信息:git config --list
  • 修改当前git配置信息:git config -e [--global],加上--global表示修改全局的配置
  • 设置用户信息:git config [--global] user.name "jack"git config [--global] user.email "xxx@yy.com"

2.3 文件相关

  • 将文件或者目录加入到暂存区:git add [filename1] [filename2]git add .
  • 将文件从本地仓库区删除,同时也从工作区删除:git rm [filename1] [filename2]
  • 将文件从本地暂存区删除,同时也从工作区删除:git rm -f [filename1] [filename2]
  • 取消追踪文件,将其从仓库区和暂存区删除,但保留在工作区:git rm --cached [filename]
  • 将暂存区的文件改名字:git mv [originfilename] [renamedfilename]

2.4 提交操作

  • 将暂存区的内容提交到本地仓库:git commit -m "comment"git commit [filename1] [filename2] -m "comment"
  • 将工作区自上次commit之后的的内容直接提交到仓库区:git commit -a
  • 提交时显示多有diff信息:git commit -v
  • 使用本次提交代替上次提交:git commit --amend -m "comment"

2.5 分支操作

  • 列出本地、远程、所有分支:git branchgit branch -rgit branch -a
  • 新建一个分支并停留在当前分支:git branch [branch-name]
  • 新建一个分支并切换到新建的分支上:git checkout -b [branch-name]
  • 新建一个分支并指向某个commit:git branch [branch-name] [commit]
  • 新建一个分支并与指定的远程分支建立追踪关系:git branch --track [branchname] [remote-branch]
  • 切换到指定的分支并更新工作区:git checkout [branch-name]
  • 切换到上一个分支:git checkout -
  • 合并指定分支上的内容到当前分支上:git merge [branch-name]
  • 选择一个commit合并到当前分支上:git cherry-pick [commit]
  • 删除本地指定分支:git branch -d [branch-name]
  • 删除远程分支:git push origin --delete [branch-name]

2.6 标签操作

  • 查看所有标签:git tag
  • 在当前commit新建一个标签:git tag [tagname]
  • 在指定的commit新建一个标签:git tag [tagname] [commit]
  • 删除本地tag:git tag -d [tagname]
  • 删除远程tag:git push origin :refs/tags/[tagname]
  • 查看指定tag的信息:git show [tagname]
  • 提交本地的某个tag:git push [remote] [tagname]
  • 提交本地所有的tag:git push [remote] --tags
  • 新建一个分支并指向某个tag:git checkout -b [branchname] [tagname]

2.7 信息查看

  • 查看变更情况:git status
  • 查看当前分支的版本历史[及变动的文件]:git log [--stat]
  • 显示过去5次提交:git log -5 --pretty --oneline
  • 显示当前分支所有提交过的用户,按照提交次数排序:git shortlog -sn
  • 显示指定文件由谁在什么时间修改过:git blame [filename]
  • 显示暂存区和工作区的差异:git diff
  • 今天写了多少行代码:git diff --shortstat "@{0 day ago}"
  • 显示当前分支的最近几次提交:git reflog

2.8 远程操作

  • 拉取[指定]远程仓库所有分支的变动到本地仓库:git fetch [remote]
  • 显示[所有]远程仓库:git remote [-v]
  • 显示某个远程仓库的信息:git remote show [remote]
  • 新增一个远程仓库:git remote add [shortname] [url]
  • 删除一个远程仓库:git remote rm [shortname]
  • 重命名一个远程仓库:git remote rename [originname] [newname]
  • 拉取远程仓库该分支的所有变动并合并到当前分支:git pull
  • 推送当前分支的内容到远程仓库的该分支[强行推送忽略冲突]:git push --force
  • 推送所有分支的修改内容到远程:git push --all

2.9 撤销操作

  • 恢复暂存区的某个文件到工作区并覆盖工作的该文件:git checkout [filename]
  • 恢复暂存区的所有文件到工作区并覆盖工作区:git checkout .
  • 重置暂存区的某个文件到上次commit的状态,但工作区不变:git reset [filename]
  • 重置暂存区和工作区到上次commit的状态:git reset --hard
  • 恢复某个commit的指定文件到暂存区和工作区:git checkout [commit] [filename]
  • 回退到某个提交版本:git reset --hard 版本号
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,158评论 4 370
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,600评论 1 307
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 111,785评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,655评论 0 220
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,075评论 3 295
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,002评论 1 225
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,146评论 2 318
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,918评论 0 211
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,671评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,838评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,318评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,636评论 3 263
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,343评论 3 244
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,187评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,982评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,126评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,934评论 2 279

推荐阅读更多精彩内容

  • 查看、添加、提交、删除、找回,重置修改文件 git help # 显示command的help git sho...
    Swiftor阅读 2,032评论 0 2
  • 分布式版本管理工具 git属于分布式 svn集中式 git安装 git初始化一个仓库 其实就是创建了一个.git隐...
    SnowDragonYY阅读 1,480评论 0 0
  • 开始: 1) 远程仓库相关命令 检出仓库:$ git clone git://github.com/jquery/...
    草根老张阅读 813评论 0 50
  • 配置 首先是配置帐号信息ssh -T git@github.com # 登陆 github 修改项目中的个人信息 ...
    guanguans阅读 667评论 0 3
  • 一、 Git 常用命令速查 git branch 查看本地所有分支 git status 查看当前状态 git c...
    不变秃也能变强阅读 980评论 0 9