源代码管理之Git命令的使用
目录
- 02.源代码管理之Git命令的使用
- 2.Git命令行演练-个人开发
- 2.1 如何学习git指令
- 2.2 初始化创建本地仓库
- 2.3 个人开发基本演练
- 2.4 Git的基本常识
- 3.Git命令行演练-团队开发
- 3.1 共享库分类
- 3.2 搭建本地共享库
- 3.3 演示团队多人开发
- 3.4 Git补充
- 4.Git常用命令
- 4.1 查看、添加、提交、删除、找回,重置修改文件
- 4.2 查看文件diff
- 4.3 查看提交记录
- 4.4 查看、切换、创建和删除分支
- 4.5 Git暂存管理
- 4.6 Git远程分支管理
- 4.7 Git远程仓库管理
- 5.Git资源推荐
2.Git命令行演练-个人开发
2.1 如何学习git指令
- git help [子命令] 帮助指令
和学习SVN指令是一样的,只不过git是通过使用指南的形式展示给用户看(不能编辑的vim编辑器),使用q退出vim编辑器,按空格进入下一页,ctrl + B 回到上一页; /关键字 进行搜索
2.2 初始化创建本地仓库
1.创建LocalServer文件夹.用于存放本地仓库和工作空间.
在终端中使用cd指令进入LocalServer文件夹
命令:
cd /Users/liwx/Desktop/Tmp/Git/LocalServer
2.初始化本地仓库
描述: 使用以下命令会生成一个
.git文件夹(本地代码仓库)作用:
.git文件夹是用来管理本地代码,修改上传,版本回退.命令:
git init
3.配置仓库信息
3.1 配置Git仓库用户.假设创建liwx用户.
作用: 追踪修改更新记录.
命令:
git config user.name "liwx"
3.2 配置用户邮箱
作用: 多人合作开发时, 沟通交流
命令:
git config user.email "1032282633@qq.com"
3.3 查看配置信息(.git -> config打开)
作用: 查看信息是否配置成功
命令:
git config -l
3.4 也可以在.git文件的config文件中查看配置结果
- 创建本地仓库如图所示
2.3 个人开发基本演练
1.创建文件并提交到本地仓库
1.1 创建main.m
命令:
touch main.m1.2 添加到
stage暂存区命令:
git add ."1.3 提交到HEAD指向的分支(
HEAD默认执行master主分支)命令:
git commit -m "创建main.m文件"操作如图
2.修改文件并提交到本地仓库
- 2.1 修改main.m文件的内容
2.2 添加到
stage暂存区命令:
git add .2.3 将修改的文件提交到本地仓库
命令:
git commit -m "修改了main.m文件"操作如图
3.删除文件并提交到本地仓库
3.1 删除文件并提交
命令:
git rm main.m3.2 将删除文件提交到本地仓库
命令:
git commit -m "删除了main.m文件"操作如图
4.日志查看
4.1 查看日志(查看Git的更新日志和
40位哈希值版本号)命令:
git log4.2 查看日志(查看到Git的更新日志和
7位哈希值版本号)命令:
git reflog操作如图
5.版本回退
代码版本回退
重置到当前版本:
git reset —-hard HEAD
重置到上上个版本:git reset —-hard HEAD^^
重置到往上3个版本:git reset ——hard HEAD~3
重置到指定版本:git reset —-hard 七位版本号
6.查看文件状态
1.1 查询文件状态
- 红色: 代表被添加或者修改的文件没有被添加到暂缓区
绿色: 代表文件在暂缓区,等待提交
命令:
git status
2.4 Git的基本常识
1.文件状态(git status)
颜色含义
红色: 代表被添加或者修改的文件没有被添加到暂缓区
绿色: 代表文件在暂缓区,等待提交版本号的含义
版本号是一个由SHA1生成的40位哈希值
这样做的目的是保证版本号的唯一
2.日志查看配置
命令:
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)\<%an\>%Creset' --abbrev-commit"
3.配置别名
3.1 设置status命令的别名为st
命令:
git config alias.st "status"3.2 设置commit命令的别名为ci
命令:
git config alias.ci "commit -m"
4.--global的作用
4.1 可以进行全局配置,所有的版本库共享此配置
查看全局配置(
桌面前往->个人->.gitconfig)
个人电脑上建议使用全局配置
3.Git命令行演练-团队开发
团队开发必须有一个共享库,这样成员之间才可以进行协作开发
Git下载和提交命令介绍
1.下载代码
命令:
git clone 本地代码仓库地址2.提交(推送)代码到共享库
命令:
git push3.更新共享库代码到本地
命令:
git pull
3.1 共享库分类
1.
本地共享库(只能在本地进行操作)电脑文件夹/U盘/移动硬盘
2.
远程共享库(可通过网络远程操作)- 2.1 自己搭建Git服务器(不建议)
2.2 在Github上托管项目(建议)
Github网址(https://github.com); 公开项目免费, 私有项目收费
2.3 在OSChina上托管项目(推荐)
OSChina网址(https://git.oschina.net) 安全免费,在国内访问速度快
3.2 搭建本地共享库
1.创建TeamServer文件夹,并进入到TeamServer文件夹内,初始化创建本地共享库
作用: 团队多人开发
命令:
git init --bare结果: 执行完以上命令,生成以下文件和文件夹
3.3 演示团队多人开发
以下列举三个角色来进行演示多人开发.分别为项目经理
Manager,程序猿一CoderOne,程序猿二CoderTwo.
- 1.创建文件夹
Manager,CoderOne,CoderTwo.
2.项目经理搭建项目结构
2.1 项目经理从共享库
clone项目到本地命令:
git clone /Users/liwx/Desktop/Tmp/Git/TeamServer2.2 项目经理搭建好项目结构,使用
push,提交到共享库.1.进入项目经理的Manager/TeamServer文件夹下创建iOS,Android,Server文件夹
命令: mkdir iOS Android Server
2.项目经理进入iOS文件夹内创建main.m,并提交到共享库
1:
touch main.m
2:git add .
3:git commit -m "创建main.m文件"
4:git push3.以上操作如图所示
3.CoderOne和CoderTwo分别clone下载TeamServer仓库到各自的文件夹
命令:
git clone /Users/liwx/Desktop/Tmp/Git/TeamServer4.演练CoderOne新增文件CoderTwo更新
4.1 CoderOne新增文件,并提交共享库
1: touch Person.h
2: git add .
3: git commit -m "创建Person.h文件"
4: git push4.2 CoderTwo更新仓库
1: git pull
5.CoderOne删除文件,CoderTwo同步更新
5.1 CoderOne新增文件,并提交共享库
1: git rm Person.h
2: git commit -m "删除Person.h文件"
3: git push5.2 CoderTwo更新仓库
1: git pull
6.超时和冲突演练,CoderOne和CoderTwo同时修改main.m第一行内容
6.1 CoderOne先修改完提交到共享库
1: git add .
2: git commit -m "CoderOne修改了main.m第一行内容"
3: git push6.2 CoderTwo后修改完提交到共享库,执行到第3步此时会提示文件过期(超时)
fetch first1: git add .
2: git commit -m "CoderTwo修改了main.m第一行内容"
3: git push6.3 CoderTwo执行git pull更新时,产生冲突
1: git pull
main.m冲突内容
<<<<<<< HEAD
// CoderTwo修改了main.m第一行内容
=======
// CoderOne修改main.m文件
>>>>>>> 081af32dbb358ba0470ae0ff996987b050037027修改main.m冲突后
// CoderTwo修改了main.m第一行内容
// CoderOne修改main.m文件
6.4 CoderTwo解决冲突后提交到共享库
1: git add .
2: git commit -m "解决main.m冲突"
3: git push
7.CoderTwo演练添加忽略文件.gitignore
7.1 从GitHub下载Objective-c的忽略文件.gitignore放到自己本地仓库的iOS文件夹中.链接: https://github.com/github/gitignore/blob/master/Objective-C.gitignore.将Objective-C.gitignore内容复制到创建的.gitignore文件中并保存.提交.gitignore文件到共享库
1: touch .gitignore
2: git add .
3: git commit -m "添加.gitignore忽略文件"
4: git push
3.4 Git补充
- 关于忽略文件
在真实开发中,配置.gitignore文件 , 去github里面搜索gitignore
选择Objective-C.gitignore版本的,拷贝到本地仓库即可,记得添加到本地版本库
- 常见问题
fetch first 代表当前文件过期,需要从远程共享库更新
命令: git pull
4.Git常用命令
4.1 查看、添加、提交、删除、找回,重置修改文件
- 查看、添加、提交、删除、找回,重置修改文件
- 查看
git show# 显示某次提交的内容 git show $id
- 添加
git add <file># 将工作文件修改提交到本地暂存区git add .# 将所有修改过的工作文件提交暂存区
- 删除
git rm <file># 从版本库中删除文件git rm <file>--cached # 从版本库中删除文件,但不删除文件
- 重置
git reset <file># 从暂存区恢复到工作文件git reset -- .# 从暂存区恢复到工作文件git reset --hard# 恢复最近一次提交过的状态,即放弃上次提交后的所有本次修改
- 恢复
git revert <$id># 恢复某次提交的状态,恢复动作本身也创建次提交对象git revert HEAD# 恢复最后一次提交的状态
4.2 查看文件diff
git diff <file># 比较当前文件和暂存区文件差异 git diffgit diff <branch1>..<branch2># 在两个分支之间比较git diff --staged# 比较暂存区和版本库差异git diff --cached# 比较暂存区和版本库差异git diff --stat# 仅仅比较统计信息
4.3 查看提交记录
git log git log <file># 查看该文件每次提交记录git log -p <file># 查看每次详细修改内容的diffgit log -p -2# 查看最近两次详细修改内容的diffgit log --stat#查看提交统计信息
tig
Mac上可以使用tig代替diff和log,brew install tig
4.4 查看、切换、创建和删除分支
- 查看分支
git branch -r# 查看远程分支git branch <new_branch># 创建新的分支git branch -v# 查看各个分支最后提交信息git branch --merged# 查看已经被合并到当前分支的分支git branch --no-merged# 查看尚未被合并到当前分支的分支
- 切换分支
git checkout <branch># 切换到某个分支
- 创建分支
git checkout -b <new_branch># 创建新的分支,并且切换过去git checkout -b <new_branch> <branch># 基于branch创建新的new_branchgit checkout $id# 把某次历史提交记录checkout出来,但无分支信息,切换到其他分支会自动删除git checkout $id -b <new_branch># 把某次历史提交记录checkout出来,创建成一个分支
- 删除分支
git branch -d <branch># 删除某个分支git branch -D <branch># 强制删除某个分支 (未被合并的分支被删除的时候需要强制)
- 分支合并和rebase
git merge <branch># 将branch分支合并到当前分支git merge origin/master --no-ff# 不要Fast-Foward合并,这样可以生成merge提交git rebase master <branch># 将master rebase到branch,相当于:git co <branch> && git rebase master && git co master && git merge <branch>
4.5 Git暂存管理
git stash# 暂存git stash list# 列所有stashgit stash apply# 恢复暂存的内容git stash drop# 删除暂存区
4.6 Git远程分支管理
- 远程分支抓取
git pull# 抓取远程仓库所有分支更新并合并到本地git pull --no-ff# 抓取远程仓库所有分支更新并合并到本地,不要快进合并git fetch origin# 抓取远程仓库更新git merge origin/master# 将远程主分支合并到本地当前分支git checkout --track origin/branch# 跟踪某个远程分支创建相应的本地分支git checkout -b <local_branch> origin/<remote_branch># 基于远程分支创建本地分支,功能同上
- push远程分支
git push# push所有分支git push origin master# 将本地主分支推到远程主分支git push -u origin master# 将本地主分支推到远程(如无远程主分支则创建,用于初始化远程仓库)git push origin <local_branch># 创建远程分支, origin是远程仓库名git push origin <local_branch>:<remote_branch># 创建远程分支git push origin :<remote_branch>#先删除本地分支(git br -d <branch>),然后再push删除远程分支
4.7 Git远程仓库管理
- Git远程仓库管理
git remote -v# 查看远程服务器地址和仓库名称git remote show origin# 查看远程服务器仓库状态git remote add origin git@ github:robbin/robbin_site.git# 添加远程仓库地址git remote set-url origin git@ github.com:robbin/robbin_site.git# 设置远程仓库地址(用于修改远程仓库地址)git remote rm <repository># 删除远程仓库
5.Git资源推荐
- Git版本控制软件结合GitHub从入门到精通常用命令学习手册
- Git官方中文手册
文/Liwx(简书作者)
源代码管理之Git命令的使用的更多相关文章
- [Tool] 源代码管理之Git
本节目录 什么是Git 什么是GitHub 安装Git GitHub之Repository GitHub之托管页面 常用Git 命令 什么是Git 由于现在的开发多人协同办公,因此出现源代码管理工具 ...
- 源代码管理工具-GIT
源代码管理工具-GIT ---- 一. 掌握 - git 概述 1. git 简介? 什么是git? git是一款开源的分布式版本控制工具在世界上所有的分布式版本控制工具中,git是最快.最简单.最流 ...
- iOS核心笔记—源代码管理工具-GIT
源代码管理工具-GIT 一. git 概述 1. git 简介? 什么是git? > git是一款开源的分布式版本控制工具 > 在世界上所有的分布式版本控制工具中,git是最快.最简单.最 ...
- 基于git的源代码管理模型——git flow
基于git的源代码管理模型--git flow A successful Git branching model
- 源代码管理工具GIT
01.GIT简介 svn是集中式的源代码管理工具,必须联网才能操作 git是分布式的. 有两中:一个是本地代码仓库,一个是远程代码仓库 分布式源代码管理工具 02.GIT - 本地代码仓库使用流程 1 ...
- 83、源代码管理工具(Git)
一.简介 git是一款开源的分布式版本控制工具 在世界上所有的分布式版本控制工具中,git是最快.最简单.最流行的 git起源 作者是Linux之父:Linus Benedict Torvalds 当 ...
- 温故知新,微软官方推荐的Visual Studio源代码管理之Git Ignore清单,开启新项目必备宝书
什么是Git Ignore清单 https://git-scm.com/docs/gitignore 简单来说,在Git进行源代码管理中,我们可以通过建立.gitignore来实现一个忽略的黑名单管理 ...
- SourceTree代码管理学习git命令操作
Git管理工具SourceTree提交代码时报文件名过长,用命令解决这个错误: 使用git status查看状态信息 git status 使用git add将修改后的文件(.代表全部文件)添加到暂存 ...
- 源代码管理工具 ——Git的介绍与简要教程
一.Github与Git (一)简介 GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名GitHub. GitHub于2008年4月10日正式上线 ...
随机推荐
- 【BZOJ2762】[JLOI2011]不等式组(树状数组)
题目: BZOJ2762 分析: 加入的不等式分三种情况 当\(a>0\),可以变成\(x>\lfloor \frac{c-b}{a}\rfloor\) 当\(a=0\),若\(b> ...
- ACM_小凯的排序(字符串)
小凯的排序 Time Limit: 2000/1000ms (Java/Others) Problem Description: 调皮的小凯喜欢排序,拿到什么东西都要排一下序.现在他觉得单一的递增递减 ...
- IIS 配置 SVC
IIS8中添加WCF支持几种方法小结[图文] 方法一 最近在做Silverlight,Windows Phone应用移植到Windows 8平台,在IIS8中测试一些传统WCF服务应用,发现IIS8不 ...
- NPOI复制模板导出Excel
本人菜鸟实习生一枚,公司给我安排了一个excel导出功能.要求如下:1.导出excel文件有样式要求:2.导出excel包含一个或多个工作表:3.功能做活(我的理解就是excel样式以后可能会变方便维 ...
- java 多线程并发系列之 生产者消费者模式的两种实现
在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题.该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度. 为什么要使用生产者和消费者模式 在线程世界里,生产者就是生产数据 ...
- Android fragment-findFragmentByTag 始终返回 null
我曾四处看看,在我的案子中找到几个与类似的主题,但没有帮助的问题.我想访问现有活动片段使用getSupportFragmentManager().findFragmentByTag(TAG),但它始终 ...
- CSS——精灵图与背景图片定位
精灵图产生背景: 1.网页上的每张图像都需要向服务器发送一次请求才能展现给用户.2.网页上的图像过多时,服务器就会频繁地接受和发送请求,大大降低页面的加载速度.为了有效地减少服务器接受和发送请求的次数 ...
- [Windows Server 2012] 手工破解MySQL密码
★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:破解MySQL ...
- Java_Web三大框架之Hibernate配置文件(二)
下面介绍一下编写Hibernate的配置文件,使用Hibernate操作数据库. 开始部署:下载需要的jar包 下载Hibernate Hibernat ...
- day04-交互、格式化输出及基本运算符
目录 与用户交互 python2和python3交互的区别 格式化输出 1 字符串拼接 2 占位符 3 format格式 4 f-string格式 基本运算符 算术运算符 比较运算符 赋值运算符 逻辑 ...