-----------------------------------------------------Git安装---------------------------------------------------

可以输入git,看看系统有没有安装Git,没有安装会提示,如下:

Theprogram 'git' is currently not installed. You can install it bytyping:

sudoapt-get install git

安装Git:sudoapt-get install git

安装Git之后需要配置用户信息:

gitconfig --global user.name "Your Name"

gitconfig --global user.email "you@example.com"

---------------------------------------------------SSH密钥注册---------------------------------------------

官网生成密钥命令:ssh-keygen-t rsa -C "$your_email"

第一步生成密钥:

ssh-keygen-t rsa -C "shijinwen@ltbl.cn"

说明:如果一切顺利的话,可以在用户主目录(/home/yourhost name/)里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSHKey的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥

第二步找到id_rsa.pub文件,将文件内容复制到github的ssh管理中(新建SSH密钥)

catid_rsa.pub /gedit id_rsa.pub

--------------------------------------------Git克隆项目----------------------------------------------

克隆项目:

gitclone git@192.168.100.22:Romaker/Romaker-Admin.git

克隆项目某个分支:

gitclone -b 分支名称git@192.168.100.22:Romaker/Romaker-Admin.git

//第一步:gitclone 项目地址 //克隆项目

//第二步:cd进入下载目录 //如果项目不位于主分支,则必须进入下载目录然后切换分支下载

//第三步:gitcheckout --track origin/dev //切换分支,检出分支内容

-----------------------------------------------Git更新项目---------------------------------------------------

1.git pull //更新代码

-----------------------------------------------Git提交代码---------------------------------------------------

第一步,用命令gitadd(gitrm)把文件添加到仓库:

gitadd 文件名称(或文件目录)[添加修改] 或 gitrm 文件名(或文件目录)[删除]

提交当前目录下所有文件:gitadd ./

第二步,用命令gitcommit把文件提交到仓库:

gitcommit -m "注释内容"

第三步,用命令gitpush 把文件推送到git服务器:

gitpush -u origin sjw(分支名称)

说明:提交新增跟提交修改是同样的步骤

------------------------------------------------Git关联远程库----------------------------------------------

要关联一个远程库,使用命令gitremote add origin git@server-name:path/repo-name.git;

关联后,使用命令gitpush -u origin master第一次推送master分支的所有内容;

此后,每次本地提交后,只要有必要,就可以使用命令gitpush origin master推送最新修改;

----------------------------------------------------Git分支管理-----------------------------------------------

创建并切换到dev分支:gitcheckout -b dev

说明:gitcheckout命令加上-b参数表示创建并切换,相当于以下两条命令:

gitbranch dev //创建

gitcheckout dev //切换

查看当前分支:gitbranch //gitbranch命令会列出所有分支,当前分支前面会标一个*号

合并分支:gitmerge dev

删除分支:gitbranch -d dev

查看分支合并图:gitlog --graph

查看分支:gitbranch

创建分支:gitbranch <name>

切换分支:gitcheckout <name>

创建+切换分支:gitcheckout -b <name>

合并某分支到当前分支:gitmerge <name>

删除分支:gitbranch -d <name>

-------------------------------------------------GitBug分支--------------------------------------------

软件开发中,bug就像家常便饭一样。有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。

当你接到一个修复一个代号101的bug的任务时,很自然地,你想创建一个分支issue-101来修复它,但是,等等,当前正在dev上进行的工作还没有提交:

$git status

#On branch dev

#Changes to be committed:

# (use "git reset HEAD <file>..." to unstage)

#

# new file: hello.py

#

#Changes not staged for commit:

# (use "git add <file>..." to update what will becommitted)

# (use "git checkout -- <file>..." to discard changesin working directory)

#

# modified: readme.txt

#

并不是你不想提交,而是工作只进行到一半,还没法提交,预计完成还需1天时间。但是,必须在两个小时内修复该bug,怎么办?

幸好,Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:

$git stash

Savedworking directory and index state WIP on dev: 6224937 add merge

HEADis now at 6224937 add merge

现在,用gitstatus查看工作区,就是干净的(除非有没有被Git管理的文件),因此可以放心地创建分支来修复bug。

首先确定要在哪个分支上修复bug,假定需要在master分支上修复,就从master创建临时分支:

$git checkout master

Switchedto branch 'master'

Yourbranch is ahead of 'origin/master' by 6 commits.

$git checkout -b issue-101

Switchedto a new branch 'issue-101'

现在修复bug,需要把“Gitis free software ...”改为“Gitis a free software ...”,然后提交:

$git add readme.txt

