ubuntu 下git安装及使用笔记_sudo apt-get install git-core openssh-server opens-程序员宅基地

技术标签: Ubuntu  git  ubuntu  

git命令使用图标(简单清晰):http://www.cnblogs.com/1-2-3/archive/2010/07/18/git-commands.html

1.安装

sudo apt-get install git-core openssh-server openssh-client
$ sudo apt-get install git-core git-gui git-doc 
sudo apt-get install libcur14-gnutls-dev libexpat1-dev gettext libz-dev git-core (git-core是git的安装包,其他的是git所依赖的安装包)

如果需要在push到网上

a。github帐号的申请

如果只是需要将github上感兴趣的代码拷贝到本地,自己进行修改使用,而不打算共享发布的话,其实不申请帐号也没有关系,只需要 git clone 代码到本地就可以了。本文对这种方法不做讨论,毕竟使用 github 就是为了开源的目的。

首先去 github.com 上注册一个帐号,具体的注册流程就不赘述了。

b、在本地建立一个文件夹,然后做一些全局变量的初始化

git config --global user.name = "用户名或者用户ID"

git config --global user.email = "邮箱"

这两个选项会在以后的使用过程中自动添加到代码中。

c、创建验证用的公钥

这个是比较复杂和困扰大多数人的地方,因为 git 是通过 ssh 的方式访问资源库的,所以需要在本地创建验证用的文件。

使用命令:ssh-keygen -C 'you email [email protected]' -t rsa

会在用户目录 ~/.ssh/ 下建立相应的密钥文件

可以使用 ssh -v [email protected] 命令来测试链接是否畅通

d、上传公钥

在 github.com 的界面中 选择右上角的 Account Settings,然后选择 SSH Public Keys ,选择新加。

Title 可以随便命名,Key 的内容拷贝自 ~/.ssh/id_rsa.pub 中的内容,完成后,可以再使用 ssh -v[email protected] 进行测试。看到下面的信息表示验证成功。

进行到这里,我们也可以利用github来管理我们的项目和参与开源工作了,大体上使用git分为三种方式。

管理自己的项目

这种情况是自己在本地有一些代码,需要利用 github 来管理自己的项目,可以按照下面的步骤进行。

1、建立仓库

在需要建立项目的文件夹中,使用 git init 进行仓库的建立。完成后,可以看到文件家中多了一个 .git 隐藏目录。

2、添加文件

使用 git add . 来进行初始文件的添加。这里 表示将文件夹下所有的文件都添加进去,我们也可以指定文件进行添加。

3、提交文件

使用 git -m commit  -m 'comment' 提交,可以将编辑的内容进行提交。

通过 git show 可以看到项目的一些状态。

这是代码已经在本地管理了,但是本地管理完全体现不出git的优势。

利用github托管自己的项目

1、如果需要将自己的项目托管在github.com上,首先需要创建项目。在 Dashboard 中选择 Create New Repository,填入相关信息后,项目就创建成功了。

2、之后,会有一个如何上传的提示,如下图已经很详细了。

Fork别人的项目

前面提到过,如果只是下载使用别人的代码,通过 git clone 就可以了,当然clone的前提是项目必须是public的,私有的项目是没办法的。如果需要参与,可以通过fork,然后合并的方式。

1、首先需要去自己感兴趣的项目中进行Forkfork出自己的一份分支来。fork之后,一般可以看到一个ssh访问的地址。例如:[email protected]:cocowool/userguide.git

2、复制代码

使用 git clone [email protected]:cocowool/userguide.git userguide 可以将代码复制到本地的userguide 文件夹中

3、进行自己的修改,完成后请求原作者合并

 



2.修改用户信息
$ git config --global user.name "John Doe"

$ git config --global user.email [email protected]

3.
查看配置信息

$ git config –list


4.相关命令
git init
git add .
git commit
git diff -cached 要看已经暂存起来的文件和上次提交时的快照之间的差异

git diff 此命令比较的是工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有

暂存起来的变化内容。

git status
git log -p

$ git commit –amend   想要撤消刚才的提交操作,可以使用 --amend 选项重新提交

git reset HEAD benchmarks.rb  取消暂存 benchmarks.rb 文件 

