git入门学习(详细版)

初始操作

git init

一个本地仓库设置完成

如果把文件夹删了 再git init的话 相当于另一个本地仓库了

设置自己的姓名和邮箱:

全局设定(设置完后本机全部生效)不局限于单个git文件夹

标识我的本机:

git config --global user.name "wkx" 本机电脑

git config --global user.name "wkx1" 服务器电脑

git config --global user.email "1217345421@qq.com" 本机邮箱

git config --global user.email "1661483886@qq.com" 服务器邮箱

本地公钥

生成公钥:ssh-keygen -t rsa -C 1217345421@qq.com

一路回车

显示公钥:cat ~/.ssh/id_rsa.pub

公钥是为了和远程仓库建立免密连接使用的

一些概念

工作区

就是你在电脑里能看到的目录,电脑上任何一个文件夹都叫工作区 ,

提交到版本库后,再次修改了的也是工作区的内容

版本库

工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库

Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,

还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

基本命令解释

git config --list :查看当前在git中的所有设定,如查看用户名和邮箱

git config --global alias.st status

git config --global alias.ci commit 这两句的功能:以后输入git指令时可用ci代替commit 、st代替status;

git status :

可以让我们时刻掌握仓库当前的状态 , 比如有多少文件在工作区 , 有多少文件在暂存区 , 有多少文件已经被commit到当前分支了

git add a.txt //将a.txt从工作区提交到暂存区

我们可以git add 一个文件

也可以git add . :将工作区的所有文件添加到暂存区

git commit -m"注释"

commit 是将暂存区的内容放入到当前分支, 必须加注释 , 方便查看日志信息 , 后面回退版本和回到未来版本时需要使用 注意commit是一次性将暂存区的所有内容添加到当前分支

git diff readme.txt      //diff可以知道我们在上一次做了哪些修改

小结:先使用gti status查看哪些文件被修改了 然后用git diff查看修改的内容

git log 查看版本详细信息

命令显示从最近到最远的提交日志, 如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数:

git reflog 查看版本信息(不详细)  ---方便版本穿梭使用

版本穿梭

  • 基本指令: git reset --hard 版本号
  • git的版本穿梭 , 底层其实就是移动head指针
  • git reset --hard HEAD^ //回退到上一个版本

  • git reset --hard HEAD^^ //回退到上两个版本

  • git reset --hard HEAD~5 //向前回退五个版本

  • 回退完成后,git log 当前最新版本就是回退后的版本

  • 穿梭未来:git reset --hard 1094a32 // 版本号没必要写全,前几位就可以了,Git会自动去找

小结

  • HEAD指向的版本就是当前最新版本
  • 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
  • 重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本

文件管理

管理修改

git diff HEAD -- readme.txt //可以查看工作区和版本库里面最新版本的区别:

这里的版本库特指当前分支,如果我们只将数据提交到了暂存区 , 是不加以区分的

用途 : 提交到当前分支之后 , 又对当前文件进行了修改 且未提交到暂存区

撤销修改

git checkout -- readme.txt

把readme.txt文件在工作区的修改全部撤销

文件里可能有在暂存区的内容,也有在工作区的内容 我们只可以撤销(删除)在工作区的内容

现在文件内容不在工作区了 , 已经被提交到了暂存区

git reset HEAD readme.txt //可以把暂存区的修改撤销掉 , 重新放回工作区

假如文件都不在暂存区了 已经提交到了版本库(当前分支) 那就回退版本

只要不提交到远程仓库 就有退路

总结 : 工作区的内容使用checkout直接撤销 ---- 暂存区的内容使用reset 撤销回工作区 然后撤销 --- 版本库的内容就退版本

删除文件

当我们把已经提交到版本库的文件删除了之后,

git status命令会立刻告诉你哪些文件被删除了:

第一个选择:

确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit:

git rm test.txt

git commit -m "remove test.txt"

第二个选择 , 我们删错了 想要让它回来

git checkout -- test.txt //其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

 注意:从来没有被添加到版本库就被删除的文件,是无法恢复的!

