git的基本使用

git 的使用

代码协同管理工具

  1. 防止代码丢失,做代码备份
  2. 做代码的版本管理,创建多个版本或者节点,在多版本之间切换
  3. 可以将代码在多人之间简单的传输共享
  4. 可以方便多人协同开发,开辟各自分支和分支管理

什么是git
git是一个开源的分布式版本控制系统,可以用于高效的管理大小项目。

分布式 : 每个节点关系平等,都保存完整代码,节点之间相互推
送或者下载代码。工作方式多样

集中式 : 有明确的中央服务器统一管理代码,每个节点将代码上
传中央服务器或者从中央服务器下载。逻辑简单

git特点

  • git可以管理各种文件,特别是代码项目,多在*nix系统中使用
  • 是开源的系统,是唯一可以操作github的管理工具
  • git是分布式管理,不同于集中式,这也是和svn最大的差别
  • git 可以脱网操作,传输速度更快
  • git的安全性很强,有全球唯一的commit版本号
  • git的分支管理很强大,可以方便多人协同工作

git 基本配置

git安装: sudo apt-get install git
git config
配置级别

  1. 系统中所有的用户均使用的配置
    命令 : git config --system
    配置文件 : /etc/gitconfig

e.g. 配置git用户
sudo git config --system user.name Tedu

  1. 当前用户的所有项目均使用的配置
    命令: git config --global
    配置文件 : ~/.gitconfig

e.g. 配置用户邮箱
git config --global user.email tarena@tedu.cn

  1. 只在当前项目中使用的配置
    命令: git config (命令要在git项目文件夹中执行)
    配置文件: project/.git/config

e.g. 配置编译器
git config core.editor vscode

  1. 查看当前配置
    git config --list
git 基本概念

工作区 : 通过自己的主机操作的git目录
暂存区 : 用来记录你工作的行为,作为暂时保存
本地仓库 : 本地用来备份同步工作区内容的区域
远程仓库 : 其他主机的git仓库

git的基本操作命令

初始化仓库:git init
注意:初始化仓库后产生.git目录为git的管理目录,初始化仓库的
目录中的内容即可使用git管理

查看工作分支状态:git status
默认工作分支为master,可以通过创建新的分支切换

文件提交到暂存区:git add [file]

  • 可以一次提交多个内容,中间用空格隔开
  • 提交的内容可以使文件也可以是目录
  • 如果想将当前目录下所有内容都提交也可以使用 * 表示

删除暂存区的记录
git rm --cached [file] (如果是目录加 -r)
将暂存区记录的修改内容同步到本地仓库
git commit -m "some message"

  • -m 为添加的附加信息
  • 当工作区和本地仓库内容一致是git status提示工作区干净
    查看提交日志
    git log
    一行显示git log --pretty=oneline

工作区操作
查看工作区文件和本地仓库的差异
git diff [file]
放弃工作区文件修改(撤销)
git checkout -- [file]
恢复本地仓库文件到工作区
git checkout [file]

文件的移动和删除
删除工作区文件并提交到暂存记录
git rm [file]
移动工作区文件并提交到暂存记录
git mv file dir
rm mv 的用法和shell命令rm mv相同,操作后直接commit同步
到本地仓库

版本控制命令

回到之前版本
git reset --hard HEAD^
HEAD 后几个^表示回到之前的几个版本
通过commit_id回到指定的版本
git reset --hard commit_id(前七位)
查看操作日志
git reflog
获取到操作记录后可以根据commit_id去往较新的版本

标签管理

什么是标签 : 即在当前工作位置添加快照,保存项目的版本信息
,一般用于项目版本的迭代
创建标签
git tag v1.0
默认会在最新的commit_id处打标签
查看标签
git tag 查看所有标签
git show V2.0 查看某个标签的具体信息
在某个指定commig_id处打标签
git tag v0.9 [commit_id]
回到某个标签的版本
git reset --hard v0.9
删除标签
git tag -d v2.0

保存临时工作区

创建临时工作区