$git commit -m "fix bug 101"

[issue-101cc17032] fix bug 101

1file changed, 1 insertion(+), 1 deletion(-)

修复完成后,切换到master分支,并完成合并,最后删除issue-101分支:

$git checkout master

Switchedto branch 'master'

Yourbranch is ahead of 'origin/master' by 2 commits.

$git merge --no-ff -m "merged bug fix 101" issue-101

Mergemade by the 'recursive' strategy.

readme.txt| 2 +-

1file changed, 1 insertion(+), 1 deletion(-)

$gitbranch -d issue-101

Deletedbranch issue-101 (was cc17032).

太棒了,原计划两个小时的bug修复只花了5分钟!现在,是时候接着回到dev分支干活了!

$git checkout dev

Switchedto branch 'dev'

$git status

#On branch dev

nothingto commit (working directory clean)

工作区是干净的,刚才的工作现场存到哪去了?用gitstash list命令看看:

$gitstash list

stash@{0}:WIP on dev: 6224937 add merge

工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法:

一是用gitstash apply恢复,但是恢复后,stash内容并不删除,你需要用gitstash drop来删除;

另一种方式是用gitstash pop,恢复的同时把stash内容也删了:

$git stash pop

#On branch dev

#Changes to be committed:

# (use "git reset HEAD <file>..." to unstage)

#

# new file: hello.py

#

#Changes not staged for commit:

# (use "git add <file>..." to update what will becommitted)

# (use "git checkout -- <file>..." to discard changesin working directory)

#

# modified: readme.txt

#

Droppedrefs/stash@{0} (f624f8e5f082f2df2bed8a4e09c12fd2943bdd40)

再用gitstash list查看,就看不到任何stash内容了:

$git stash list

你可以多次stash,恢复的时候,先用gitstash list查看,然后恢复指定的stash,用命令:

$gitstash apply stash@{0}

-------------------------------------------------Git常用命令汇总--------------------------------------------

查看当前项目的分支信息:gitremote show origin

声明分支:gitbranchsjw(分支名) //项目有多个分支存在的情况,可以声明分支,然后切换分支就可以用gitstatus 对比本地代码文件改动了

切换分支:gitcheckoutsjw(分支名)

查看文件状态:gitstatus

查看文件修改内容:gitdiff文件名

查看提交日志:gitlog --pretty=oneline 显示从近到远的提交日志列表

回退到某个版本:gitreset --hard HEAD^ HEAD~100意思是往上回滚100个版本

gitreset --hard版本id 回滚到指定版本

查看命令历史:gitreflog

查看工作区和版本库里面最新版本的区别:gitdiff HEAD -- readme.txt

丢弃工作区文件修改:gitcheckout -- file(文件名)

说明:命令gitcheckout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

一种是:readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是:readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次gitcommit或gitadd时的状态。

丢弃暂存区的修改,重新放回工作区:gitreset HEAD file

总结:gitcheckout -- file其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

从版本库删除文件:gitrm file

//1. git add . //往暂存区域添加已添加和修改的文件,不处理删除的文件

//2. git status //比较本地数据目录与暂存区域的变化

//3. git commit -m "commit directions" //提到代码到本地数据目录,并添加提交说明

------------------------------------------------Ubuntu常用命令---------------------------------------------

查询系统历史命令信息:history

创建目录:mkdir

删除空目录:rmdir

删除非空目录:rm-rf 目录or文件

创建文件:touch文件

查看文件:cat

编辑文件:gedit

查看文件列表:ls-la

查看当前工作目录:pwd

----------------------------------创建版本库------------------------------------

Git全局设置

gitconfig --global user.name "石锦文"

gitconfig --global user.email "shijinwen@ltbl.cn"

创建新版本库

mkdirphpTest

cdphpTest

gitinit

touchREADME.md

gitadd README.md

gitcommit -m "first commit"

gitremote add origin git@192.168.100.22:jinwenShi/phpTest.git

gitpush -u origin master

推送已存在的Git仓库

cdexisting_git_repo

gitremote add origin git@192.168.100.22:jinwenShi/phpTest.git

gitpush -u origin master

