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 ...
随机推荐
- 关于eclipse中看不到源码的问题
这几步之后会生成一个src压缩包,再用att打开即可.记住 要按ctrl再点击
- geoserver源码学习与扩展——CSV转shapefile文件
基于geotools实现csv转换为shapefile文件. 1.读取CSV文件,将其装入FeatureCollection: 2.利用ShapefileDumper类将FeatureCollecti ...
- java8 函数接口 Predicate例子
import java.util.HashSet; import java.util.Collection; import java.util.function.Predicate; public c ...
- scala学习手记25 - Curry化
curry翻译为中文就是咖喱.意为使用curry可以让代码更有味道. scala里的curry化可以把函数从接收多个参数转换成接收多个参数列表.也就是说我们要编写的函数不是只有一个参数列表,这个参数列 ...
- IOS-通讯录
一.通讯录简介 iOS提供了AddressBook.framework框架,允许开发者与设备中的通讯录进行数据交互 二.查询授权状态 可以调用ABAddressBookGetAuthorizati ...
- SQL Server中解决死锁的新方法介绍
SQL Server中解决死锁的新方法介绍 数据库操作的死锁是不可避免的,本文并不打算讨论死锁如何产生,重点在于解决死锁,通过SQL Server 2005, 现在似乎有了一种新的解决办法. 将下面的 ...
- java中的策略设计模式
本文主要讲java中的策略模式:一个可以根据不同的传入参数而具有不同行为的方法,就叫策略模式.概念可能有点不好理解,具体看下面代码: import java.util.Arrays; /** * 策略 ...
- [置顶]
C语言学习入门
编译文件:cc -c one.c two.c 生成.o目标文件 链接文件:cc one.o two.o 默认生成 a.out 执行文件 指定生成的可执行文件名 cc -o one one ...
- ROS机器人星火计划公开课总结
非常荣幸参加了两次星火计划公开课(上海站), 感谢NXROBO.EXBOT以及所有支持ROS机器人星火计划的小伙伴们. ----废话开始,与课程总结无关,可跳过---- 在国内20多年的求学生涯以及2 ...
- Unity3d 相关文档
Unity3D研究院之处理摄像机跟随避免相机穿墙拉近或透明的方法 http://www.apkbus.com/android-498-1.html