Git命令行操作

Git是目前世界上最先进的分布式版本控制系统,很方便公司同事间合作开发,使用Git可以使用可视化的软件,如SourceTree,现在还用中文版本,使用很方便;但是有的公司要求使用命令行,下面我就把一些常用的Git命令整理总结下,方便大家参考。

创建本地仓库
1、创建一个空目录

cd <路径>
mkdir <仓库名字>
git init

2、添加文件到仓库

git add <文件>   eg:git add HelpTool.h
git commit -m "注释说明文件"

注:可以一次添加多个文件,统一提交 eg:

git add HelpTool.h HelpTool.m
git add HomeViewController.h
git add HomeViewController.m
git commit -m "添加两个文件"

3、查看仓库情况

git status 查看仓库当前的状态,可以了解仓库中文件状态(哪些被修改,增加,删除等)
git diff <文件> 可以查看具体文件被修改了什么地方
git log 显示从最近到最远的提交日志
git log --pretty=oneline 去除多余的信息,只显示版本号(commit id)和注释说明文字

4、版本回退
如果要回退版本,Git必须知道当前版本是哪个版本,在Git中用HEAD表示当前版本,上一版本是HEAD,上上版本就是HEAD^,往上50个版本就是HEAD~50。

git reset --hard HEAD^  回退到上个版本

如果回退到上个版本后又想回退回来,分两种情况:
1)终端命令行窗口还没关闭,在上面找到你想回退回来的那个版本的commit id

git reset --hard <commit id>

2)终端已关闭退出

git reflog 记录了每一次提交命令,找到对应的commit id
git reset --hard <commit id>进行回退

5、撤销修改(包括添加、修改、删除等)
1)未添加到暂存区

git checkout <文件名> 把工作区的修改全部撤销

2)已添加到暂存区

git reset HEAD <文件名> 把暂存区的修改撤销掉,重新放回工作区
git checkout <文件名> 把工作区的修改全部撤销

6、删除文件

git rm <文件名> 从工作区删除
git commit -m "delete one file" 从仓库删除

7、克隆远程仓库。关于远程仓库的操作,可以看我的另一篇文章//www.greatytc.com/p/27264e1bd447

git clone <远程仓库地址> 可以是https,也可以是ssh

8、创建合并分支
8.1.创建分支

git branch 列出所有分支,当前分支前面会有个*
git checkout -b <分支名> 创建并切换到新建的分支,相当于两条命令:
git branch <分支名> 创建分支
git checkout <分支名> 切换分支

8.2合并分支

git merge <分支名>   合并某分支到当前分支,这是快速合并,没有合并分支信息
git merge --no-ff -m "注释说明文字" <分支名>  合并时生成一个新的commit,这样,从分支历史上可以看出分支信息

9、删除分支

git branch -d <分支名>
git branch -D <分支名>  丢弃一个没有被合并过的分支,需要强行删除

10、暂存分支

git stash  把当前工作区的内容暂存起来,等以后恢复继续操作

11、恢复暂存分支

git stash apply  恢复后,暂存的内容并不会删除,需要用git stash drop 删除
git stash pop     恢复的同时把暂存的内容也删除了

12、查看远程库信息

git remote
git remote -v显示更详细的信息

13、本地创建的分支推送到远程仓库(分两步)
13.1 先抓取远程的新提交

git pull  可能有冲突,有则解决

13.2 推送本地分支

git push origin <分支名字>

14、在本地创建和远程分支对应的分支,分两步
14.1 本地和远程分支的名称最好一致

git checkout -b <分支名字1> origin/<分支名字1>

14.2 建立本地分支和远程分支的关联

git branch --set-upstream <分支名字1> origin/<分支名字1>

15、标签
15.1 打标签,标签默认是打在最新提交的commit上的,分两步
1)切换到需要打标签的分支上

git branch <分支名字>

2)打标签

git tag <标签名字>  eg:git tag v1.1

15.1.1 给特定的commit id 打标签

git tag <标签名字> <commit id>  eg: git tag v2.1 5366446

15.1.2 带有说明的标签

git tag -a <标签名> -m "说明文字" <commit id>  eg:git tag -a v2.1 -m "version 2.1 realeased" 347689321

15.2、 推送标签到远程仓库(创建的标签默认都是在本地)

git push origin <标签名>
git push origin --tags 一次推送所有本地标签到远程仓库

15.3、查看所有标签

git tag 

15.4 查看标签具体信息

git show <标签名>

15.5 删除标签
15.5.1 删除本地标签

git tag -d <标签名>

15.5.2 删除远程仓库标签,分两步
1)先删除本地

git tag -d <标签名>

2)再删除远程

git push origin : refs/tags/<标签名>

16、配置忽略文件
1)在Git工作区的根目录下创建.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件
2)把.gitignore提交到Git,就OK了!
GitHub上有各种配置文件,只需组合一下就可以使用,可以直接在线浏览https://github.com/github/gitignore

17、给命令配置别名
有些命令不太好记或者经常混淆,配置别名不但可以解决前面说的问题,还可以提高效率。
配置Git的时候,加上--global是针对当前用户起作用的,如果不加,只针对当前的仓库起作用。
a.当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中;
b.每个仓库的Git配置文件都放在.git/config文件中。
配置别名可以直接在上面的配置文件里进行配置

git config --global alisa.<别名> <原名> 

eg:

git config --global alias.co checkout->git co fixBug=git checkout fixBug
git config --global alias.ci committ->git ci -m "upload a file"=git commit -m "upload a file"
git config --global alias.br branch->git br fixBug=git branch fixBug

如果对两个单词的命令设置别名

git config --global alisa.<别名> <'原名'> 

eg:

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

推荐阅读更多精彩内容