一、新建github账号并配置SSH_Key
1.1 访问github网站https://github.com,注册并登录
我已经有账号了就不演示了
注册并登录账号.png1.2 编辑自己信息(看心情不想编辑也行😄)
编辑个人信息.jpeg1.3 配置key
首先,点击左侧的SSH and GPG key
,然后填写名称和key
但是怎么获取key呢,打开终端输入
cat ~/.ssh/id_rsa.pub
添加key
复制获取到的本地SSH_key并输入
添加key配置成功
添加key成功
保存成功已备后用
二、在github新建仓库(repository)
2.1 首先我们进入github个人首页
新建仓库2.2 输入仓库相关信息
新建仓库2.3 熟悉的页面出现了😄
新建仓库成功三、克隆到本地
3.1 首先我们选择一个位置并用终端进入该路径,我是放到桌面的一个文件夹中,文件夹的名字是firstGitRepo
通过终端访问firstGitRepo
文件夹
命令为
cd /Users/jizhigang/Desktop/firstGitRepo (文件夹路径)
文件夹访问
3.2 将github仓库克隆(clone)到本地(local)
首先我们打开新建仓库的首页并点击clone or download
按钮并复制SSH地址
克隆仓库又两种方式,一种是https的方式我们暂时不采用,有兴趣的可以研究一下,另一种就是我们采用的SSH方式,前面我们配置的key也是SSH才需要的,https不需要这个key
然后执行命令
git clone git@github.com:jizhigang/firstRepository.git (仓库的SSH地址)
如果我们没有配置前面说到的key的话可能出现这种情况
没有配置key
这个时候我们可以回去上面配置key
克隆成功我们打开firstGitRepo
文件夹可以看到一个文件夹,文件夹名字就是我们第一个仓库的名字firstRepository
打开文件夹可以看到markDown文件README.md
克隆成功
四、分支管理与数据操作
首先我们介绍一下git的几个关键词“工作区”、“暂存区(stage\index)”、“HEAD”、“分支”、“分支”
- 工作区就是本地文件夹
- 暂存区保存需要提交到版本库的文件(改动)
- HEAD是一个指针,指向当前分支
- 分支
4.1 新建分支
我们进入仓库文件夹firstRepository
执行命令
git branch dev(分支名称)
然后我们可以看一下当前分支,执行命令
git branch
可以看到我们新建的分支dev和当前工作的分支master
查看分支
我们切换到新建的dev分支
git checkout dev
切换分支
我们再次查看当前工作分支
git branch
可以看到当前工作分支已经切换到了dev
切换分支成功
现在的分支dev虽然创建成功了,但是仍然在本地,并没有上传到github
可以看到github上的
firstRepository
仓库中只有一个master
分支,并没有新建的dev
分支
下面我们将本地新建的分支推到服务器上
git push -u origin dev(新建分支名称)
可以看到分支推到远程服务器成功
本地分支推到远程服务器4.2 文件提交
向firstRepository
文件夹中添加一张图片
执行命令
git add . //添加到暂存区
git commit -m "dele a pic" -a //添加当前分支
git push -u origin dev //push到服务器
图片提交成功
然后我们去github的firstRepository
仓库可以看到dev
分支提交成功
而且我们可以看到dev
分支中有一张图片,但是master
还没有这张图片
4.3 分支合并(merge)与回退
切换到master分支
git checkout master //切换到master
git merge dev //将dev分支合并到master上(在本地)
git push -u origin master //将合并之后的master推到服务器
这个时候再回去看master
也有了图片,分支合并成功
有的时候会出现让我们输入信息的情况参看文章
https://www.cnblogs.com/wei325/p/5278922.html
git 在pull或者合并分支的时候有时会遇到这个界面。可以不管(直接下面3,4步),如果要输入解释的话就需要:
1.按键盘字母 i 进入insert模式
2.修改最上面那行黄色合并信息,可以不修改
3.按键盘左上角"Esc"
4.输入":wq",注意是冒号+wq,按回车键即可
如果我们想要看之前版本的内容(新提交的内容有问题等等原因)怎么操作呢?
这个时候也需要一个分支唯一标识的串码
git log
可以看到之前的记录们
更新记录们
如果要恢复到某一个版本可以执行命令
git reset --hard 3584563b19985c04efb2d148ae3f938d669b4050 //这个串码前6位就足够区分了
版本回退成功
git和SVN不一样,git是将所有版本都保留下来,只是通过HEAD指针来切换当前版本,所以这个操作会非常快
4.4 删除与恢复分支
数据合并完毕,如果想要删除分支分为两种情况,如果当前运行在dev
分支,我想要删除dev
分支,执行命令
git branch -d dev(要删除的分支名称)
这个时候可能删除不成功,但是我非要删除可以执行-D命令
git branch -D dev
这个时候执行命令查看分支情况
git branch
可以看到本地分支dev删除成功了
本地分支dev删除成功
但是去github仓库去看一下,远程分支还存在
远程分支dev没有删除成功
那么我们怎么删除远程分支呢,是不是就像创建分支的时候那样执行push
命令,我试了一下发现保存,不知道是我操作的姿势不对还是怎么回事儿
删除远程分支我们可以执行命令
git push origin -d dev(远程分支名称)
执行完毕去github查看dev
分支已经没有了
删除本地分支和远程分支我们刚才分为两部进行的,实际上可以通过一行命令完成这两部操作的但是我没有成功,所以命令行就不放了😂
如果我们删除之后后悔了怎么办,可以进行分支恢复
Git会自行负责分支的管理,所以当我们删除一个分支时,Git只是删除了指向相关提交的指针,但该提交对象依然会留在版本库中。
因此,如果我们知道删除分支时的散列值,就可以将某个删除的分支恢复过来。在已知提交的散列值的情况下恢复某个分支
我们刚才删除分支的时候可以看到有一个串码
分支的散列值
那么我们可以执行命令
git branch dev f523e62 //分支名称 串码
可以看到分支恢复成功了
分支恢复成功了
但只是恢复了本地分支,还需要根据第一步push
到远程服务器
git push -u origin dev
那么问题又来了,这个串码如果当时我们没有保留怎么办???是不会就不能恢复了呢,不是的,我们可以使用命令查看所有分支串码
git reflog
可以看到HEAD指针变化的轨迹,为了以后容易区分,写详细的备注信息是很重要的
HEAD指针变化轨迹
那么我们也可以使用以下命令进行恢复
git branch dev HEAD@{4}
4.5 撤销修改
直接引用文章中的内容
https://blog.csdn.net/yj310873325/article/details/80703561
1.查看修改内容:
git diff
//已修改,未暂存
git diff --cached
//已暂存、未提交
git diff master origin/master
//(已提交、未推送) (master本地分支、origin/master远程分支)例如git diff origin dev
- 撤销修改内容:
2.1 已修改、未暂存
git checkout .
或者git checkout 文件名
或者git reset --hard
git add .
的反义词是git checkout .
做完修改之后,如果你想向前走一步,让修改进入暂存区,就执行git add .
如果你想向后退一步,撤销刚才的修改,就执行git checkout .
注意修改一部分确认没问题后,要及时执行git add .
否则reset
后就会回到上一次add
的地方,中间的修改就都没了。或者只checkout
某一个文件名。2.2 已暂存,未提交
先执行git reset
然后执行git checkout .
git reset
只是把修改退回到了git add .
之前的状态,也就是说文件本身还处于已修改未暂存状态,你如果想退回未修改状态,还需要执行git checkout .
或者执行一步git reset --hard
或许你已经注意到了,以上两个步骤都可以用同一个命令git reset --hard
来完成。是的,就是这个强大的命令,可以一步到位地把你的修改完全恢复到未修改的状态。但是是全部内容,有点暴力,如果内容较少,可以修改单个文件内容。2.3 已提交,未推送
你的手太快,你既执行了git add .
又执行了git commit
这时候你的代码已经进入了你的本地仓库,然而你后悔了,怎么办?不要着急,还有办法。
git reset --hard origin/master
还是这个git reset --hard
命令,只不过这次多了一个参数origin/master
,正如我们上面讲过的,origin/master
代表远程仓库,既然你已经污染了你的本地仓库,那么就从远程仓库把代码取回来吧。2.4已推送
很不幸,你的手实在是太快了,你既git add
了,又git commit
了,并且还git push
了,这时你的代码已经进入远程仓库。如果你想恢复的话,还好,由于你的本地仓库和远程仓库是等价的,你只需要先恢复本地仓库,再强制push到远程仓库就好了:
git reset --hard HEAD^
git push -f
git是一个非常好用,功能也很强大的工具,到此为止我们看到的还都是git的基本操作,还有很重要的一块没有说到,就是冲突的解决,因为我是独立开发,所以很少遇到提交冲突的情况,这里先不做介绍,与君共勉!!!
指令小集合
git add README.md
//如果创建仓库的时候没有添加md文件,可以在本地创建md文件,但是这个命令比较坑爹,>如果不成功的话可以用touch README.md
命令代替
touch README.md
//同上
git clone https或者SSH地址
//克隆远程仓库到本地
git add .
//工作区所有变化的内容添加到暂存区
git commit -m "描述文字" -a
//将暂存区的内容提交到当前分支
git push -u origin master/dev
//将当前分支内容推到服务器
git branch
//查看当前工作分支
git branch 分支名称
//创建分支
git checkout 分支名称
//切换分支
git merge 分支名
//将分支合并到当前分支
git branch -d dev
//删除本地分支
git branch -D dev
//如果运行到dev分支上,那么可以-D强制删除
git push -u origin dev
//删除远程分支dev
git branch -r -D origin/dev
//同时删除本地和远程分支(不确定⚠️)
git branch dev f523e62
//恢复本地已经删除的分支(使用串码)
git branch dev HEAD@{4}
//恢复本地已经删除的分支
git reflog
//如果想要恢复分支,但是直到串码,可以查看所有变化轨迹
参考文档
https://blog.csdn.net/chenzhen1080/article/details/73992223
https://www.cnblogs.com/TaylorApril/p/6815142.html
https://blog.csdn.net/scorpion_zs/article/details/53837488
https://blog.csdn.net/hong3_yang/article/details/54948228
https://blog.csdn.net/a1031397017/article/details/74518984
https://blog.csdn.net/zhenhanhong_tony/article/details/53031794
https://blog.csdn.net/afei__/article/details/51476529
https://blog.csdn.net/q563573095/article/details/79580060
http://www.cnblogs.com/specter45/p/github.html#s4
https://blog.csdn.net/yj310873325/article/details/80703561
https://www.cnblogs.com/utank/p/7880441.html
https://www.cnblogs.com/wei325/p/5278922.html
https://www.cnblogs.com/VAllen/p/git-remote-delete-origin-branches.html
网友评论