git 命令

特别感谢 @阮一峰 老师 的博客、@易百 Git 教程 

推荐一个特别有趣的学习 git 的网站 LearnGit

一、初始化和克隆

git init:使用当前目录作为一个仓库

git init [dir]:在当前目录下新建 dir 目录作为一个仓库

git remote add [remotename] [address]:为本地仓库添加一个远端仓库

git remote -v:列表显示当前仓库所有远端仓库及地址,可不加 -v 参数

git remote rm [remotename]:删除远端仓库的追踪

git remote show [remotename]:查看远端仓库详细信息,包括本地、远端分支及其追踪情况

git clone [url] [dir]:克隆一个仓库到当前目录,使用仓库名作为文件夹名。如果有dir参数,就会将项目克隆到指定目录。

二、暂存、取消暂存和提交

git add [file1] [file2] ...:添加指定文件到暂存区

git add [dir]:添加指定目录到暂存区,包括子目录

git add .:添加当前目录及其子目录的变更文件到缓存区

git reset [file1] [file2]:取消暂存的文件,恢复到工作区。如果省略文件名,则全部恢复到工作区

git commit -m [message]:提交暂存区到仓库,提交信息为message

git commit --amend -m [message]:替换(更新)上次提交

git commit -a -m [message]:将工作区和缓存区的文件全部提交,省去了 git add命令,提交的文件仅包括追踪的文件。

三、分支的新建、查看、切换、删除和追踪

git branch [branchname] [commitid]:以 commitid 的提交作为原型,新建一个分支,但仍处于当前分支

git branch [branchname] [branchname1]:以某一分支为原型,新建分支,仍处于当前分支。如果是远端分支,则自动建立追踪关系。如果省略 branchname1,默认为当前分支

git branch -m [old] [new]:重命名分支

git branch:查看本地所有分支

git branch -r:查看远端所有分支

git branch -a:查看所有(本地和远端)分支

git branch -v:查看本地分支与其追踪关系

git checkout [branchname]:切换分支

git checkout -b [branchname] [branchname1]:以某分支为原型,新建一个分支,并切换到新分支。如果是远端分支,则自动建立追踪关系。如果省略 branchname1,默认为当前分支。

git checkout -t [remote]/[branchname]:以远端分支为原型,新建一个与远端分支名相同的分支,并切换到新分支,同时建立追踪关系

git branch -d [branchname]:删除本地分支

git branch -dr [remotename]/[branchname]:删除远端分支

git branch -u [remote]/[branchename] [localbranchname]:设置本地分支追踪到远端分支,如果省略 localbranchname,默认为当前分支;-u 可以使用 --track 替换

git branch --unset-upstream:取消追踪远端分支

四、撤销提交

git revert [branch/commitid/HEAD]~<回退次数>:新建一个提交来撤销一个提交

git reset <option> HEAD~<回退次数>:将当前分支撤销几个提交,如果一次,可省略数字1

git reset <option> <commitid>:重置提交到某次提交,可以向前,也可以向后

option 详解:

--soft:将提交内容恢复到暂存区,工作区不变

--mixed(默认):将提交内容恢复到工作区,暂存区清空

--hard:重置到指定提交,工作区和暂存区同时清空

五、合并

git cherry-pick [commit] ...:选择一个或多个 commit,合并进当前分支,合并的是变化

git cherry-pick [start-commit-id]..[end-commit-id]:合并两个 commit 之间的提交,左开右闭,即不包括 [start-commit]

git cherry-pick [start-commit-id]^..[end-commit-id]:合并两个 commit 之间的提交,闭区间,包括 [start-commit]

git rebase [basebranch] [feturebranch]:将 feturebranch 的提交应用到 basebranch 分支。如果 feturebranch 缺省,默认为当前分支;如果两者都缺省,则与当前分支追踪的远端分支进行变基;如果当前分支未追踪远端分支,则变基失败

注意:rebase 可能会在某一个提交处产生冲突,此时会停在这一状态下,让你去解决冲突。

(1)解决完,使用 git rebase --continue,继续变基

(2)如果 git rebase --continue 无效,可以使用 git rebase --skip

(3)如果不想继续变基,可以使用 git rebase --abort,终止变基

git merge [branchname]:将当前分支与 branchname 分支进行合并。如果缺省,则与其追踪的远端分支进行合并。如果未追踪远端分支,则合并失败

如果发生冲突,可使用 git merge --abort,终止合并

rebase 和 merge 区别:如图

rebase 和 merge 区别

六、远程仓库操作

git fetch [remote] [branchname]:[branchname1]:取回远端仓库 remote 的 branchname 分支上的更新,放到本地数据库,更新 branchname1,但不会与本地分支进行合并。

(1)如果缺省 branchname1,则更新本地 remote/branchname;

(2)如果缺省 branchname,则取回所有分支的更新;

(3)如果全部缺省,则取回本地仓库 .git/config 中指定的远端仓库所有分支的更新。

.git/config 文件对远程仓库的配置

git pull [remote] [remotebranch]:[localbranch]

(1)该命令是 git fetch 和 git merge 的合并操作,参数解析同 git fetch;

(2)merge 是 HEAD 和 localbranch 的合并;

(3)如不想采用 merge 合并,可使用 git pull --rebase

git push [remote] [localbranch]:[remotebranch]:将本地分支 localbranch 推送到 remote 仓库的 remotebranch 分支上。

(1)如果缺省 remotebranch,则默认与 localbranch 同名分支;若远端没有该分支,则会新建远端分支;

(2)如果缺省两个分支,则推送当前分支到其追踪的 remote 仓库中的远端分支;若没有则新建;

(3)如果缺省 remote,则根据 config 中配置进行 push;

(4)如果本地分支与远端分支有冲突,且不要解决冲突,以本地分支为准,则加 --force 参数,强推至远端。

git push [remote] --delete [branchname]:删除远端分支。

git push [remote] :[branchname]:删除远端分支。


七、打补丁

https://blog.csdn.net/liuhaomatou/article/details/54410361

https://blog.csdn.net/Qidi_Huang/article/details/61920472

八、日志

https://juejin.im/post/5a65ac67f265da3e330473f7

九、文件操作

git checkout -- [filename]:丢弃文件修改

git reset --hard HEAD [filename]:丢弃文件修改

git rm --cached [file]:停止追踪指定文件,但该文件会保留在工作区

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

推荐阅读更多精彩内容

  • git常用命令 GIT常用命令备忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章阅读 8,465评论 1 26
  • 1,查看所有远程分支:%git branch -r 2, 拉取远程分支并创建本地分支git checkout -...
    will666阅读 2,063评论 0 18
  • 本文作者陈云峰,转载请注明。 这篇文章记录个人常用的一些命令,和记不住的一些命令,转载了并不断更新。 Git官网 ...
    陳云峰阅读 2,812评论 0 24
  • Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来。这样一来,任何一处协同...
    __silhouette阅读 15,866评论 5 147
  • 我是一条小小的秋街 老树站着散漫的队列 路灯静默,剪影歪斜 爱情在这里自生自灭 我是一条沧桑的秋街 脸上爬满了喃喃...
    慕容林阅读 462评论 32 57