前言:

无论你是运维、开发还是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超速掌握之一(基本使用)的更多相关文章

  1. Git 子模块 - submodule

    有种情况我们经常会遇到:某个工作中的项目需要包含并使用另一个项目. 也许是第三方库,或者你 独立开发的,用于多个父项目的库. 现在问题来了:你想要把它们当做两个独立的项目,同时又想在 一个项目中使用另 ...

  2. Git 在团队中的最佳实践--如何正确使用Git Flow

    我们已经从SVN 切换到Git很多年了,现在几乎所有的项目都在使用Github管理, 本篇文章讲一下为什么使用Git, 以及如何在团队中正确使用. Git的优点 Git的优点很多,但是这里只列出我认为 ...

  3. Git与Repo入门

    版本控制 版本控制是什么已不用在说了,就是记录我们对文件.目录或工程等的修改历史,方便查看更改历史,备份以便恢复以前的版本,多人协作... 一.原始版本控制 最原始的版本控制是纯手工的版本控制:修改文 ...

  4. Git Bash的一些命令和配置

    查看git版本号: git --version 如果是第一次使用Git,你需要设置署名和邮箱: $ git config --global user.name "用户名" $ gi ...

  5. 在Ubuntu 16.10 安装 git 并上传代码至 git.oschina.net

    1. 注册一个账号和创建项目 先在git.oschina.net上注册一个账号和新建一个project ,如project name 是"myTest". 2.安装git sudo ...

  6. 史上最详细git教程

    题外话 虽然这个标题很惊悚,不过还是把你骗进来了,哈哈-各位看官不要着急,耐心往下看 Git是什么 Git是目前世界上最先进的分布式版本控制系统. SVN与Git的最主要的区别 SVN是集中式版本控制 ...

  7. [版本控制之道] Git 常用的命令总结(欢迎收藏备用)

    坚持每天学习,坚持每天复习,技术永远学不完,自己永远要前进 总结日常开发生产中常用的Git版本控制命令 ------------------------------main-------------- ...

  8. 【解决方案】Myeclipse 10 安装 GIT 插件 集成 步骤 图解

    工程开发中,往往要使用到集成GIT ,那么下面说说插件安装步骤 PS:以Myeclipse 10 为例,讲解集成安装步骤. ----------------------main------------ ...

  9. git 命令

    切换仓库地址: git remote set-url origin xxx.git切换分支:git checkout name撤销修改:git checkout -- file删除文件:git rm  ...

随机推荐

  1. 分布式链路监控与追踪系统Zipkin

    1.分布式链路监控与追踪产生背景2.SpringCloud Sleuth + Zipkin3.分布式服务追踪实现原理4.搭建Zipkin服务追踪系统5.搭建Zipkin集成RabbitMQ异步传输6. ...

  2. 关于MySQL的TinyInt数据类型在Delphi中作为Boolean类型的一个要注意的问题

    关于MySQL的TinyInt数据类型在Delphi中作为Boolean类型的一个要注意的问题: 在定义TinyInt类型字段时,若要作为Delphi中作为Boolean类型,则该字段的长度必须为1!

  3. FZU 1759 Super A^B mod C 指数循环节

    Problem 1759 Super A^B mod C Time Limit: 1000 mSec    Memory Limit : 32768 KB  Problem Description G ...

  4. Ubuntu chrome FQ

    按照文档FQ,需要注意一下两点: 1. 在安装Chrome 下的 SwitchyOmega 插件时,拖入到浏览器不能识别,应该打开chrome://extensions/再拖入: 2.在设置时排列列表 ...

  5. za2

      程序集?生成后  一个exe,一个dll. 也可以是一个项目. vs 快速生成字段的代码段快捷键,快速生成构造函数,生成普通方法结构的快捷键   ************************* ...

  6. fiddler之使用教程(一)

    一. 什么是fiddler&它可以做什么 fiddler是位于客户端和服务器端的HTTP代理,也是目前最常用的http抓包工具之一.它能够记录客户端和服务器之间的所有HTTP请求,可以针对特定 ...

  7. jenkins构建中的除零错误

    一. 除零错误(ZeroDivisionError) 今天在jenkins上运行接口自动化测试任务时,从控制台输出中看到了除零错误,大概是这样的 从上图中,通过分析,可以得出三个结论: 1. jenk ...

  8. LightOJ - 1248 期望

    题意:有一个n面筛子,每次扔一下,每面概率相同,要求扔出n面的期望次数 题解:和第三篇论文里的例题一样,算从第i个到第i+1个的概率是(n-i)/n,n面中找n-i个没有扔到过的,期望是n/(n-i) ...

  9. hdu 5980 Find Small A(水,模拟)

    Find Small A Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

  10. Xcode export/upload error: Your session has expired. Please log in 解决方法

    问题: 突然打包账号不好使了    重登  重启  清缓存  一套都打完了   还是不好使 解决方法:  删除掉其他账号 重新登录 参考网址 http://stackoverflow.com/ques ...