实用git指令
本文以软件构造实验一中涉及到的git操作为基础,结合git官方文档总结了一些常用的git指令,以供需要时快速查看。实际工作中我们更多是想要解决眼前问题,比如"我想要克隆一个仓库到本地该怎么做"、"我要将我的代码上传到远程仓库怎么做"、"我要修改远程仓库代码怎么做"这样的问题,而查看一本详细的git指令教程虽然全面详细但是对于解决这些常见问题来说效率实在太低,而且对于一个连指令如何书写的小白来说一次性讲清背后原理实属无用功,所以本文主要是想以应用频率很高的git操作为切入点展开介绍,同时也为已经了解具体操作内涵只是忘记指令的人提供了简要版操作说明,更高效解决问题。
clone
操作目的:
简要操作说明:
打开cmd或git bash,使用cd命令进入想要将仓库clone到的本地文件夹路径
使用指令将仓库clone到目标文件夹,使用 将仓库clone到目标文件夹并重命名为指定名称。
详细操作说明:
cmd: cmd一进入默认在C盘中,如果目的文件夹不在C盘中则需要先进行切换磁盘操作,以切换到D盘为例,直接在cmd中输入 即可完成磁盘转换(见下图)
cmd: 然后使用cd指令进入目的文件夹位置即可(此处以目的文件夹在D->JavaProject->Lab为例),注意在cmd中的路径要使用'\'而非'/'(见下图),这样克隆下来的仓库就会自动存储在D/JavaProject/Lab中了
cmd: (当然,如果你手滑cd后面的路径输入错了但已经进入了错误的位置,也无需关闭cmd重新来过,你可以使用指令 来退出返回至上一层)
gitbush: 如果使用gitbush,则在gitbush下直接使用cd指令进入所在文件夹,同样以D->JavaProject->Lab为例,与cmd下路径输入要求不同,使用'/'而非'\',其次就是上来就要有/d表明进入D盘,指令:
如果你不想将文件夹的名字是默认的仓库名,第一种办法当然是
右键重命名,第二种方法就是使用指令 将仓库clone到目标文件夹并重命名为指定名称,这里我将原名为test的仓库clone下来的文件夹命名为MyTest,这样clone下来的仓库文件夹名字自动设置为MyTest了。
打开cmd或Git Bash,使用cd命令进入想要将仓库clone到的本地文件夹路径:
(如果使用上述操作报错了多半是网络原因连不上github,可以多试几次或查找报错解决方案)
init & add & commit & push
操作目的:
简要操作说明:
打开cmd或Git Bash使用指令进入本地仓库(也就是存储所有项目文件的那个本地文件夹)所在位置
提交所有文件;或使用指令提交单个文件
与远程仓库建立链接,<name>处换成此链接名字即可,一般都命名为origin
合并分支
详细操作说明:
cmd: cmd一进入默认在C盘中,如果目的文件夹不在C盘中则需要先进行切换磁盘操作,以切换到D盘为例,直接在cmd中输入 即可完成磁盘转换(见下图)
cmd: 然后使用cd指令进入目的文件夹位置即可(此处以目的文件夹在D->JavaProject->Lab为例),注意在cmd中的路径要使用'\'而非'/'(见下图),这样克隆下来的仓库就会自动存储在D/JavaProject/Lab中了
cmd: (当然,如果你手滑cd后面的路径输入错了但已经进入了错误的位置,也无需关闭cmd重新来过,你可以使用指令 来退出返回至上一层)
gitbush: 如果使用gitbush,则在gitbush下直接使用cd指令进入所在文件夹,同样以D->JavaProject->Lab为例,与cmd下路径输入要求不同,使用'/'而非'\',其次就是上来就要有/d表明进入D盘,指令:
git add类指令指定所需文件进行追踪,一般使用):
:等价于
git add -all提交所有变化
:等价于git add -update提交被修改(modified)和被删除(deleted)的文件,不包括新文件(new)
:提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)的文件,并根据.gitignore文件做过滤
:不会根据.gitignore文件做过滤而是将任何文件都加入
:提交单个指定文件处换成指定文件名称即可
如果此时删除一个文件"MagicSquare.java"再运行指令则出现
这里仔细阅读可以发现如果是误删了这个文件,那么我们可以使用指令进行恢复"initial commit","second","for fifth commit","add a test"等等,总之就是为了之后查看此次提交时能根据描述想起此次操作信息即可。
origin,<http/ssh链接>就换成你想要提交的仓库的http/ssh链接即可,当然如果你想使用ssh链接就需要提前配置好相关设置,但好处是之后无需反复输入用户名和密码,更方便。查看相关链接方法如下图。再使用指令检查一下是否已经创建好链接,如果创建好则该指令返回origin(或是你刚才的命名)
git push类将本地库分支推送到远程仓库分支:(按使用频率排序,选择所需指令即可)(如果之前链接使用的是http链接此时提交就需要你输入用户名和密码,如果是ssh链接此时就无需输入)
:不想pull下来,甚至不想要远程分支内的所有内容,只想要把本地的push上去,那么使用强制提交指令将本地master分支强制提交成为远程仓库的master分支
:先提交本地修改,,再pull下来,如果出现"Please enter a commit message to explain why this merge is necessary"可按esc键同时输入:wq退出或按i键进入insert模式修改最上面黄色选中的信息,选择不修改。
-
:指令中远程分支名被省略,则表示将本地分支推送到与之存在追踪关系的远程分支(通常两者同名),如果该远程分支不存在则将会被新创建
:指令中本地分支名被省略,则相当于push一个空的本地分支到远程分支,表示删除该远程分支master,等同于指令
:如果当前分支与远程分支存在追踪关系,则本地分支和远程分支都可以省略,会将当前分支推送到对应分支上,当然如果你这么写系统会提示你把指令写全,如果你每次都是提交到master分支上,可以输入指令只需输一次这个指令,以后就都可以省略写成而不会再提示你补全指令了
打开cmd或Git Bash使用指令进入本地仓库(也就是存储所有项目文件的那个本地文件夹)所在位置
pull & fetch & merge
操作目的:
拉取远程仓库代码至本地,将远程仓库代码与本地仓库代码合并
简要操作说明(拉取有权限的仓库):
打开cmd或Git Bash使用指令进入pull操作后想要存放的目标文件夹所在位置
:git pull要求必须连接远程仓库
:git pull要求必须连接远程仓库,<name>处换成此链接名字即可,一般都命名为origin
:<name>处换成此链接名字即可,一般都命名为origin,pull操作会自动fetch和merge, = +,如果本地仓库已经修改与远程仓库不同但是不想更新本地仓库与远程保持一致,则需先,,再pull下来如果出现"Please enter a commit message to explain why this merge is necessary"可按esc键同时输入:wq退出或按i键进入insert模式修改最上面黄色选中的信息,选择不修改。
简要操作说明(拉取无权限的仓库):
(无权限仓库拉取说白了就是clone)
打开cmd或git bash,使用cd命令进入想要将仓库拉取到的本地文件夹路径
使用指令将仓库clone到目标文件夹,使用 将仓库clone到目标文件夹并重命名为指定名称。