程序员能用一年的git技能整理

用git有一年了,下面是我这一年来的git使用总结,覆盖了日常使用中绝大多数的场景。嗯,至少是够用一年了,整理出来分享给大家,不明白的地方可以回复交流。

创建和使用git ssh key

首先设置git的user name和email:


1

2

3

1

2git config --global user.name "xxx"

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

查看git配置:


1

1git config --list

然后生成SHH密匙:

查看是否已经有了ssh密钥:


1

1cd ~/.ssh

如果没有密钥则不会有此文件夹,有则备份删除

生存密钥:


1

1ssh-keygen -t rsa -C "[email protected]"

按3个回车,密码为空这里一般不使用密钥。

最后得到了两个文件:id_rsa和id_rsa.pub

注意:密匙生成就不要改了,如果已经生成到~/.ssh文件夹下去找。

git变更项目地址


1

2

3

1

2git remote set-url origin git@192.168.6.70:res_dev_group/test.git

git remote -v

查看某个文件的修改历史


1

2

3

4

1

2git log --pretty=oneline 文件名 # 显示修改历史

git show 356f6def9d3fb7f3b9032ff5aa4b9110d4cca87e # 查看更改

git push 时报错 warning: push.default is unset;

‘matching’参数是 Git 1.x 的默认行为,其意是如果你执行 git push 但没有指定分支,它将 push 所有你本地的分支到远程仓库中对应匹配的分支。而 Git 2.x 默认的是 simple,意味着执行 git push 没有指定分支时,只有当前分支会被 push 到你使用 git pull 获取的代码。

根据提示,修改git push的行为:


1

1git config --global push.default matching

再次执行git push 得到解决。

git submodule的使用拉子项目代码

开发过程中,经常会有一些通用的部分希望抽取出来做成一个公共库来提供给别的工程来使用,而公共代码库的版本管理是个麻烦的事情。今天无意中发现了git的git submodule命令,之前的问题迎刃而解了。

1.添加

为当前工程添加submodule,命令如下:

1git submodule add 仓库地址 路径

其中,仓库地址是指子模块仓库地址,路径指将子模块放置在当前工程下的路径。

注意:路径不能以 / 结尾(会造成修改不生效)、不能是现有工程已有的目录(不能順利 Clone)

命令执行完成,会在当前工程根路径下生成一个名为“.gitmodules”的文件,其中记录了子模块的信息。添加完成以后,再将子模块所在的文件夹添加到工程中即可。

2.删除

submodule的删除稍微麻烦点:首先,要在“.gitmodules”文件中删除相应配置信息。然后,执行git rm –cached命令将子模块所在的文件从git中删除。

下载的工程带有submodule

当使用git clone下来的工程中带有submodule时,初始的时候,submodule的内容并不会自动下载下来的,此时,只需执行如下命令:

1git submodule update --init --recursive

即可将子模块内容下载下来后工程才不会缺少相应的文件。

git add文件取消

在git的一般使用中,如果发现错误的将不想提交的文件add进入index之后,想回退取消,则可以使用命令:git reset HEAD…,同时git add完毕之后,git也会做相应的提示。


1

http://blog.csdn.net/yaoming168/article/details/38777763

git删除文件:

删除文件跟踪并且删除文件系统中的文件file1git rm file1

提交刚才的删除动作,之后git不再管理该文件git commit

删除文件跟踪但不删除文件系统中的文件file1git rm –cached file1

提交刚才的删除动作,之后git不再管理该文件。但是文件系统中还是有file1。git commit

版本回退

版本回退用于线上系统出现问题后恢复旧版本的操作。

回退到的版本git reset –hard 248cba8e77231601d1189e3576dc096c8986ae5

回退的是所有文件,如果后悔回退可以git pull就可以了。

历史版本对比

查看日志git log

查看某一历史版本的提交内容git show 4ebd4bbc3ed321d01484a4ed206f18ce2ebde5ca,这里能看到版本的详细修改代码。

对比不同版本git diff c0f28a2ec490236caa13dec0e8ea826583b49b7a 2e476412c34a63b213b735e5a6d90cd05b014c33

http://blog.csdn.net/lxlzhn/article/details/9356473

分支的意义与管理

创建分支可以避免提交代码后对主分支的影响,同时也使你有了相对独立的开发环境。分支具有很重要的意义。

创建并切换分支,提交代码后才能在其它机器拉分支代码git checkout -b new_branch

查看当前分支git branch

切换到master分支git checkout master