git stash
将工作区修改内容暂时封存,恢复到最近一个“干净”状态
查看保存的工作区
git stash list
应用某个工作区
git stash apply stash@{1}
新的工作区总是为stash@{0},老的工作区会向下排列
应用上一个工作区,并删除他
git stash pop
删除工作区
git stash drop stash@{0} 删除某一个
git stash clear 删除所有


分支管理

什么是分支?
分支即每个人在获取原有分支(master)代码的基础上,作为自己的工作环境,
单独开发,不会影响其他分支操作,开发完成后再统一合并到主线分支
好处: 安全,不影响其他人工作,自己控制进度
缺点: 会有冲突,降低耦合度可以有效地减少冲突

查看当前分支 git branch 前面带 * 的表示当前正在工作的分支

创建分支 git branch [branch_name]

注意: 创建分支之前尽量保证原分支是干净的
切换工作分支 git checkout [branch_name]

创建并切换到新分支下 git checkout -b <branch_name>

合并分支 git merge [branch_name]
默认是 fast-forward 快速提交,没有提交信息
我们可以禁用这种模式,使用以下命令

git merge --no-ff -m '提交信息' 分支名

删除分支 git branch -d [branch_name]

强制删除未合并的分支 git branch -D [branch_name]

解决合并冲突

冲突的发生: 两个分支修改了同一个文件并有了各自的提交
请看示例:

1.创建一个新分支 dev
> git checkout -b dev
2.修改 code.txt 内容,并提交
> git add code.txt
> git commit -m '新增了内容在code.txt中'
3.切换回 master 分支
> git checkout master
4.在master的 code.txt 添加一段内容并进行提交
> vi code.txt
5.现在,master分支和dev分支各自都分别有了新的提交
这样在合并的时候就会冲突
> git merge dev
6.解决冲突
- 打开冲突的文件,手动删除 <<< master 和 >>> dev 
- 然后保存, 再次提交

远程仓库

在远程主机上的仓库,git是分布式的,每一台主机上的git结构
基本相同,只是把其他主机上的git仓库叫做远程仓库

创建共享仓库:

1.创建目录 mkdir gitrepo
2.设置仓库文件夹的属主
chown 用户: 用户组 gitrepo
chown tarena: tarena gitrepo
3.创建共享仓库
git init --bare aid.git
4.设置git项目文件夹数组
chown -R tarena: tarena aid.git

添加远程仓库
git remote add origin[远程主机名]
tarena@127.0.0.1:/home/tarena/gitrepo/aid.git

向远程主机推送分支
git push -u origin master

从远程主机获取项目
git clone 链接地址

将代码同步到远程主机
git push

将远程仓库内容拉取到本地
git pull
git fetch (获取远程分支到本地,但是暂时不合并)与pull有差别,fetch没有合并那一步

删除已有的远程主机
git remote rm origin

github(远程仓库)
开源的项目社区网站,提供丰富的开源项目,也为用户提供项目管理服务

git是github唯一指定的代码管理工具
网址: https://www.github.com

创建新的仓库: 右上角+ new repository --> 填写信息

操作github:
1.git remote 连接远程仓库
2.通过github上传代码
3.github就是一个远程仓库

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

推荐阅读更多精彩内容

  • 1.git的安装 1.1 在Windows上安装Git msysgit是Windows版的Git,从https:/...
    落魂灬阅读 12,648评论 4 54
  • Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来。这样一来,任何一处协同...
    __silhouette阅读 15,855评论 5 147
  • 一、前言: 关于git的学习最早是来源于廖雪峰帅哥的官网,通俗易懂,场景众多。不过最近在掘金上看了一个帅哥的文章,...
    前端小学生_f675阅读 266评论 0 0
  • 老张今天问我,一个等了五年的人还值不值得等? 我说你能问出这样的话,说明你还放不下。 老张又问,早上难过,中午难过...
    希嗅阅读 1,023评论 3 6
  • 晗晗豆得儿阅读 133评论 1 1