$ git checkout – benchmarks.rb   抛弃文件修改的命令 

$ git remote  要查看当前配置有哪些远程仓库,可以用 git remote 命令,它会列出每个远程库的简短名字。

$ git remote add pb git://github.com/paulboone/ticgit.git  添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用 

$ git remote -v  列出多个远程仓库

$ git fetch [remote-name]    从远程仓库抓取数据到本地

git pull  从原始克隆的远端仓库中抓取数据后,合并到工作目录中当前分支

git push [remote-name] [branch-name]  将本地仓库中的数据推送到远程仓库

 git remote show [remote-name] 查看某个远程仓库的详细信息 

$ git tag  列显已有的标签    

$ git push origin –tags  如果要一次推送所有(本地新增的)标签上去,可以使用 --tags 选项: 

git branch -d experimental  如果使用大写的-D 的话,则表示“不论如何都删除分支”,-D 当然使用在“分支被证明失败”的情况下喽。
5.上面的命令有点乱,以下是某位网友整理的( 《看日记学 git 》系列):
1
获得帮助可以使用类似 man git-****的命令格式:
想获得关于 commit 命令的帮助,则 man git-commit
想获得关于 pull 命令的帮助,则 man git-pull
想获得关于 merge 命令的帮助,则 man git-merge
以此类推
2
任何人在使用 git 之前,都要提交简单的个人信息,以便 git 区分不同的提交者身份。
#git config –global user.name “your name”
#git config –global user.email [email protected]
3
想新开启一个项目,应该先建立一个目录,例如名为 myproject,然后所有的项目开发内容都在此目录下进行。
#cd myproject
#git init
#git add .
#git commit //这个步骤会自动进入编辑状态,要求提交者输入有关本次提交的“开发信息”
至此,一个新项目就诞生了,第一个开发信息(开发日志)也随之诞生。
4如果改进了项目源代码,并且到了开发者认为“应该再次记录开发信息”的时候,则提交“工作成果”。
#git commit -a
//这是一个偷懒的命令,相当于 git add .; git commit;
但是,此处有一点应该注意,那就是 git commit -a 无法把新增文件或文件夹加入进来,所以,如果你新增了文件或文
件夹,那么就要老老实实的先 git add .,再 git commit 喽。[此处非常感谢 freeren 的提醒]
5
想检查到目前为止对源码都做了哪些修改(相对于本次工作刚开始之时):
#git diff //这个命令只在 git add 之前使用有效。如果已经 add 了,那么此命令输出为空
#git diff –cached //这个命令在 git add 之后在 git commit 之前有效。
#git status //这个命令在 git commit 之前有效,表示都有哪些文件发生了改动
6
想查看自项目开启到现在的所有开发日志
#git log
#git log -p //会输出非常详细的日志内容,包括了每次都做了哪些源码的修改
7
开启一个试验分支(experimental),如果分支开发成功则合并到主分支(master),否则放弃该试验分支。
#git branch experimental //创建一个试验分支,名称叫 experimental
#git branch //显示当前都有哪些分支,其中标注*为当前所在分支
#git checkout experimental //转移到 experimental 分支
(省略数小时在此分支上的开发过程)...
如果分支开发成功:
#git commit -a //在 experimental 分支改进完代码之后用 commit 在此分支中进行提交
#git checkout master //转移回 master 分支
#git merge experimental //经证实分支开发成功,将 exerimental 分支合并到主分支
#git commit -a //彻底完成此次分支合并,即提交 master 分支
#git branch -d experimental //因为 experimental 分支已提交,所以可安全删除此分支
如果分支开发失败:
#git checkout master
#git branch -D experimental //由于分支被证明失败,因此使用-D 来放弃并删除该分支
8
随时查看图形化分支信息。
#gitk
9
当合作伙伴 bob 希望改进我(rocrocket)的工作成果,则:
bob$git clone /home/rocrocket/project myrepo //此命令用于克隆我的工作到 bob 的 myrepo 目录下。请注意,此命令有可能会因为/home/rocrocket 的目录权限问题而被拒绝,解决方法是 chmod o+rx /home/rocrocket。
(省略 bob 数小时的开发过程)...
bob$git commit -a //bob 提交自己的改进成果到自己的 git 仓库中,并口头告知我(rocrocket)他已经完成了工作。
我如果非常非常信任 bob 的开发能力:
$ cd /home/rocrocket/project
$ git pull /home/bob/myrepo //pull 命令的意思是从远端 git 仓库中取出(git-fetch)修改的代码,然后合并(git-merge)到我
(rocrocket)的项目中去。读者要记住一个小技巧,那就是“git pull .”命令,它和 git merge 的功能是一样的,以后完全可以用
git pull .来代替 git merge 哦!请注意,git-pull 命令有可能会因为/home/bob 的目录权限问题而被拒绝,解决方法是 chmod o+rx/home/bob。
如果我不是很信任 bob 的开发能力:
$ cd /home/rocrocket/project
$ git fetch /home/bob/myrepo master:bobworks //此命令意思是提取出 bob 修改的代码内容,然后放到我(rocrocket)工作目录下的 bobworks 分支中。之所以要放到分支中,而不是 master 中,就是要我先仔仔细细看看 bob 的开发成果,如果我觉得满意,我再merge 到 master 中,如果不满意,我完全可以直接 git branch -D 掉。
$git whatchanged -p master..bobworks //用来查看 bob 都做了什么
$git checkout master //切换到 master 分区
$git pull . bobworks //如果我检查了 bob 的工作后很满意,就可以用 pull 来将 bobworks 分支合并到我的项目中了
$git branch -D bobworks //如果我检查了 bob 的工作后很不满意,就可以用-D 来放弃这个分支就可以了
过了几天,bob 如果想继续帮助我开发,他需要先同步一下我这几天的工作成果,只要在其当初 clone 的 myrepo 目录
下执行 git pull 即可:
#git pull //不用加任何参数,因为当初 clone 的时候,git 已经记住了我(rocrocket)的工作目录,它会直接找到我的目录来取。


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/icefireym/article/details/25313545