合并分支到当前分支git merge new_branch,合并分支的操作是从new_branch合并到master分支,当前环境在master分支。

删除分支git branch -d new_branch

git冲突文件编辑

冲突文件冲突的地方如下面这样


1

2

3

4

5

6

7

8

9

10

11

12

13

1

2

3

4

5

6

7a123

<<<<<<< HEAD

b789

=======

b45678910

>>>>>>> 6853e5ff961e684d3a6c02d4d06183b5ff330dcc

c

冲突标记<<<<<<< (7个<)与=======之间的内容是我的修改,=======与>>>>>>>之间的内容是别人的修改。

此时,还没有任何其它垃圾文件产生。

你需要把代码合并好后重新走一遍代码提交流程就好了。

不顺利的代码提交流程

在git push后出现错误可能是因为其他人提交了代码,而使你的本地代码库版本不是最新。

这时你需要先git pull代码后,检查是否有文件冲突。

没有文件冲突的话需要重新走一遍代码提交流程add —> commit —> push。

解决文件冲突在后面说。

git顺利的提交代码流程

查看修改的文件git status;

为了谨慎检查一下代码git diff;

添加修改的文件git add dirname1/filename1.py dirname2/filenam2.py,新加的文件也是直接add就好了;

添加修改的日志git commit -m “fixed:修改了上传文件的逻辑”;

提交代码git push,如果提交失败的可能原因是本地代码库版本不是最新。

理解github的pull request

有一个仓库,叫Repo A。你如果要往里贡献代码,首先要Fork这个Repo,于是在你的Github账号下有了一个Repo A2,。然后你在这个A2下工作,Commit,push等。然后你希望原始仓库Repo A合并你的工作,你可以在Github上发起一个Pull Request,意思是请求Repo A的所有者从你的A2合并分支。如果被审核通过并正式合并,这样你就为项目A做贡献了。


1

http://zhidao.baidu.com/question/1669154493305991627.html

一些错误处理


1

2

3

4

5

6

“pathspec ‘branch’ did not match any file(s) known to git.”错误

1

2

3git checkout master

git pull

git checkout new_branch

使用git提交比较大的文件的时候可能会出现这个错误


1

2

3

4

error: RPC failed; result=22, HTTP code = 411

fatal: The remote end hung up unexpectedly

fatal: The remote end hung up unexpectedly

Everything up-to-date

这样的话首先改一下git的传输字节限制


1

1git config http.postBuffer 524288000

然后这时候在传输或许会出现另一个错误


1

2

3

4

error: RPC failed; result=22, HTTP code = 413

fatal: The remote end hung up unexpectedly

fatal: The remote end hung up unexpectedly

Everything up-to-date

这两个错误看上去相似,一个是411,一个是413

下面这个错误添加一下密钥就可以了

首先key-keygen 生成密钥

然后把生成的密钥复制到git中自己的账号下的相应位置


1

2

1git push ssh:

//192.168.64.250/eccp.git branch

推荐阅读:

资深程序员编程经验分享

程序员的几个重要成长阶段

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-12 06:57:28

程序员能用一年的git技能整理的相关文章

程序员必须掌握的6种软技能

程序员必须掌握的6种软技能 如果你想要开启作为 web 开发人员的职业生涯,那么你需要涉及的不仅仅是知道如何写代码. 有一些通用的软技能几乎可用于每个领域——包括技术行业. 成为软件开发人员涉及的不仅仅是编写代码.自从我开始我的第一份作为软件开发人员的工作之后,我很快就知道了这一点.如果你想要在这个领域茁壮成长的话,那么你需要学习“特定的技能系列”. 你看,每一家公司都有一个大局.除了写代码,你需要利用其他技能,使自己更有影响力,从而赚取更多的 money. 在我作为一名开发人员的任职期间,我学

程序员应该具备的11项基本技能

程序员应该具备的11项基本技能2011-03-14 10:56 陈皓 伯乐在线 字号:T | T软件开发是一个跨度很大的技术工作,在语言方面,有C.C++.Java.Ruby等等等等;在环境方面,又分嵌入式.桌面系统.企业级.WEB.基础系统,或是科学研究.但是,不管是什么的情况,总是有一些通用的基本职业技能.AD:2013云计算架构师峰会课程资料下载 这些最基本的职业技能通常决定了一个程序员的级别,能否用好这些技能,直接关系到了程序员的职业生涯.很多程序新手也是因为缺少.达不到或是不熟悉在这些

《程序员的自我修养》系列技术文章整理收藏

