目录
- 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.m
-
1.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.m
-
3.2 将删除文件提交到本地仓库
命令:
git commit -m "删除了main.m文件"
操作如图
-
-
4.日志查看
-
4.1 查看日志(查看Git的更新日志和
40位哈希值版本号
)命令:
git log
-
4.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 push
-
3.更新共享库代码到本地
命令:
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/TeamServer
-
2.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 push
3.以上操作如图所示
-
-
-
3.CoderOne和CoderTwo分别clone下载TeamServer仓库到各自的文件夹
命令:
git clone /Users/liwx/Desktop/Tmp/Git/TeamServer
-
4.演练CoderOne新增文件CoderTwo更新
-
4.1 CoderOne新增文件,并提交共享库
1: touch Person.h
2: git add .
3: git commit -m "创建Person.h文件"
4: git push -
4.2 CoderTwo更新仓库
1: git pull
-
-
5.CoderOne删除文件,CoderTwo同步更新
-
5.1 CoderOne新增文件,并提交共享库
1: git rm Person.h
2: git commit -m "删除Person.h文件"
3: git push -
5.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 push -
6.2 CoderTwo后修改完提交到共享库,执行到第3步此时会提示文件过期(超时)
fetch first
1: git add .
2: git commit -m "CoderTwo修改了main.m第一行内容"
3: git push -
6.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日正式上线 ...
随机推荐
-
[HDU 3535] AreYouBusy (动态规划 混合背包 值得做很多遍)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3535 题意:有n个任务集合,需要在T个时间单位内完成.每个任务集合有属性,属性为0的代表至少要完成1个 ...
-
winform学习日志(十九)----------真正三层架构之登录
摘要:一:三层构架的基础知识在项目开发的过程中,有时把整个项目分为三层架构,其中包括:表示层(UI).业务逻辑层(BLL)和数据访问层(DAL).三层的作用分别如下: 表示层:为用户提供交互操作界面, ...
-
Java程序猿JavaScript学习笔记(2——复制和继承财产)
计划和完成在这个例子中,音符的以下序列: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaSc ...
-
&;reg 不需要显示为商标符的做法
若url中有参数reg,则把® 变为 ®
-
SVG的path的使用
SVG的path的使用: 参考:http://justcoding.iteye.com/blog/2226354 <%@ page language="java" conte ...
-
DatePickerAndroid用法
一.代码/** * Sample React Native App * https://github.com/facebook/react-native */ 'use strict'; import ...
-
day03 文件操作
目录 1.文件操作实例 2.文件常用操作 3.with模块操作文件 常用实例,把文件里面的内容读出来做成字典的形式在做成字列表展示. 1.精简版. lst = []f = open("fil ...
-
解决jmeter乱码
1. 解决响应数据乱码的方法: 在jemter文件下找到bin\jmeter.properties添加下面一句话: sampleresult.default.encoding=UTF-8 ...
-
Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
严重: Exception sending context initialized event to listener instance of class org.springframework.we ...
-
ces
1. 测试目录 1.1. 测试目录 2. 测试目录2 2.1 测试目录