智能推荐

halcon与c#联合编程的方法_halcon声成c#解释-程序员宅基地

文章浏览阅读2.5k次,点赞2次,收藏20次。一、VS引用halcondotnet.dll后直接编程但是如果你不是大牛会存在非常严重的内存泄漏问题,极其不推荐这样做。二、用Halcon编好程序后导成C#然后导出.cs为后缀的c#程序,主函数在Action方法里。但是这种方法最然简便,但是偶尔也会在程序编译正确的情况下运行报错。三、用Halcon引擎虽然较上面的办法速度可能相对慢一些,不过稳定性大大提升而且运行速度也还可以。首先先引用这两样东西,它在Halcon安装目录下。例如:E:\Halcon12\bin\dotnet_halcon声成c#解释

element 自定义主题出现样式重复引入问题_element样式引入多次app.css chunk-element-程序员宅基地

文章浏览阅读3.1k次。当自定义主题色的时候按照命令改变主题色,会出现样式重复加载多次问题,看着很恶心人 解决方案去element-ui官网在线设计主题色,下载下来就行https://element.eleme.cn/#/zh-CN/theme/preview ..._element样式引入多次app.css chunk-element

使用GEE(google earth engine)提取某个地区的NDVI值的代码_gee得到一个市的-程序员宅基地

文章浏览阅读1.6w次,点赞22次,收藏173次。其中gz为你导入GEE的矢量文件,L8为landsat的影像,你可以根据自己的要求去获得特定地区的特定卫星的NDVI值。比如说:北京市的哨兵NDVI//定义addNDVI函数,该函数的输入是image,然后对image执行NDVI计算,并将结果命名为ndvi//并将生成的ndvi添加到原有的image中var addNDVI = function(image) { var ndvi..._gee得到一个市的

How to get rid of 'Enter password to unlock your login keyring' in Ubuntu(转)-程序员宅基地

文章浏览阅读121次。http://karuppuswamy.com/wordpress/2010/06/18/enter-password-to-unlock-your-keyring-prompt-in-ubuntu/Ubuntu uses Centralized password management tool called Seahorse. This tool is a front end..._wordpress front end change password

jQuery事件处理概述_jq 再次点击-程序员宅基地