整理的一些程序员修炼方面的文章,与大家共勉,有些系列感觉还是很不错的,读来颇受益,一下就是收藏的文章,希望大家喜欢 1思维改变生活:不需要经历也能明白 2思维改变生活:亲身经历了就一定能明白吗? 3思维改变生活:很多事情亲身经历之后才会明白 4工作:不管你愿不愿意,你都要改变 5Doodle:让眼睛一直注视着你的鼠标 6抗干扰的秘诀:分类.整理与专注 7心智模式:认识你自己 8心智模式:如何面对逆境? 9心智模式:心智模式成熟的标志 10心智模式:什么是心智模式? 11心智模式:如何改善我们的心

[翻译]程序员需要掌握的6项相关技能

开发者必须会写程序,这是显而易见的.然而,如果能够拥有一个更广泛的“软技能”和技术组合,肯定不会给你带来伤害.有时,开发者只能在完成与自己核心技能相关的任务时才会真正发挥作用,但更多时候会在开发者产生的代码要编写被很多其它部门的人员使用(或者会被使用)的代码时有效. 为此,作为程序员和博主的Radek Pazdera为那些希望自己工作能够带来更多价值的开发者列出了一个清单,包含了那些非常重要的相关技能. 设计是关键 无论你是一个自由职业者或者初创公司的雇员,在今天的IT市场中,那些有能力开发有着

Java程序员必会的13种热门技能

一个程序员的受欢迎程度,要经过很多个维度的衡量,特整理了招聘人员.CTO.其他高层执行人员认为必须具备的技术,战略和软技能,找出今年最抢手的开发技能,供大家参考: 1.Java 2016年,开发人员掌握Java总不会错.Java能力是目前为止被高层执行人员和招聘人员誉为最频繁的追捧技能.Java已被证明是当今市场中高度可移植和宝贵的技能. 2.大数据 大数据相较于去年继续扩大,而且在这几年里也没有放缓的迹象.开发人员必须有全面的(商业智能)和分析产品,机器学习工具和其他可以转移.存储和汇总大量数

阿里程序员的2019Android年终盘点,必备技能知识点,程序员必须收藏

临近年末,回顾总结2019,很多从事Android开发的朋友仍然遇到了很多困难,无法实现突破. 本文旨在通过以下知识点总结 希望能帮助上述陷入移动开发困境的朋友.所以接下来本篇文章主要介绍 Android 开发中的部分知识点,本文节选自阿里巴巴开发手册,下载地址.文末还有 高级架构技术进阶脑图.Android开发面试专题资料,高级进阶架构资源 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习,通过阅读本篇文章,您将收获以下内容: 一.Java 语言规范二.

程序员必须知道的几个Git代码托管平台

说到Git代码托管平台,首先推荐的是GitHub,好多好的开源项目都来自GitHub,但是GitHub只能新建公开的Git仓库,私有 仓库要收费,如果你做的是一个开源项目,可以首选GitHub.下面推荐几个比较好的Git代码托管平台,这里我不做过多的说明和评价,也好让大家多看 看,比较一下,找到自己的"真爱". 1.GitHub 关于GItHub相信大家都有耳闻,我就不详细介绍了.GitHub地址:https://github.com/,其首页如图: 2.Gitlab 对于有些人,提到

【转】程序员必须知道的几个Git代码托管平台

 一.VS2013中克隆远程Git仓库和SSH的配置 1.VS2013中克隆远程项目  首先感谢园友的评论和补充,今日又仔细看了一下,VS2013中是可以克隆项目的,只是我一直用的GitHub来克隆的,所以没有注意到.我们打开VS2013,切换到团队资源管理器,如图: 点击连接到团队项目...,会看到如下图界面: 点击克隆,输入远程Git地址,然后点击克隆按钮,就会将远程仓库的项目克隆到本地,路径为下面文本框中的地址,我们也可以点击后面的...按钮进行修改或者手动输入. 2.SSH的配置 如果安

黑马程序员 1、C语言32个关键字整理分类

Java培训.Android培训.IOS培训..Net培训.期待与您交流! C语言一共有32个关键字 一.数据类型关键字(共20个) A.基本数据类型(5个)void :声明函数无返回值或无参数,声明无类型指针,显式丢弃运算结果char :字符型类型数据,属于整型数据的一种int :整型数据,通常为编译器指定的机器字长float :单精度浮点型数据,属于浮点数据的一种double :双精度浮点型数据,属于浮点数据的一种 B .类型修饰关键字(4个)short :修饰int,短整型数据,可省略被修