什么?作为程序员你都工作了还不会用Git(二)

简介: Git是一个免费的开源 分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有内容。Git易于学习, 占地面积小,具有闪电般的快速性能。它具有Subversion,CVS,Perforce和ClearCase之类的SCM工具,具有廉价的本地分支,方便的暂存区域和 多个工作流等功能。--《Git官网》

一、git管理文件和代码的使用


Git是一个免费的开源 分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有内容。Git易于学习, 占地面积小,具有闪电般的快速性能。它具有Subversion,CVS,Perforce和ClearCase之类的SCM工具,具有廉价的本地分支,方便的暂存区域和 多个工作流等功能。--《Git官网


依稀还记得当初写论文的时候,保存的论文文档是这样子的,代码文件夹是这样的。根据需求删除或修改一些东西后另存为另一个文件,过一段时间后,想找回被删除的文字/代码,但是不知道保存在哪个文件里去了,想保留最新的一个把其他都删除掉,又怕哪天会用上不敢删除,真的烦人,这个时候就轮到我们强大的Git出场了,顺便记录一下自己从廖雪峰的官方网站Git教程的学习。


二、我工作中常用的指令(二)


1、添加远程库


第一步:在git下创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsaid_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:


$ssh-keygen -t rsa -C "youremail@example.com"


你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。


如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsaid_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。


第二步:登陆GitHub,打开“Settings”,点“SSH and GPG keys”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容,点“Add Key”,你就应该看到已经添加的Key:


1.png


第二步:创建一个GitHub账号,添加一个空的仓库。首先,登陆GitHub,然后,在右上角找到“new repository”按钮,创建一个新的仓库:在Repository name填入仓库名,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库:


2.png


目前,在GitHub上的这个仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。


现在,我们根据GitHub的提示,在本地的仓库下运行命令:git remote add origin + ssh链接


使用命令git push -u origin master将内容推送上去。


3.png


注意:检查git的配置文件的邮箱还有用户名还有URL是否正确。才能进行下一步操作。

要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;关联后,使用命令git push -u origin master第一次推送master分支的所有内容;此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改


2、从远程库克隆


要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone+ ssh链接命令克隆。


Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。


3、创建与分支(Git鼓励大量使用分支)


查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>

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

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

删除分支:git branch -d <name>


4、解决冲突


当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。用git log --graph命令可以看到分支合并图。


5、分支管理策略


准备合并dev分支,请注意--no-ff参数,表示禁用Fast forwardgit merge --no-ff -m "merge with no-ff" dev 因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。


6、bug分支


修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。


7、feature分支


开发一个新feature,最好新建一个分支;如果要丢弃一 个没有被合并过的分支,可以通过git branch -D <name>强行删除。


8、多人协作


查看远程库信息,使用git remote -v


本地新建的分支如果不推送到远程,对其他人就是不可见的;


从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;


在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;


建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name


从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。


9、创建标签


命令git tag <tagname>用于新建一个标签,默认为HEAD,也可以指定一个commit id


命令git tag -a <tagname> -m "blablabla..."可以指定标签信息;


命令git tag可以查看所有标签


用命令git show <tagname>可以看到说明文字


注意:标签总是和某个commit挂钩。如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签。


10、操作标签


命令git push origin <tagname>可以推送一个本地标签;


命令git push origin --tags可以推送全部未推送过的本地标签;


命令git tag -d <tagname>可以删除一个本地标签;


命令git push origin :refs/tags/<tagname>可以删除一个远程标签。


