Git&GitHub之命令行操作

                                    Git&GitHub之命令行操作

 

       Git作为分布式版本控制工具,分支操作是其最大杀器,这点与集中式版本控制工具SVN大不相同,且大部分操作可在本地完成,并不需要联网,除非用到GitHub或码云这些远程库,下面我们就来学习一下这个强大的版本控制工具吧,首先来体验一波命令行的魅力。

 

1、Git的一般结构(这里不包括分支)

 

Git&GitHub之命令行操作

 

2、Git操作的具体流程

 

本地提交

前提:下载并安装好git工具

首先先创建一个项目,并利用Git Bash进入命令行界面。

Git&GitHub之命令行操作

使用命令初始化为git项目:git init

之后会出现一个.git文件夹,说明初始化成功

Git&GitHub之命令行操作

设置一个系统级别的签名,顾名思义,设置一次,以后的项目就不用设置了

需要设置用户名和邮箱,文件信息保存在家目录下:~/.gitconfig

命令:git config --global user.name 用户名

           git config --global user.email 邮箱地址

Git&GitHub之命令行操作

新增一个文件,并从工作区添加到缓存区中

命令:git add [文件名]

Git&GitHub之命令行操作

查看文件的状态可以用以下命令,绿色则代表已经在缓存区了,红色则还没add添加,没显示的话,那就是在本地库中了。

命令:git status

Git&GitHub之命令行操作

再把文件从缓存区添加到本地库,其中-m参数所带的提交信息是必须

命令:git commit -m "提交信息" [文件名]

Git&GitHub之命令行操作

以上操作就是把文件提交到了本地库了

 

远程提交

先去GitHub创建一个项目

Git&GitHub之命令行操作

 

地址分为两种方式:

第一种:HTTPS:提交时需要输入GitHub的用户名和密码

第二种:SSH:在提交时需提前在本机生成一个**,然后去GitHub上面绑定,以后的提交都不需要做任何操作。**生成的地址在家目录下:~/.ssh/id_rsa.pub文件

SSH生成**的命令:ssh-****** -t rsa -C [邮箱名]

Git&GitHub之命令行操作

Git&GitHub之命令行操作

位置:头像->setting->SSH and GPG keys->New SSH key,把**粘贴进去就行

Git&GitHub之命令行操作

回到git bash先给远程地址名创建别名,因为一直用那么长的地址提交很是不方便

命令:git remote add [别名] [远程地址名]

Git&GitHub之命令行操作

这时就可以正式推送给远程库了

命令:git push [远程地址别名] [本地分支名]

Git&GitHub之命令行操作

Git&GitHub之命令行操作

以上的操作就完成了项目的远程提交了

 

远程拉取

远程拉取分为两种:

第一种:pull

命令:git pull [远程地址别名] [远程分支名]

pull拉取需要本地已经创建好了仓库,然后去拉取远程的内容,相当于fetchmerge的综合操作。一般用于拉取自己已经push过的项目

 

第二种:clone

命令:git clone [远程地址名]

clone拉取不需要本地的任何操作,拉取下来的同时也会同时初始化完成。一般用于去github拉取别人的项目

下面就演示下git clone,以github上一个优秀项目为例,git pull同理

 

Git&GitHub之命令行操作

开始clone

 

Git&GitHub之命令行操作

clone完成

Git&GitHub之命令行操作

 

Git的版本切换

想要切换版本,必须要查看历史版本

命令:git reflog 

或git log、git log --pretty=oneline、git log --oneline

Git&GitHub之命令行操作

切换版本(前面第一列的值代表局部索引值,唯一表示该版本)

命令:git reset --hard [局部索引值]

参数:--hard:本地库移动HEAD指针,重置暂存区,重置工作区(三个区都切换了版本)

          --mixed:本地库移动HEAD指针,重置暂存区(两个区切换了版本,不加参数就默认mixed)

          --soft:本地库移动HEAD指针,重置暂存区(仅一个区切换了版本)

切换到第二次提交的版本,局部索引值:21e0672

Git&GitHub之命令行操作

 

Git的分支管理

Git的分支图

Git&GitHub之命令行操作

创建分支:git branch [分支名]

Git&GitHub之命令行操作

查看本地分支:git branch -v

查看本地和远程分支:git branch -v -a

Git&GitHub之命令行操作

切换分支:git checkout [分支名]

Git&GitHub之命令行操作

在新的分支上增加点内容,再合并(记得add并commit才算新增内容到本地库)

Git&GitHub之命令行操作

合并分支:git merge [有新内容分支名](前提是已经切换到被合并的分支)

Git&GitHub之命令行操作

冲突:若在hot_fix修改某一行数据时,master也恰好在修改同一行数据,在合并merge时就会发生冲突,这时的冲突git是无法自动帮我们解决的,需要手动解决冲突,该保留哪些数据,要人为决定

解决冲突步骤:

第一步:编辑冲突文件,删掉发生冲突后自动增加的特殊符号,并主观保留hot_fix还是master修改后的内容,保存退出。

第二步:git add [文件名]

第三步:git commit -m "提交信息"   (这时不能带文件名,否则会发生错误)

 

总结:以上就是git命令行的一些常规操作,如果需要了解IntelliJ下的git操作,可以参考我的另外一篇博文:https://blog.****.net/weixin_38802061/article/details/89789007