git命令行使用大全

       首先啰嗦一下我为什么要建git这个文件夹(假装你们也很想知道),之前一直用的是git命令行操作,用了半年的vscode,突然发现,以前经常用的命令行都忘得差不多了,很多比较基础的东西慢慢印象也不深了,于是我决定重新去学习并且总结一下git相关的知识和git相关的问题及其解决方法(包括不局限于命令行和编辑器中遇到的git问题)。先记录一下自己的学习笔记吧。

零、创建一个git仓库

git init

一、添加文件到仓库

1、使用命令git add 文件全路径,注意,可反复多次使用,添加多个文件;

2、使用命令git commit -m “备注信息”,完成。

二、查看仓库当前的状态

git status:红色提示表示还没有add,绿色提示表示还没有commit

三、查看文件做出了什么修改

git diff:工作区和暂存区的区别

git diff –cached:暂存区和当前分支的区别

四、查看之前提交过的所有历史记录

git log

查看简洁模式信息

git log --pretty=oneline

五、提交版本后退

git reset --hard head^

首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交1094adb...(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。

注:这个意思就是之前提交了A,又提交了B,又提交了C,提交完C后,想回到B版本,就使用此方法。

如果使用git reset -- hard head 表示直接清空当前未提交的。

git reset – hard 版本号:表示返回该版本号。

六、查看所有历史上传版本

git reflog

七、删除当前工作区中的修改

git checkout – 文件名

分两种情况:

一种是文件自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是文件已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态(还是只会还原工作区中的修改)。

八、把暂存区中的存储的撤回到工作区中

git reset head 文件名

九、删除文件

rm 文件名

从版本库中删除文件:git rm 文件名,然后git commit –m “注释信息”

恢复删除的文件:git checkout -- 文件名

git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。但是,当工作区中的内容没有提交到库,被删除后又还原,将不会保留最后一次提交后,工作区中修改的内容。

十、将代码上传(push)到远程的服务器上

git push 服务器的地址 所属分支的名称

1、将远端的服务器地址写成变量名的形式:

git remote add 变量名 远程服务器地址

例:git remote add origin https://github.com/huoqishi/test002.git

提交代码:git push origin 所属分支的名称

2、在push时加上-u参数,就会默认建立本地当期那分支与远程指定分支的关联,下一次push时就不需要输入分支名了,直接输入git push origin即可

十一、将远端服务器的代码下载(pull)/克隆(clone)下

1、pull

需要先创建一个本地的文件夹,并初始化一个仓库,执行 git pull 远端服务器的链接 远端所属分支名称

2、clone

先创建一个本地文件夹,不用初始化仓库,直接执行git clone远端服务器的链接 远端所属分支名称

十二、操作分支

1、创建分支

git branch 分支名

2、查看分支

git branch

3、切换分支

gitcheckout 分支名

4、合并分支

git merge 分支名:git会将指定的分支合并到当前分支

5、删除分支

git branch –d 分支名

6、创建并切换到该分支

git checkout –b 分支名

十三、解决冲突

当两个分支的情况下都对文件做出了修改,在合并的时候,就会发生冲突。通过把git合并失败的文件手动编辑成为我们希望看到的内容,再提交。使用git log –graph命令可以查看分支的合并图。

十四、分支策略

在实际开发中,我们应该按照几个基本的原则进行分支的管理:

1、master分支应该是非常稳定的,也就是用来发布新版本,平时不能在上边干活。平时都在自己的分支上干活,也就是说分支是相对不稳定的,到某个时候,把自己的分支合并到master上。

十五、普通模式和快速模式

默认在合并的时候会使用快速模式,当执行git merge –no-ff –m “注释”的时候,关闭了快速模式。在普通模式中合并,有历史分支,能看出来曾经做过合并;而快速模式(fast forward)合并就看不出曾经做过合并。

十六、bug的修复

代码中经常会出现bug,通常使用的方法就是创建一个分支,在分支上修复bug,然后和master合并,最后删除创建的分支即可。

1、暂时储存当前不提交的代码,(可以在修复完bug的时候恢复)

git stash

2、查看储存的地方

git stash list

3、恢复到之前的编辑状态,但是不删除之前创建的stash

git stash apply

删除stash:git stash drop

4、恢复到之前的编辑状态,并删除stash内容

git stash pop

注:可以多次创建stash,在修复完bug时,可以使用git stash list查看版本,然后使用git stash apply stash@{版本号}恢复当想要的stash保存的状态

十七、强行删除没有被合并过的分支

git branch –D 文件名

十八、查看远程库的信息

git remote

查看远程库的详细信息

git remote –v:显示可以抓取和推送的origin的地址,如果没有推送权限,就看不到push的地址。

十九、创建远程master上的分支到本地

git checkout –b 分支名1 origin/分支名1

二十、多人协作开发模式下

1、首先驶入使用git push origin 分支名 推送自己的修改

2、如果推送失败,则因为远程分支比你的本地内容新,需要先用git pull视图合并

3、如果合并有冲突,就解决冲突,并在本地提交

4、没有冲突或者解决掉冲突后,就使用git push origin 分支名 推送就能成功。

如果girl pull 提示no tracking information,说明本地分支和远程分支的连接关系没有创建,使用命令girl branch --set-upstream-to 分支名 origin/分支名

二十一、标签

1、新建标签

git tag 标签名

2、查看所有标签

git tag

3、默认的标签时打在最新提交的commit上。想要在历史提交的上打标签

git tag 标签名 之前commit的版本号

4、查看标签的详细信息

git show 标签名

5、创建带有说明的标签名

git tag –a 标签名 –m “说明” 之前commit的版本号

6、删除标签

git tag –d 标签名

因为嘻哈UN该敬爱呢的标签都只是存储在本地,不会自动推送到远程,所以打错的标签可以在本地安全删除。

7、推送标签到远程

git push origin 标签名

8、一次把所有的标签名都推送到远程

git push origin –tags

9、删除远程的标签

先删除本地的:git tag –d 标签名

再从远程删除:git pushorigin :refs/tags/标签名

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

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Git)