[Git]基本命令

一、git 是什么,用来做什么

git是分布式版本控制系统,用来进行版本管理

二、git 有什么特点

git VS svn

  • git是分布式,svn是集中式。分布式版本系统的最大好处之一是在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作,当有网络的时候,再把本地提交推送一下就完成了同步,而svn在没有联网的时候是拒绝干活的!
  • git有暂存区的概念,svn没有
  • git 跟踪并管理的是修改,而非文件

三、git 如何使用

1. 创建版本库

git init

git init 会在当前文件夹下生成一个.git文件夹,也叫做git版本库,用来跟踪管理版本

2. 将本地文件添加到 git 版本库

工作区(Working Directory)

电脑上能看到的目录

版本库(Repository)

工作区中有一个隐藏目录.git,这个不算工作区,而是Git的版本库
Git版本库里存了很多东西,其中最重要的就是暂存区(Stage),还有git自动创建的master分支,以及指向master的指针HEAD

git.png
git status
git add .
git commit -m "commit message"

git add 将文件修改添加到暂存区
git commit 提交更改,将暂存区的所有内容添加到当前分支

3. 添加远程库

git remote add origin git@server-name:path/repo-name.git

必须给远程库一个名字,origin 远程库的名字,也可以设置为其他

将本地库的内容推送到远程

git push -u origin master
git push --set-upstream origin master

-u 将本地 master 分支和远程的 master 分支关联起来

4. 删除远程库

git remote rm origin

此处的 '删除' 其实是解除了本地和远程的绑定关系,并不是物理上删除了远程库

5. 从远程库克隆

git clone git@server-name:path/repo-name.git

git支持多种协议,包括 https/ssh,我们一般都是使用 ssh,因为 https 除了速度慢以外,每次推送都必须输入口令

6. 撤销修改

1)撤销工作区中文件的修改(还未添加到暂存区)

git checkout --file

2) 撤销暂存区中文件的修改(还未提交到远程库)

git reset HEAD file

3)撤销远程库中文件的修改(版本回退)

git log
git reset --hard commit_id
//或者
git revert HEAD //撤销前一次commit
//或者
git reset --hard HEAD^ //回退到上一个版本

HEAD 指向的版本就是当前版本
git log 查看提交历史,以确定回退到哪个版本
git reflog 查看命令历史,以确定回到未来的哪个版本

4)git reset VS git revert

  • git reset 是删除指定的 commit;git revert 是用一个新的 commit 来回滚之前的 commit
  • git reset 是将 HEAD 指针向后移动了一下;git revert 是 HEAD 指针继续向前

5) 修改最近一次的 commit 提交信息

git commit --amend

输入 i 进入 vim 插入模式,修改完 commit 后, Esc 退出插入模式,:wq 保存退出

7. 分支管理

1) 查看当前分支

git branch

2) 创建分支

git branch <name>

3) 创建+切换分支

git checkout -b <name>
git switch -c <name>

4) 切换分支

git checkout <name>
git switch <name>

5) 合并分支

git merge <branchName>  //合并指定分支到当前分支,并自动创建新的commit提交
git merge --no-commit <branchName>  //合并指定分支到当前分支,但不要进行新的提交

6) 查看分支合并图

git log --graph

7) 删除分支

git branch -d branchA  //删除本地分支
git push origin --delete branchA  //删除远程分支

8. 基本操作

git stash  //将当前工作区存储起来
git stash list  //查看stash list
git stash pop  //恢复工作区
git cherry-pick <commit>  //将提交的commit复制到当前分支,避免重复劳动
git cherry-pick <branch>  //将另一个分支复制到当前分支,避免重复劳动

9. 更新本地代码

1)git fetch

获取远程最新代码到本地,不会进行自动合并

2)git pull

git pull 其实是 git fetchgit merge 的简写,获取远程最新代码到本地,并且和本地分支进行合并操作。

10. 标签管理

标签与 commit 的关系,就像 IP 和域名的关系

1)创建标签

git tag <name>

2)以某个 commit 提交创建标签

git tag <name> commit_id

3)查看创建的所有标签

git tag

4)查看标签信息

git show <tagname>

5)将创建的标签推送到远程

git push origin <tagname>  //推送某个指定的 tag 到远程
git push origin --tags  //推送所有的 tag 到远程

6)删除一个本地标签

git tag -d <tagname>

7)删除一个远程标签

git push origin refes:/tags/<tagname>

四、场景使用

1. 将另一个仓库的某个分支代码复制到当前仓库

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

推荐阅读更多精彩内容

  • Git常用命令 请确保已经安装里git客户端 一般配置 git --version//查看git的版本信息git ...
    闲云清烟阅读 268评论 0 0
  • Unix 常见指令 (下面的file是指 文件名+后缀 的) s –l 列出当前目录下的所有内容(文件...
    阿敏其人阅读 2,296评论 1 2
  • git config git config命令的作用是配置git的相关信息。 配置全局的用户名和邮箱,mac下可通...
    磐璃阅读 353评论 0 0
  • 创建git仓库: git init 本地文件夹 git clone 远程目录到本地 创建分支 git checko...
    许暹罗阅读 360评论 0 0
  • <file> 为文件<message> 为消息<name 为名称<tagname> 为标签名<commit id>...
    JieYueCoder阅读 144评论 0 0