分支管理

分支操作

git branch 分支名 //创建分支

git branch -v //查看所有分支 ,当前分支带*

git checkout 分支名 //切换分支

git merge 分支名 //把指定的分支合并到当前分支上

分支合并

正常合并--无冲突

  • 主分支有文件a.txt内容为aaa
  • 我们切换到副分支,将a.txt内容修改为bbb,在此期间不在主分支进行操作
  • 这时我们可以回到主分支,进行合并操作:git merge 副分支

冲突合并--

  • 主分支有文件a.txt ,
  • 切换到副分支,然后修改a.txt的内容,提交到本地仓库,此时我们切换回主分支并且再次修改a.txt内存
  • 这时我们提交到本地仓库后,想要把两个分支的修改合并起来,会出现错误

  • 此时我们位于主分支,需要手动修改此文件内容,以确定一个最终版本
  • 当我们确定后,再次进行add commit之后,主分支的a.txt文件内容就是我们想要的
  • 注意:副分支的a.txt内容并不是合并之后的,只是合并以前自己修改的

github操作

给远程链接起一个别名

//给链接为https://github.com/wkxwkxwkx/wxystupid.git的远程仓库起一个别名wxy

git remote add wxy https://github.com/wkxwkxwkx/wxystupid.git //这样我们以后在push和pull的时候就可以使用wxy来代替远程链接

git remote -v

wxy https://github.com/wkxwkxwkx/wxystupid.git (fetch)

wxy https://github.com/wkxwkxwkx/wxystupid.git (push)

// 将本地master分支的内容推送到wxy远程仓库

git push wxy master

//拉取wxy远程库的master分支内容到本地

git pull wxy master

克隆远程仓库代码到本地

clone后会自动为远程连接创建别名为orgin

origin https://github.com/wkxwkxwkx/wxystupid.git (fetch)

origin https://github.com/wkxwkxwkx/wxystupid.git (push)

//将本地master分支push到origin远程仓库 ,因为origin为clone时自动为远程仓库创建的别名

git push origin master

idea操作git

基本操作

使用idea初始化一个git本地仓库

默认选中当前文件夹

 

 将项目添加到暂存区

 

 提交到本地仓库

版本切换

多次提交到本地仓库之后,我们可以查看历史日志

此时我们点击想要回退到的版本,选择Checkout Revision版本号即可(可以回退,自然也可穿梭到未来,做法都相同)

分支操作

创建一个分支

创建成功,并切换

分支合并--当在dev分支写了代码,且master分支没有操作的时候,进行普通合并操作

操作方法:回到master分支,点击当前分支,选择dev分之,然后选择Merge Selected into Current

冲突合并操作:合并前,dev分支和master分支都有操作,且都提交到了本地仓库

回到master分支,和之前操作一样

如果提示:Your local changes would be overwritten by merge. Commit, stash or revert them to proceed.

就先存储我们的修改:

然后继续进行合并:点击 Conflicts框里的 Merge按钮,进行手动合并代码。 

 合并成功

idea集成github

通过token添加github仓库

当将代码存储到本地仓库时,可以直接分享到github,远程仓库会自动创建

push操作:

与github链接默认为https,我们在push时可以选择自定义url,将刚才创建的仓库的ssh链接添加进来

注意:push 是将本地库代码推送到远程库,如果本地库代码跟远程库代码版本不一致,

push 的操作是会被拒绝的。也就是说,要想 push 成功,一定要保证本地库的版本要比远程 库的版本高!因此一个成熟的程序员在动手改本地代码之前,一定会先检查下远程库跟本地 代码的区别!如果本地的代码版本已经落后,切记要先 pull 拉取一下远程库的代码,将本地 代码更新到最新以后,然后再修改,提交,推送!

pull操作

pull 是拉取远端仓库代码到本地,如果远程库代码和本地库代码不一致,会自动

合并,如果自动合并失败,还会涉及到手动解决冲突的问题。所以我们在pull之前,尽量不要将本地代码commit到本地仓库

clone操作

 

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值