文章浏览阅读1k次。jQuery事件1 概述2 页面载入完毕响应事件2.1 window.onload2.2 $(document).ready()事件3 绑定与反绑定事件监听器3.1 概述3.2 绑定事件3.3 jQuery事件处理函数的好处3.4 反绑定事件3.5 一次性的事件绑定4 事件触发器4.1 trigger触发事件4.2 triggerHandler触发事件4.3 Event Helpers快捷事件5 事件的交互处理5.1 hover:模仿鼠标悬停6 事件对象6.1 使用jQuery事件对象6.2 Javascr_jq 再次点击

android spinner自定义样式,android自定义Spinner下拉菜单(下拉列表框)样式-程序员宅基地

文章浏览阅读963次。在Android中Spinner就是下拉菜单,它相当于HTML中的标签。Android中提供的Spinner Widget下拉菜单已经非常好用了,样式也适用,不过我们还是可以通过定义xml的方式来改变下拉菜单的样式。在layout目录下新建一个xml文件,名字随便(我这里叫myspinner.xml)。在这个文件里面可以定义下拉菜单的样式我们这里采用TextView来实现..._android spinner样式

随便推点

./HelloWorld line 1: syntax error: "(" unexpected问题解决_./kconf/conf: 1: syntax error: "(" unexpected-程序员宅基地

文章浏览阅读1w次。在pc机上编译的程序,linux下执行时出现了这个错误:#./HelloWorld./HelloWorld line 1: syntax error: "(" unexpected这个错误是由于编译程序所使用的编译器是gcc,使用gcc编译的程序可以在pc机上运行而不能在开发板上运行;而要想程序在开发半上运行就需要使用编译器arm-linux-gcc进行编译

POj 3164 Command Network最小树形图 模板题 朱刘算法_最小树形图习题-程序员宅基地

文章浏览阅读129次。Command NetworkAfter a long lasting war on words, a war on arms finally breaks out between littleken’s and KnuthOcean’s kingdoms. A sudden and violent assault by KnuthOcean’s force has rendered a total failure of littleken’s command network. A provisional_最小树形图习题

省市县三级联动获取地址_省市县三级联动获取参保地区划-程序员宅基地

文章浏览阅读726次。1.jsp代码前端传参格式:(type,codeId)type:三种类型(“province” || “city” || “area”)codeId:为选择省的时后自动传入.后台返回JSON数据格式:<%@ page contentType="text/html;charset=UTF-8" language="java" %><html&g_省市县三级联动获取参保地区划

petshop4.0 各个文件的作用-程序员宅基地

文章浏览阅读43次。petshop4.0 各个文件的作用petshop4.0设计说明 (转) 一、项目名称及描述:(实现步骤为:4-3-6-5-2-1)1、WEB=表示层2、BLL=业务逻辑层3、IDAL=数据访问层接口定义4、Model=业务实体5、DALFactory=数据层的抽象工厂(创建反射)6、SQLServerDAL=SQLServer数据访问层 / OracleDAL=Ora...

Could not load dynamic library ‘cudart64_101.dll‘; dlerror: cudart64_101.dll not found_could not load dynamic library 'cudart64_101.dll';-程序员宅基地

文章浏览阅读343次。tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library ‘cudart64_101.dll’; dlerror: cudart64_101.dll not found(在Pycharm上运行tensorflow_gpu报错:dll文件没有找到)我是一个刚入门tensorflow_gpu的小白,在花了好长时间才把anaconda,CUDA10.0,Cudnn,Pycharm202_could not load dynamic library 'cudart64_101.dll'; dlerror: cudart64_101.dll

Vue 腾讯云上传视频 element-ui_elemet ui 腾讯短视频api 上传-程序员宅基地

文章浏览阅读292次,点赞2次,收藏3次。Vue 腾讯云上传视频文件 使用element-ui组件下载 腾讯云包npm i cos-js-sdk-v5 --savetemlpate 部分 <el-upload :on-remove="handleVodRemove" :before-remove="beforeVodRemove" :on-exceed="handleUploadExceed" :file-list="fileList" :on-change="handleChange" acti_elemet ui 腾讯短视频api 上传