git 常用指令

GIT

GIT简介

  1. 什么是git: git是一个开源到分布式版本控制系统, 用于高效的管理各种大小项目和文件

  2. 代码管理工具的用途

  • 防止代码丢失, 做备份
  • 项目的版本管理和控制, 可以通过设置节点进行跳转
  • 建立各自的开发环境分支, 互不影响, 方便合并
  • 在多终端开发时, 方便代码的相互传输
  1. git的特点
  • git是开源的, 多在linux下使用, 可以管理各种文件
  • git是分布式的项目管理工具(svn是集中式的)
  • git的数据管理更多样化, 分享速度快, 数据安全
  • git拥有更好的分支支持, 方便多人协调

GIT使用

基本概念

  • 工作区: 项目所在操作目录, 实际操作项目的区域
  • 暂存区: 用于记录工作区的工作内容
  • 仓库区: 用于备份工作区的的内容
  • 远程仓库: 远程主机上的git仓库

注意: 在本地仓库中, git总是希望工作区的内容和仓库区保持一致, 而且只有仓库区的内容才能和其他远程仓库交互

初始设置

配置命令: git config 

配置所有用户: git config --system [选项]
- 配置文件位置: /etc/gitconfig

配置当前用户: git config --global [选项]
- 配置文件位置: ~/.gitconfig

配置当前项目: git config [选项]
- 配置文件位置: project/.git/config
# 配置用户名
sudo git config --system user.name xxxx

# 配置用户邮箱
git config --global user.email xxxx@xxxx.com

基本命令

  1. 初始化仓库

git init
意义: 将某个项目目录变为git操作目录, 生成git本地仓库, 该项目可以使用git管理

  1. 查看仓库本地状态

git status
说明: 初始化仓库后默认工作在master分支, 当工作区与仓库区不一致的时候会有提示

  1. 将工作区记录到暂存区

git add [files]
说明: 将修改过的文件(与仓库区不同)进行记录, 放入暂存区

  1. 撤销暂存记录

git rm --cached [files]
说明: 将暂存区的文件删除以取消暂存

扩展延申

在git项目中可以通过项目的某个文件夹下定义.gitignore文件的方式, 规定相应的忽略规则, 用来管理当前文件夹下的文件的git提交行为, .gitignore文件是可以提交到共有仓库中, 这就为该项目下的所有开发者都共享一套定义好的忽略规则, 在.gitignore中, 遵循响应的法则, 在每一行指定一个忽略规则

.gitignore忽略规则

  • file: 表示需要忽略的文件
  • *.a: 表示所有以.a结尾的文件
  • !lib.a: 表示但lib.a除外
  • build/: 表示忽略build/目录下的所有文件, 过滤整个文件夹
  1. 将文件同步到本地仓库

git commit [file] -m [message]
说明: message表示添加一些同步信息, 表达同步内容

  1. 查看commit日志记录

git log
git log --pretty=oneline

  1. 比较工作区文件和仓库文件差异

git diff [file]

  1. 将暂存区文件或者某个commit节点文件恢复到工作区

git checkout [commit] --[file]
说明: 为了防止误操作, checkout还有切换分支的作用

  1. 移动或删除文件

git mv [file] [path]
git rm [files]
注意: 这两个操作会修改工作区内容, 同时将操作记录提交到暂存区

版本控制

  1. 退回上一个commit节点

git reset --hard HEAD^
说明: 一个^表示退回一个版本, 以此类推, 当版本回退之后工作区会自动和当前commit保持一致

  1. 退回到指定的commit节点

git reset --hard [commit_id]

  1. 查看所有操作记录

git reflog
注意: 最上面的为最新记录, 可以利用commit_id去往任何操作位置

  1. 创建标签

标签: 在项目中的重要commit位置添加快照, 保存当时的工作状态, 一般用于版本的迭代

git tag [tag_name] [commit_id] -m [message]
说明: commit_id可以不写则默认标签表示最新的commit_id位置, message也可以不写, 但是最好添加

  1. 查看标签

git tag 查看标签列表
git show [tag_name] 查看标签详细信息

  1. 去往某个标签节点

git reset --hard [tag_name]

  1. 删除标签

git tag -d [tag_name]

保存工作区

  1. 保存工作区内容

git stash save [message]
说明: 将工作区未提交的的修改封存, 让工作区回到修改前的状态

  1. 查看工作区列表

git stash list
说明: 最新保存的工作区在最上面

  1. 应用某个工作区

git stash apply [stash@{n}]
说明: 应用某个暂存方案, 最新保存的工作区在最上面

  1. 删除工作区

git stash drop [stash@{n}] 删除某一个工作区
git stash clear 删除所有保存的工作区

分支管理

定义: 分支即每个人在原有代码(分支)的基础上建立自己的工作环境, 单独开发, 互不干扰, 完成工作开发后在进行统一分支合并

  1. 查看分支情况

git branch
说明: 前面带*的分支表示当前的工作分支

  1. 创建分支

git branch [branch_name]
说明: 创建新分支

  1. 合并分支

git merge [branch_name]
将其他分支的内容合并到当前分支, 冲突问题是合并分支过程中最为棘手的问题

当分支合并时, 原分支和发生了变化的分支就会产生冲突, 当合并分支时添加新的模块, 这种冲突可以自动解决, 只需自己决定commit操作即可
当分支合并时两个分支修改了同一个文件, 则需要手动解决冲突

  1. 删除分支

git branch -d [branch] 删除分支
git branch -D [branch] 删除没有被合并的分支

远程仓库

远程仓库上的git仓库, 实际上git是分布式结构, 每台主机的git仓库结构类似, 只是把别人主机上的git仓库称为远程仓库

GitHub简介

github是一个开源的项目社区网站, 拥有全球最多的开源项目, 开发者可以注册网站在github上建立自己的仓库

获取项目

  • 在本地使用git clone方法获取远程仓库
git clone https://github.com/xxxx
注意: 获取到本地的项目会自动和github远程仓库建立连接, 且获取的项目本身也是git项目

创建删除git仓库

远程仓库操作命令

  1. 连接远程仓库

git remote add origin https://github.com/xxxx
说明: 连接远程仓库, 并命名为origin

  1. 删除远程仓库

git remote rm origin
说明: 删除名为origin的远程仓库

  1. 向远程仓库推送

git push -u origin master
说明: 将本地master分支推送至远程origin仓库, -u表示第一次使用origin和本地建立连接

  1. 上传标签

git push origin [tag] 推送本地标签到远程
git push origin --tag 推送本地所有标签到远程

  1. 推送旧的版本

git push --force origin 用于本地版本比远程版本旧时强行推送本地版本

  1. 删除远程分支和标签

git branch -a 查看所有分支
git push origin [:branch] 删除远程分支
git push origin --delete tag [tag_name] 删除远程仓库标签

  1. 获取远程代码

git pull 获取远程分支代码
git fetch origin master:tmp 将远程分支master拉取到本地, 作为tmp分支
区别: pull将远程内容直接拉取至本地, 并和对应分支内容进行合并, fetch将远程分支内容拉取到本地, 但是不会和本地对应分支合并, 自己判断后在使用merge合并

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