Ubuntu系统下Git的使用相关推荐

  1. Ubuntu系统下Git版本控制使用教程|1-6

    文章目录 使用git对代码进行版本控制 git的三个工作区和工作流程 git的本地基本操作 如何安装git 如何配置git 使用git对本地代码进行版本控制 使用git同时管理本地和远程代码 git高 ...

  2. 解决Ubuntu系统下git clone下载速度较慢的问题(亲测有效)

    常见问题使用Git clone下载网速通常有十几kb,下载较慢. 使用以下指令即可解决: //这是我们要clone的,通常是github.com需要替换掉,就是在github.com后面加上.cnpm ...

  3. ubuntu系统下git push时出现问题 git clone:Failed to connect to github.com port 443: Connection refused解决办法

    在VMware虚拟机Ubuntu20.04上git push ORB_SLAM2 项目时出现了如下报错 解决方案: 如果没有开vpn 首先将 http://github.com/任意项目路径 切换为 ...

  4. 安卓9.0刷linux,Ubuntu系统下编译Android 9.0系统

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 前言 在Ubuntu系统下编译Android系统.哎呀不知道是不是换了新电脑的缘故,这次编译居然从安装JDK和配置环境下 ...

  5. linux系统下qt中文输入法,Ubuntu系统下Qt使用中文输入法(示例代码)

    近几个月一直在搞QML框架下的UI控件,没有更新博客.今天记录下Ubuntu系统下Qt开发工具使用中文输入法的流程. (题外话,Linux系统下的开发,离线是没法搞的(夸张手法),不联网简直就是事倍功 ...

  6. Ubuntu系统下使用ROS(moveit )连接ABB实体机器人(irb120)(1.控制仿真)

    前言: 经过两天的踩坑,终于将ROS与ABB连接成功,可以通过rviz的gui界面拖动机械臂来控制实体ABB机械臂进行运动,因为网络上的教程(几位博主和ROS WIKI等)个别步骤的不完整,所以走了很 ...

  7. ④ESP8266 开发学习笔记_By_GYC 【Ubuntu系统下ESP8266 开发环境搭建】

    目录 ④ESP8266 开发学习笔记_By_GYC [Ubuntu系统下ESP8266 开发环境搭建] 一.安装前准备 1.乐鑫官方的ESP-IDF 编程指南 2.ESP-IDF风格的ESP8266 ...

  8. usrp运行完整linux,Ubuntu系统下USRP硬件驱动(UHD)的编译与安装

    在Ubuntu系统下USRP硬件驱动(UHD)安装最简单的方式就是直接从Ettus Research官方提供的PPA源安装,不过本文介绍的是如何从源代码进行编译与安装. 1.从PPA源安装只需要下面三 ...

  9. Ubuntu系统下安装微信

    安装微信实现截图发送图片功能 1.打开终端输入命令,更新软件源 sudo apt-get update 2.输入以下命令(一定注意  -O-  中间是大写字母O,不是0也不是小写o!!!) wget ...

最新文章

  1. php json.parse,PHP JSON头导致JSON.parse出错(使用jQuery)
  2. 蓝桥杯 兰顿蚂蚁(模拟)
  3. 20秋PHP作业3,北语20秋《PHP》作业3【标准答案】
  4. python双引号报错_Python中select语句中的双引号”“怎么处理
  5. 【超经典】Java多态有什么好处?怎样用?
  6. 计算机控制论文,计算机控制系统论文.ppt
  7. H.264/AVC 标准中CAVLC 和CABAC 熵编码算法研究
  8. mysql 失效转移_MySQL基于MHA的FailOver过程
  9. 计算机图学测试题及答案,《计算机图形学》练习测试题及参考答案
  10. mongoDB 3.0 安全权限访问控制
  11. java iterator 源码_Java 集合系列(四)—— ListIterator 源码分析
  12. paip.函数式编程方法概述以及总结
  13. HDFS的命令行使用【常用 hdfs 命令】
  14. 百度前员工因内网发布“女优一览表”被辞退,自诉:想转鉴黄师
  15. 零基础学会数据分析计划
  16. 带左右箭头图片轮播的JS代码
  17. ArcGIS For Unity3D(一)—— 在Unity3D中开启ArcGIS
  18. 和尚挑水 java_用do...while语句编写程序t18_2.java
  19. Unity3dAndroid Studio实现开机自启App以及激活其他App
  20. 网易大神app ios和android,网易大神app是干嘛的?网易大神有什么用?

热门文章

  1. 2006中国最令人失望的十所大学
  2. Android RadioButton 语言切换问题
  3. JavaScript知识点之如何使用匿名的方法做条件判断
  4. 文件分割合并类(java)
  5. 翻译|How to Export a Connected Component
  6. 利用java poi对excel表的读写操作
  7. linux 源码安装 Nginx
  8. 横河电机修复多个工控产品漏洞,可用于破坏和操纵物理进程
  9. 美国“加强软件供应链安全实践的指南” (SSDF V1.1草案) 解读来了
  10. Java日志组件间关系