最后总结一下Git的常用命令:


  • mkdir XX (创建一个空目录 XX指目录名)
  • pwd 显示当前目录的路径。
  • git init 把当前的目录变成可以管理的git仓库,生成隐藏.git文件。
  • git add XX 把xx文件添加到暂存区去。
  • git commit –m “XX” 提交文件 XX是提交的注释。
  • git status 查看仓库状态
  • git diff XX 查看XX文件修改了那些内容
  • git log 查看历史记录
  • git reset --hard HEAD^或者git reset --hard HEAD~
    回退到上一个版本(使用git reset –hard commit_id回退到commit_id的指定版本 )
  • cat XX 查看XX文件内容
  • git reflog 查看历史记录的版本号id
  • git checkout -- XX 把XX文件在工作区的修改全部撤销。
  • git rm XX 删除XX文件
  • git remote add origin + SSH链接关联一个远程库
  • git push –u(第一次要用-u 以后不需要) origin master 把当前master分支推送到远程库
  • git clone + SSH链接 从远程库中克隆
  • git checkout –b dev 创建dev分支 并切换到dev分支上
  • git branch 查看当前所有的分支
  • git checkout master 切换回master分支
  • git merge dev 在当前的分支上合并dev分支
  • git branch –d dev 删除dev分支
  • git branch name 创建分支
  • git fecth 手动拉取远程仓库更新的信息
  • git stash 把当前的工作隐藏起来 等以后恢复现场后继续工作
  • git stash list 查看所有被隐藏的文件列表
  • git stash apply 恢复被隐藏的文件,但是内容不删除
  • git stash drop 删除文件
  • git stash pop 恢复文件的同时 也删除文件
  • git remote 查看远程库的信息
  • git remote –v 查看远程库的详细信息
  • git push -u origin/master Git将会强制提交到master分支上
  • git --amend 简单地来说,可以理解成对最后一次提交做修正。<前提是当前最后一次提交没有merge>


三、参考文献


  1. Git教程 - 廖雪峰的官方网站


https://www.liaoxuefeng.com/wiki/896043488029600

目录
相关文章
|
6月前
|
程序员 开发工具 git
好程序员Git入门到精通教程
本课程主要通过命令行和idea来介绍Git的安装、仓库创建、工作流、远程仓库、克隆仓库、标签管理和分支管理等Git的主要内容。 另外关于GitHub的使用介绍也有完整的说明和使用,接轨生产环境使用方式。
41 1
好程序员Git入门到精通教程
|
6月前
|
程序员 开发工具 git
【程序员英语 代码提交】C++工程师的代码提交艺术:git commit 时 精确表达与最佳实践
【程序员英语 代码提交】C++工程师的代码提交艺术:git commit 时 精确表达与最佳实践
179 1
|
6月前
|
存储 程序员 开发工具
程序员的20大Git面试问题及答案
程序员的20大Git面试问题及答案
|
安全 程序员 开发工具
代码版本管理笔记 | Python 程序员也应该会的 Git 分支操作
代码版本管理笔记 | Python 程序员也应该会的 Git 分支操作
188 0
|
数据采集 安全 JavaScript
代码版本管理笔记 | Python 程序员也应该会的 Git 进阶操作
代码版本管理笔记 | Python 程序员也应该会的 Git 进阶操作
168 0
|
数据采集 缓存 安全
代码版本管理笔记 | Python 程序员也应该会的 Git 基础操作
代码版本管理笔记 | Python 程序员也应该会的 Git 基础操作
|
缓存 安全 程序员
程序员都需要知道的Git。
程序员必须会的技能哦,快来看看吧。
164 1
程序员都需要知道的Git。
|
前端开发 数据可视化 程序员
超详细的前端程序员git指北
超详细的前端程序员git指北 git是团队开发必备工具之一,本期教程我们从一个开发人员开发新功能,然后合并到主分支上的一整个流程进行演示讲解,而不是仅仅告诉你这个命令的作用是什么,区别是什么,毕竟程序员始终得贯穿“学以致用”这条硬道理,最后再对不同的常见命令及逆行讲解。
176 0
|
开发工具 git
在实际工作开发中非常实用的几个 git 命令(二)
在实际工作开发中非常实用的几个 git 命令
在实际工作开发中非常实用的几个 git 命令(二)
|
前端开发 开发工具 git
在实际工作开发中非常实用的几个 git 命令(一)
在实际工作开发中非常实用的几个 git 命令
在实际工作开发中非常实用的几个 git 命令(一)