git超速掌握之一(基本使用)
前言:
无论你是运维、开发还是IT爱好者,都会听说github了吧?动不动哪位大神就说在github上有什么什么项目,我的github地址是xxxxx,甚至有自己个github在找新工作时都能给自己加分不少,甚至有人在github写书比如(跟老齐学python),所以github太有用了不得不学啊。。
其实本人15年的时候还在学搭建svn,当时公司也用的是svn,主要是测试发布代码 和自己部门存文档用,当时接触linux不久,现在掌握了git,感觉是从非rmb玩家到rmb玩家般的不同,嗯....开源的力量真是大。
更详细的git教程,推荐阅读 http://www.jianshu.com/p/55496ff224e9
git概述:
git是一个分布式版本管理系统,是为了更好地管理Linux内核开发而创立的。 Git可以在任何时间点,把文档的状态作为更新记录保存起来。因此可以把编辑过的文档复原到以前的状态,也可以显示编辑前后的内容差异。 而且,编辑旧文件后,试图覆盖较新的文件的时候(即上传文件到服务器时),系统会发出警告,因此可以避免在无意中覆盖了他人的编辑内容。
git可以自己搭建,也可以用开源项目
git官方地址:https://github.com/
中国开源社区git:https://git.oschina.net/
这里得说下,因为天朝防火墙的原因访问git官网和下载资料都是巨慢,如果你有更好的方式可以直接用官方,没什么特殊需求还是国内的开源社区版吧。
笔者的使用场景是: 如图,win10 macbook linux都是处于不同的地理位置,win10和macbook使用pycharm写python代码,测试成功后推送到linux下的test1-5的虚拟机上,需要有存储代码、发布代码、和临时增加分支项目的功能。
安装:
windows版下载地址:https://git-scm.com/download/win
win需要安装一个bash环境,安装完成打开bash就和linux中的操作很像了,如果你不懂bash和linux命令,请先学习下linux基础.
linux && mac os:yum install git && brew install git 哈,熟的不能再熟了
使用码云:
1、注册成功后进入自己主页,点击右上角的'+'图标选择'新建项目',输入自己的项目名称,概述所使用的开发语言和开源协议
2、主页中就可以看到自己创建的项目了,进到主页选择自己的项目,点击'克隆下载'按钮会有ssh和https连接方式选择;
ssh: 通过秘钥验证方式连接主机将主机生成的pub文件内容copy到git中,支持上传下载。
https:通过https协议连接,笔者测试只支持下拉代码 不支持上传。
3、生成key文件
在主机执行ssh-keygen一路回车,cat ~/.ssh/id_rsa.pub 如图
4、码云中右上角点击你的头像,选择'修改资料'->选择'ssh公钥',将公钥粘贴到页面,点击确定就加好了
命令行操作:
1、git原理:
按照上传顺序: git拉取->add(写入本地缓存)->commit(写入本地数据库)->git push(上传到git)
2、基础操作
mkdir test01
#建立测试文件夹
git clone git@git.oschina.net:tajzhang/StudyPython02.git
#克隆远端项目
cd StudyPython02
#进入同步好的项目
vim ceshi01.txt
#写入个测试文件
git status
#查看git状态,此命令比较关键,能看到git是否已经commit或add
git add ceshi01.txt
#将文件写入缓存
git commit -m 'No1'
#讲文件写入本地数据库,标记为No1
git push
#上传文件,切记是直接上传到云端,本地就不可恢复之前文件了,要小心使用!
git pull
#从云端拉取文件,和push相对
3、进阶命令手册
git config --global user.name "you name"
#设置你的名字 强制性的
git config --global user.email "you email"
#设置你的邮箱
git config --global color.ui auto
#开启命令和输出的颜色
git init [project-name]
#创建一个新的本地仓库
git clone [url]
#下载一个项目的所有的历史版本
git status
#列出所有的正在变更的文件到提交
git diff
#显示文件不同的地方
diff 只在没有add之前生效
git add [file]
#为准备版本编写快照。
git diff --staged
#显示当前版本和最后一个文件版本之间的文件差异
git reset [file]
#结果文件,但保留其内容
git commit -m "asdasdasd"
#在版本历史中永久记录文件快照 提交文件到本地仓库 review history[恢复历史]
git log
#列出所有的历史版本
git log --follow [file]
#列出一个文件的版本历史,包括重命名
git diff [first-branch]...[second-branch]
#显示两个分支之间的内容差异
git show [commit]
#输出指定提交的内容变更信息 redo commits(重新提交)
git reset [commit] 一般不用
#撤消所有提交后[提交],保持局部变化 git reset --hard [commit]
#将所有历史和更改全部丢弃到指定的提交中
#还原到一个指定的提交中去 git merge [bookmark]/[branch]
#合并本地的分支
git push [alias] [branch]
#提交数据到github
git pull
#下载书签历史并包含更改 vim xxxx
git status
git diff xxxx
git add xxxx
git commmit -m 'update xxxx'
git status
* git回退版本
git reset --hard HEAD^ 回到上一个版本
git reset --hard HEAD^^ 回到上上一个版本
git reset --hard HEAD^ 回到上100个版本
也可以通过commit id = 这个值来回退版本
git reset --hard
#时光穿梭 git reflog 查询你做过的命令
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。 没有add之前可以使用
git checkout -- [file name] 如果已经add 把文件加入暂存区了怎么办
git reset HEAD [file name]
git checkout -- [file name] 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库 ADD 暂存区
commit 工作区
### 删除文件
rm xxx
git rm xxx
git commit -m 'remove xxx'
4、分支:
当你的项目有多个人同时协作,或是项目中途中断去开发其它功能时,可在master项目创建一个master的二次元项目,不会干预到master,文件和master相同,当你完成开发就可以和master项目合并。
相关命令:
git branch
#列出所有的本地分支
git branch [branch-name]
#创建新的分支
git checkout [branch-name]
#切换分支
git merge [branch]
#合并分支
git branch -d [branch-name]
#删除分支 git branch cehsi
git branch
git checkout ceshi
vim ffff
git add ffff
git commit -m 'ceshi'
git chekcout master
git merge ceshi
git branch -d ceshi
#并行分支
git branch ceshi2
git branch cehsi3
git checkout ceshi2
vim ceshi2
git add ceshi2
git commit -m 'ceshi2'
git checkout ceshi3
vim ceshi3
git add ceshi3
git commit -m 'ceshi3'
git checkout master
git merge ceshi3
后续会更新pycharm下如何同步git
git超速掌握之一(基本使用)的更多相关文章
- Git 子模块 - submodule
有种情况我们经常会遇到:某个工作中的项目需要包含并使用另一个项目. 也许是第三方库,或者你 独立开发的,用于多个父项目的库. 现在问题来了:你想要把它们当做两个独立的项目,同时又想在 一个项目中使用另 ...
- Git 在团队中的最佳实践--如何正确使用Git Flow
我们已经从SVN 切换到Git很多年了,现在几乎所有的项目都在使用Github管理, 本篇文章讲一下为什么使用Git, 以及如何在团队中正确使用. Git的优点 Git的优点很多,但是这里只列出我认为 ...
- Git与Repo入门
版本控制 版本控制是什么已不用在说了,就是记录我们对文件.目录或工程等的修改历史,方便查看更改历史,备份以便恢复以前的版本,多人协作... 一.原始版本控制 最原始的版本控制是纯手工的版本控制:修改文 ...
- Git Bash的一些命令和配置
查看git版本号: git --version 如果是第一次使用Git,你需要设置署名和邮箱: $ git config --global user.name "用户名" $ gi ...
- 在Ubuntu 16.10 安装 git 并上传代码至 git.oschina.net
1. 注册一个账号和创建项目 先在git.oschina.net上注册一个账号和新建一个project ,如project name 是"myTest". 2.安装git sudo ...
- 史上最详细git教程
题外话 虽然这个标题很惊悚,不过还是把你骗进来了,哈哈-各位看官不要着急,耐心往下看 Git是什么 Git是目前世界上最先进的分布式版本控制系统. SVN与Git的最主要的区别 SVN是集中式版本控制 ...
- [版本控制之道] Git 常用的命令总结(欢迎收藏备用)
坚持每天学习,坚持每天复习,技术永远学不完,自己永远要前进 总结日常开发生产中常用的Git版本控制命令 ------------------------------main-------------- ...
- 【解决方案】Myeclipse 10 安装 GIT 插件 集成 步骤 图解
工程开发中,往往要使用到集成GIT ,那么下面说说插件安装步骤 PS:以Myeclipse 10 为例,讲解集成安装步骤. ----------------------main------------ ...
- git 命令
切换仓库地址: git remote set-url origin xxx.git切换分支:git checkout name撤销修改:git checkout -- file删除文件:git rm ...
随机推荐
- 重装window 7系统,从做一个u盘启动盘,到装系统,很不错
老毛桃U盘启动盘制作工具是现在最流行的U盘装系统和维护电脑的专用工具,一是制作简单,几乎100%支持所有U盘一键制作为启动盘,不必顾虑以前量产U盘考虑专用工具的问题.二是制作后工具功能强大,支持GHO ...
- Hebernate -- 映射继承关系
1. Employee 为基类, 派生出HourEmployee 和 SalaryEmployee两个类. 采用 subclass 元素的继承映射(1) 采用 subclass 的继承映射可以实现对于 ...
- neutron dhcp ha 实验
4个节点(controller, network,2 compute nodes) 1.0 on the network node 1.1 set –I ‘s/start] on/#start\ ...
- HttpClient发送Json数据到指定接口
项目中遇到将Json数据发送到指定接口,于是结合网上利用HttpClient进行发送. /** * post发送json数据 * @param url * @param param * @return ...
- SpringBoot实现文件上传功能
新建maven项目,pom文件: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="htt ...
- Linux软件安装-----apache安装
一. ./configure --prefix=/usr/local/http2 \ --enable-modules=all \ --enble-mods-shared=all \ 开启模块共享: ...
- javascript简单介绍总结(一)
DOM (Document Object Model)(文档对象模型)是用于访问 HTML 元素的正式 W3C 标准.在 HTML 中,JavaScript 语句向浏览器发出的命令.语句是用分号分隔: ...
- python中的mysql操作
一. 数据库在自动化测试中的应用 存测试数据 有的时候大批量的数据,我们需要存到数据库中,在测试的时候才能用到,测试的时候就从数据库中读取出来.这点是非常重要的! 存测试结果 二. python中的数 ...
- 原生javascript-图片弹窗交互效果
本人的第一个原生js插件 - picLightBox 在线例子:http://lgy.1zwq.com/photoBox/ [一]用var 声明多个变量,比每个变量都用var快多了 var sScro ...
- Struts2 用过滤器代替了 servlet ,???? 且不需要tomcat就可以直接做功能测试
Struts2 用过滤器代替了 servlet ,???? 且不需要tomcat就可以直接做功能测试