Git专栏7:命令详解

简单的代码提交流程

1.  git status  #查看工作区代码相对于暂存区的差别
2.  git add .  #将当前目录下修改的所有代码从工作区添加到暂存区 . 代表当前目录
3.  git commit -m  ‘注释’  #将缓存区内容添加到本地仓库
4.  git pull origin master #先将远程仓库master中的信息同步到本地仓库master中
5.  git push origin master #将本地版本库推送到远程服务器, origin是远程主机,master表示是远程服务器上的master分支和本地分支重名的简写,分支名是可以修改的

Git add

git add [参数] <路径> 作用就是将我们需要提交的代码从工作区添加到暂存区,就是告诉git系统,我们要提交哪些文件,之后就可以使用git commit命令进行提交了。
 为了方便下面都用 . 来标识路径, . 表示当前目录,路径可以修改,下列操作的作用范围都在版本库之内。

  1. git add .
    不加参数默认为将修改操作的文件和未跟踪新添加的文件添加到git系统的暂存区,注意不包括删除
  2. git add -u .
    -u表示将已跟踪文件中的修改和删除的文件添加到暂存区,不包括新增加的文件,注意这些被删除的文件被加入到暂存区再被提交并推送到服务器的版本库之后这个文件就会从git系统中消失了。
  3. git add -A .
    -A表示将所有的已跟踪的文件的修改与删除和新增的未跟踪的文件都添加到暂存区。

Git commit

git commit主要是将暂存区里的改动给提交到本地的版本库。每次使用git commit命令我们都会在本地版本库生成一个40位的哈希值,这个哈希值也叫commit-id, commit-id 在版本回退的时候是非常有用的,它相当于一个快照,可以在未来的任何时候通过与git reset的组合命令回到这里.

  1. git commit -m ‘message’
    -m 参数表示可以直接输入后面的“message”,如果不加 -m参数,那么是不能直接输入message的,而是会调用一个编辑器一般是vim来让你输入这个messagemessage即是我们用来简要说明这次提交的语句。
  2. git commit -am ‘message’ -am等同于-a -m
    -a参数可以将所有已跟踪文件中的执行修改或删除操作的文件都提交到本地仓库,即使它们没有经过git add添加到暂存区,
    注意: 新加的文件(即没有被git系统管理的文件)是不能被提交到本地仓库的。

Git push

在使用git commit命令将修改从暂存区提交到本地版本库后,只剩下最后一步将本地版本库的分支推送到远程服务器上对应的分支了,如果不清楚版本库的构成,可以查看我的另一篇,git 仓库的基本结构。
git push的一般形式为 git push <远程主机名> <本地分支名> <远程分支名> ,例如 git push origin master:refs/for/master ,即是将本地的master分支推送到远程主机origin上的对应master分支, origin 是远程主机名。第一个master是本地分支名,第二个master是远程分支名。

  1. git push origin master
    如果远程分支被省略,如上则表示将本地分支推送到与之存在追踪关系的远程分支(通常两者同名),如果该远程分支不存在,则会被新建
  2. git push origin :refs/for/master
    如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支,等同于 git push origin –delete master
  3. git push origin
    如果当前分支与远程分支存在追踪关系,则本地分支和远程分支都可以省略,将当前分支推送到origin主机的对应分支
  4. git push
    如果当前分支只有一个远程分支,那么主机名都可以省略,形如 git push,可以使用git branch -r ,查看远程的分支名

关于 refs/for:
refs/for 的意义在于我们提交代码到服务器之后是需要经过code review 之后才能进行merge的,而refs/heads 不需要

五: git一些其他的命令:

命令1:git checkout master   #切换到主分支
命令2:git branch -d   分支名  #删除本地已合并的分支(这步具体要不要操作,看具体要求)
命令3:git push origin --delete  分支名  #删除远程分支(这步具体要不要操作,看具体要求)
命令4:git branch  命令不只是可以创建与删除分支。
      如果不加任何参数运行它,查看当前分支,会得到当前所有本地分支的一个列表:
# 结果
  iss53
* master
  testing
注意` master `分支前面带有`*`号的是当前分支。
`报错`: 在删除远程分支时,同名的本地分支并不会被删除,所以还需要单独删除本地同名分支。如果发生以下错误:
`
error: unable to delete ‘origin/xxxxxxxx-fixbug’: remote ref does not exist
error: failed to push some refs to 
‘git@github.com:xxxxxxxx/xxxxxxxxxx.git’
`

`解决办法`: `git checkout  分支名 `切换到当前分支上, 然后再进行`git push --delete origin  分支名`。
此时将不会再发生错误 。

命令5:git branch -v 如果需要查看每一个分支的最后一次提交,可以运行 git branch -v 命令:
# 结果
  iss53   93b412c fix javascript issue
* master  7a98805 Merge branch 'iss53'
  testing 782fd34 add scott to the author list in the readmes

命令6: git branch --merged  查看哪些分支已经合并到当前分支
# 结果
  iss53
* master
`--merged `与 `--no-merged` 这两个有用的选项可以过滤这个列表中已经合并或尚未合并到当前分支的分支。
因为之前已经合并了` iss53` 分支,所以现在看到它在列表中。
在这个列表中分支名字前没有`* `号的分支通常可以使用` git branch -d` 删除掉;
你已经将它们的工作整合到了另一个分支,所以并不会失去任何东西。

命令7: git branch --no-merged 查看所有未合并的分支
# 结果
  testing

命令8: git branch -d  删除当前分支 ,这里显示了其他分支。 因为它包含了还未合并的工作,尝试使用命令删除它时会失败:
git branch -d testing
`
error: The branch 'testing' is not fully merged.
If you are sure you want to delete it, run 'git branch -D testing'.
`
如果真的想要删除分支并丢掉那些未合并的代码,如同帮助信息里所指出的,可以使用 `-D` 选项强制删除它。

命令9:git branch -a :查看全部分支(包含本地和远程)
命令10:git checkout -b branchName commitId:根据指定版本号创建分支
命令11:git fetch -p:清理本地无效分支(远程已删除本地没删除的分支):
命令12:git branch | grep '分支名': 如果分支太多,还可以用此命令进行分支模糊查找

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

推荐阅读更多精彩内容