几乎零基础的git入门级分享

写在最前面:

特意抽出时间学习git的原因是之后要攻读软件工程学位的博士,而git是大型软件开发很难绕过的一个东西。很惭愧,从大一开始接触计算机起的这四年中,居然从未给开源软件贡献过任何一行代码,也没有正式参与过大型软件的开发,仅仅是用于平时大作业或者下载论文源码,网页版的github已经足够满足需求。但是,在下一阶段的学习中,这肯定是不够滴,据我观察组内也是用自己搭建的git管理项目代码。本人习惯于先把早晚要做的事做完,再做别的事,所以也就有了这篇博客的诞生。
本文将记录一个仅仅只有网页版github经验的人的git入门过程。

git的作用

不使用git时,可以在名字中添加含有修改日期时间的信息,在每次修改时先复制要修改的文件,然后修改日期信息为当前时间,即可做到简单的版本管理。在单人使用时还算可以,但是如果多人协作开发,难免造成很多局限。
在这里插入图片描述

Git是一个分布式版本管理系统,初衷是为了更好地管理Linux内核开发。

Git可以在任何时间点,把文档的状态作为更新记录保存起来。因此可以把编辑过的文档复原到以前的状态,也可以显示编辑前后的内容差异。

而且,编辑旧文件后,试图覆盖较新的文件的时候(即上传文件到服务器时),系统会发出警告,因此可以避免在无意中覆盖了他人的编辑内容。

一些概念

Repository(仓库):记录文件或目录状态的地方,存储着内容修改的历史记录。在仓库的管理下,把文件和目录修改的历史记录放在对应的目录下。

Git的仓库分为远程仓库和本地仓库两种。

远程仓库: 位于实验室服务器或github上,为了多人共享而建立的Repository。
本地仓库: 为了方便用户个人使用,在自己的机器上配置的Repository。

创建本地仓库的方法有两种:一种是创建全新的仓库,另一种是复制(git clone)远程仓库。在项目中一般是复制(git clone)远程仓库。

push:若要把文件或目录的添加和变更保存到Repository,就需要进行push(提交)。执行push后,数据库中会生成上次提交的状态与当前状态的差异记录(也被称为revision)。

执行push时,系统会要求输入提交信息。这些信息是为了方便其他人能够方便地查看你的修改内容,在空白的提交信息下执行的push会被拒绝。标准的提交信息的格式如下:

第1行:提交修改内容的摘要
第2行:空行
第3行以后:修改的理由

工作树和索引

stage unstage:未被Git跟踪的状态为unstage状态

已经被Git跟踪的状态为stage状态,因此包括staging状态和staged状态

git配置和使用

全局设置name和email:本地电脑所有的git仓库都会使用此配置,对特定的仓库可以指定其他用户名和邮箱。

git config --global user.name zhangxin00 
git config --global user.email hnuzhangxin@163.com

将当前文件夹变为一个可以管理的仓库:

pwd //查看当前路径
git init //这个目录变成git可以管理的仓库(增加隐藏的.git文件)

当前文件夹是工作区,将文件add到.git中才可以用git管理:

git add read.txt //add read.txt
git add .  //add all files

之后,需要将暂存区的所有文件提交到仓库的当前分支(默认为master,如果有别的分支也可以提交):

git commit -m "add txt file"

-m后面引号内的内容是本次提交的说明,上面的概念中提过,该内容不能为空。

要随时查看工作区的状态,这条在整个过程中随时可以输入:

git status

git checkout可以用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”:

git checkout -- test.txt

修改暂存区(add了,还没commit):

git reset HEAD read.txt //当前版本HEAD,上一版本HEAD^,上上版本HEAD^^)
git reset --hard commit_id(git reflog获取commit_id)

从仓库中删除某文件:

git rm test.txt
git commit -m "delete test.txt"

git push

origin是推送的远程库的默认名字,可以改成别的,如果要改成别的,命令中的origin都要换成你自己要起的名字。 使用以下命令可以将本地仓库和远程仓库关联起来:

git remote add origin http://XXX
git push origin 本地分支名:远程分支名(可以省略远程分支名)
git push -u origin master //需要输入用户名和密码
git push origion master  //第二次及以后可以简化命令

我们需要把远程仓库的最新代码克隆下来(此命令在你所要存放代码的目录下的终端运行,比如我要放在/home/github下,打开/home/github下的终端输入命令,那么克隆的代码路径为:/home/github/test1):

git clone http://192.168.1.3/zhangmi/test1.git

在这里,暂时先不考虑多分支了吧,这个暑假想先把基本命令玩熟。

查看远程仓库信息:

git remote
git remote -v //详细版

push代码到remote:

git push origin XXX(分支名)
git push origin master

//push的前提是你的版本必须最新,如果你push之前别人先push了,那你要先pull才能push
git pull origin 分支名

运行实例

配置username和email,查看git status:
在这里插入图片描述
changes not staged for commit: 删除了某文件夹,但是git没有记录到,使用git rm在.git中将其删除即可:
在这里插入图片描述
创建了文件,但是git没add
在这里插入图片描述
全部commit之后就可以push了
在这里插入图片描述
登录网页端,发现github仓库(remote repository)的内容也更新了
在这里插入图片描述
git push的时候有时候会报错,因为可能remote repository被别人改动了,你本地的不是最新版本,需要先git pull:
在这里插入图片描述
删除本地仓库 rm -rf .git
在这里插入图片描述
本地修改一些文件试试:
在这里插入图片描述

常用debug

其实下面这些报错,试了几次,大多数时候等会自己就好了

//ssl认证
git config --global http.sslVerify "false"
//取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy

//重命名
 git branch -m oldBranchName newBranchName
 //通常是:
 git branch -m main master

好吧,我觉得这些东西已经可以满足目前的需求了(本地管理个人网站,而不用只依赖网页端编辑),branch merge checkout等操作目前好像完全用不到,按照按需学习的指导思想,之后再说~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值