实用git指令
实用git指令
本文以软件构造实验一中涉及到的git操作为基础,结合git官方文档总结了一些常用的git指令,以供需要时快速查看。实际工作中我们更多是想要解决眼前问题,比如"我想要克隆一个仓库到本地该怎么做"、"我要将我的代码上传到远程仓库怎么做"、"我要修改远程仓库代码怎么做"这样的问题,而查看一本详细的git指令教程虽然全面详细但是对于解决这些常见问题来说效率实在太低,而且对于一个连指令如何书写的小白来说一次性讲清背后原理实属无用功,所以本文主要是想以应用频率很高的git操作为切入点展开介绍,同时也为已经了解具体操作内涵只是忘记指令的人提供了简要版操作说明,更高效解决问题。
clone
操作目的:
将远程仓库复制克隆到本地指定位置
简要操作说明:
- 打开cmd或git bash,使用cd命令进入想要将仓库clone到的本地文件夹路径
- 使用指令
git clone <仓库的url>
将仓库clone到目标文件夹,使用git clone <仓库的url> 新名字
将仓库clone到目标文件夹并重命名为指定名称。
详细操作说明:
打开cmd或Git Bash,使用cd命令进入想要将仓库clone到的本地文件夹路径:
- cmd: cmd一进入默认在C盘中,如果目的文件夹不在C盘中则需要先进行切换磁盘操作,以切换到D盘为例,直接在cmd中输入
D:
即可完成磁盘转换(见下图) - cmd: 然后使用cd指令进入目的文件夹位置即可(此处以目的文件夹在D->JavaProject->Lab为例)
cd JavaProject\Lab
,注意在cmd中的路径要使用'\'而非'/'(见下图),这样克隆下来的仓库就会自动存储在D/JavaProject/Lab中了
- cmd: (当然,如果你手滑cd后面的路径输入错了但已经进入了错误的位置,也无需关闭cmd重新来过,你可以使用指令
cd..
来退出返回至上一层)
- gitbush: 如果使用gitbush,则在gitbush下直接使用cd指令进入所在文件夹,同样以D->JavaProject->Lab为例,与cmd下路径输入要求不同,使用'/'而非'\',其次就是上来就要有/d表明进入D盘,指令:
cd /d/JavaProject/Lab
- cmd: cmd一进入默认在C盘中,如果目的文件夹不在C盘中则需要先进行切换磁盘操作,以切换到D盘为例,直接在cmd中输入
找到准备clone的仓库的http链接或ssh链接(如果使用ssh链接需要保证已经提前配置好ssh),查找url方法如下图(以github上的一个仓库为例进入仓库首页,点击右方绿色的Code按钮即可查看http或ssh链接,点击链接右方的按钮可自动复制)
复制结束之后,返回cmd或Git Bash,输入指令
git clone <仓库的url>
将仓库clone到目标文件夹,clone成功后就可以在D/JavaProject/Lab下找到名字为仓库名称的文件夹了,这个文件夹中就是仓库中所有的内容了。(下图以cmd操作为例)
- 如果你不想将文件夹的名字是默认的仓库名,第一种办法当然是右键重命名,第二种方法就是使用指令
git clone <仓库的url> 新名字
将仓库clone到目标文件夹并重命名为指定名称,这里我将原名为test的仓库clone下来的文件夹命名为MyTest,这样clone下来的仓库文件夹名字自动设置为MyTest了。
(如果使用上述操作报错了多半是网络原因连不上github,可以多试几次或查找报错解决方案)
- 如果你不想将文件夹的名字是默认的仓库名,第一种办法当然是右键重命名,第二种方法就是使用指令
init & add & commit & push
操作目的:
将本地仓库上传到远程仓库
简要操作说明:
- 打开cmd或Git Bash使用
cd
指令进入本地仓库(也就是存储所有项目文件的那个本地文件夹)所在位置 git init
git add .
提交所有文件;或使用指令git add <file>
提交单个文件git commit -m "<description>"
git remote add <name> <http/ssh链接>
与远程仓库建立链接,<name>处换成此链接名字即可,一般都命名为origingit push <name> master : master
合并分支
详细操作说明:
打开cmd或Git Bash使用
cd
指令进入本地仓库(也就是存储所有项目文件的那个本地文件夹)所在位置- cmd: cmd一进入默认在C盘中,如果目的文件夹不在C盘中则需要先进行切换磁盘操作,以切换到D盘为例,直接在cmd中输入
D:
即可完成磁盘转换(见下图) - cmd: 然后使用cd指令进入目的文件夹位置即可(此处以目的文件夹在D->JavaProject->Lab为例)
cd JavaProject\Lab
,注意在cmd中的路径要使用'\'而非'/'(见下图),这样克隆下来的仓库就会自动存储在D/JavaProject/Lab中了
- cmd: (当然,如果你手滑cd后面的路径输入错了但已经进入了错误的位置,也无需关闭cmd重新来过,你可以使用指令
cd..
来退出返回至上一层)
- gitbush: 如果使用gitbush,则在gitbush下直接使用cd指令进入所在文件夹,同样以D->JavaProject->Lab为例,与cmd下路径输入要求不同,使用'/'而非'\',其次就是上来就要有/d表明进入D盘,指令:
cd /d/JavaProject/Lab
- cmd: cmd一进入默认在C盘中,如果目的文件夹不在C盘中则需要先进行切换磁盘操作,以切换到D盘为例,直接在cmd中输入
输入指令
git init
将原文件夹初始化为git仓库,以本地仓库TEST为例,其所在位置为D:/JavaProject/TEST这里的init操作需要我们进入这个仓库再进行,比如这个TEST仓库中有两个文件(以下在Git Bash下演示,也可以使用cmd)
使用git add类指令指定所需文件进行追踪,一般使用
git add .
):git add -A
:等价于git add -all提交所有变化git add -u
:等价于git add -update提交被修改(modified)和被删除(deleted)的文件,不包括新文件(new)git add .
:提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)的文件,并根据.gitignore文件做过滤git add *
:不会根据.gitignore文件做过滤而是将任何文件都加入git add <file>
:提交单个指定文件<file>
处换成指定文件名称即可
(此步可忽略)(可以使用指令
git status
查看当前文件夹中所有文件状态,如果是红色表示还没被add到暂存区,绿色表示已经add到暂存区)
如果此时删除一个文件"MagicSquare.java"再运行指令git status
则出现
这里仔细阅读可以发现如果是误删了这个文件,那么我们可以使用指令git restore <file>
进行恢复
输入指令
git commit -m "<description>"
将修改从暂存区提交到本地库:<description>
处换位对此次提交的叙述即可,比如可以是"initial commit","second","for fifth commit","add a test"等等,总之就是为了之后查看此次提交时能根据描述想起此次操作信息即可。
连接远程仓库:使用
git remote
指令检查现在已创建好的远程链接,如果是第一次创建则使用该指令将没有返回值,使用指令git remote add <name> <http/ssh链接>
,<name>处换成此链接名字即可,没有要求,自己命名,一般都命名为origin,<http/ssh链接>就换成你想要提交的仓库的http/ssh链接即可,当然如果你想使用ssh链接就需要提前配置好相关设置,但好处是之后无需反复输入用户名和密码,更方便。查看相关链接方法如下图。再使用指令git remote
检查一下是否已经创建好链接,如果创建好则该指令返回origin(或是你刚才的命名)
使用指令git push类将本地库分支推送到远程仓库分支:(按使用频率排序,选择所需指令即可)(如果之前链接使用的是http链接此时提交就需要你输入用户名和密码,如果是ssh链接此时就无需输入)
如果所要提交到的远程仓库分支中的内容包含于本地仓库分支中的内容,那么你直接使用指令
git push <name> <本地分支名>:<远程分支名>
<name>就是之前你自己起的远程连接名,一般是origin。具体指令例如可以是git push origin master:master
该指令可将当前本地仓库的master分支推送到远程仓库master分支中,如果远程仓库没有master分支则会自动创建,你的提交到此为止。(这里我又新创建了一个ssh链接对应的origin1,使用origin1进行上传)点开github就可以在master分支中找到文件了
如果所要提交到的远程仓库分支中的内容不包含于本地仓库分支中的内容使用
git push <name> master:master
指令就会报错,并提示你先pull下来再push,此时你有以下几种选择:
git push -f origin master:master
:不想pull下来,甚至不想要远程分支内的所有内容,只想要把本地的push上去,那么使用强制提交指令git push -f origin master:master
将本地master分支强制提交成为远程仓库的master分支git pull origin master:master
:先提交本地修改git add .
,git commit -m "init"
,再pull下来git pull origin master:master
,如果出现"Please enter a commit message to explain why this merge is necessary"可按esc键同时输入:wq退出或按i键进入insert模式修改最上面黄色选中的信息,选择不修改。
几种省略写法:
git push origin master
:指令git push origin <本地分支名>:<远程分支名>
中远程分支名被省略,则表示将本地分支推送到与之存在追踪关系的远程分支(通常两者同名),如果该远程分支不存在则将会被新创建git push origin :master
:指令git push origin <本地分支名>:<远程分支名>
中本地分支名被省略,则相当于push一个空的本地分支到远程分支,表示删除该远程分支master,等同于指令git push origin --delete master
git push origin
:如果当前分支与远程分支存在追踪关系,则本地分支和远程分支都可以省略,会将当前分支推送到对应分支上,当然如果你这么写系统会提示你把指令写全,如果你每次都是提交到master分支上,可以输入指令git push --set-upstream origin master
只需输一次这个指令,以后就都可以省略写成git push origin
而不会再提示你补全指令了
pull & fetch & merge
操作目的:
拉取远程仓库代码至本地,将远程仓库代码与本地仓库代码合并
简要操作说明(拉取有权限的仓库):
- 打开cmd或Git Bash使用
cd
指令进入pull操作后想要存放的目标文件夹所在位置 git init
:git pull要求必须连接远程仓库git remote add <远程主机名name> <http/ssh链接>
:git pull要求必须连接远程仓库,<name>处换成此链接名字即可,一般都命名为origingit pull <远程主机名name> <远程分支名>:<本地分支名>
:<name>处换成此链接名字即可,一般都命名为origin,pull操作会自动fetch和merge,git pull
=git fetch
+git merge
,如果本地仓库已经修改与远程仓库不同但是不想更新本地仓库与远程保持一致,则需先git add .
,git commit -m "init"
,再pull下来git pull origin master:master
如果出现"Please enter a commit message to explain why this merge is necessary"可按esc键同时输入:wq退出或按i键进入insert模式修改最上面黄色选中的信息,选择不修改。
简要操作说明(拉取无权限的仓库):
(无权限仓库拉取说白了就是clone)
- 打开cmd或git bash,使用cd命令进入想要将仓库拉取到的本地文件夹路径
- 使用指令
git clone <仓库的url>
将仓库clone到目标文件夹,使用git clone <仓库的url> 新名字
将仓库clone到目标文件夹并重命名为指定名称。
实用git指令的更多相关文章
- 第一章 git指令与设置
相关指令: 1.从远程的master分支上创建新的分支,此时新分支内容与master分支内容相同: git checkout master; git branch newbranch; git che ...
- 使用git指令下载github仓库代码(笔记)
通过Git指令下载源码 Git概念说明 三种状态:修改状态.暂存状态和Git仓库 基本的Git工作流程: 在工作目录中修改文件 暂存文件,将文件的快照放入暂存区域 提交更新,找到暂 ...
- 工作中常用Git指令操作
常用Git指令总结 前阵子有几天好不顺,可谓是喝水都呛着,更何况被Git给呛着了,还不轻,哈哈.所以打算总结一下自己在工作使用到Git相关的东西以及和大家探讨使用GIt的心得体会.于是,关于Git的的 ...
- git 指令如何撤销一次merge
在使用git指令时难免会发生错误的merge的情况,那么如何在这种情况下回退到错误发生之前的情况? git reflog 指令显示历史的操作 4457e43 HEAD@{0}: reset: movi ...
- git 指令记录
由于之前一直用svn 用git也是用图形化的工具 还是要了解一下git指令 因为都是版本控制工具 有很多相似之处 所以理解起来也比较轻松 仓库: github上面的项目 工作目录下面的所有文件都不外乎 ...
- git指令总结及常见问题积累与解决方案
git指令总结及常见问题积累与解决方案 git初始化一个项目并且长传到服务器后端步骤: 1.本地文件操作 通过:git init初始化化一个项目 会出现一个隐藏文件 ,可以文件夹属性设置进行查看,此 ...
- git指令-未完待更新
git指令 1. $ git config --global user.name "Your Name" $ git config --global user.email &quo ...
- git 指令笔记
狂躁,太狂躁!!赶上过年,赶上自己的懒癌,12月底就学完的教程直到今天才整理笔记,中途沉默在游戏中..... 只给出Windows下git指令操作,推荐大家去廖雪峰前辈那里学习(百度搜索:廖雪峰的官方 ...
- git指令-添加远程仓库
git指令-添加远程仓库 首先在GitHub上创建属于你自己的远程仓库:例如我创建的远程仓库mybatis用于我最近保存的mybatis代码 目前,在GitHub上的这个learngit仓库还是空的, ...
随机推荐
- 学习heartbeat-03t实现web服务的高可用案例及维护要点
8.Heartbeat实现web服务的高可用案例 8.1部署准备 通过web服务高可用案例来熟悉heatbeat软件的使用,用上面的两台服务器机器名分别为heartbeat-1-130和heartbe ...
- 剑指Offer9——使用双栈模拟队列
剑指Offer9--使用双栈模拟队列 队列Queue是具有FIFO(First in First out)特性的数据结构,栈Stack是具有LIFO(后进先出)特性的数据结构.下面提供一种思路使用双栈 ...
- 4. Git基本工作流程
4. Git基本工作流程 Git工作区域 向仓库中添加文件流程
- HTML5 版的flappy bird
Flappy Bird这款简单的小游戏累计下载量已经超过5000万次,每天收入至少5万美元.然而,2月10日其开发者Dong Nguyen却将Flappy Bird从苹果App Store和Googl ...
- c++实现职责链模式--财务审批
内容: 某物资管理系统中物资采购需要分级审批,主任可以审批1万元及以下的采购单,部门经理可以审批5万元及以下的采购单,副总经理可以审批10万元及以下的采购单,总经理可以审批20万元及以下的采购单,20 ...
- java的内存泄露是如何发生的,如何避免和发现
java的垃圾回收与内存泄露的关系:[新手可忽略不影响继续学习] 马克-to-win:上一节讲了,(i)对象被置成null.(ii)局部对象(无需置成null)当程序运行到右大括号.(iii)匿名对象 ...
- PAT1018 锤子剪刀布
大家应该都会玩"锤子剪刀布"的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入格式: 输入 ...
- js判断输入数字是否是整数,金额、数字
function isIntNum(strNum){//js判断输入数字是否是整数 仅供学习思想 var strCheckNum = strNum+""; if(strCheckN ...
- FastAPI(七十)实战开发《在线课程学习系统》接口开发--留言功能开发
在之前的文章:FastAPI(六十九)实战开发<在线课程学习系统>接口开发--修改密码,这次分享留言功能开发 我们能梳理下对应的逻辑 1.校验用户是否登录 2.校验留言的用户是否存在 3. ...
- Python入门-字符串格式化
一.不推荐使用:%号 #正常按照位置传递参数 print('%s asked %s to do something' % ('egon', 'lili')) #先后顺序不能乱 #字典传递参数 prin ...