这里写目录标题
引言
在工作中用git命令提交代码办公是非常常用的,所以掌握git的基本原理以及使用方法是非常的重要的,接下来本文章将简单介绍git的原理以及git的基本使用方法,以便能够更好的上手使用。
一、Git的基本原理
git:
一种管理文件的工具,是C/S模式的,一般都是在终端,往Github上提交。
Github:
相当于是一个Git的服务平台,我们可以使用其提供的服务。这里面的文件是按仓库来划分的,可以认为一个仓库就是一个文件夹。
使用基本流程:
一般提交代码就是先从工作区通过git命令提交到暂存区,然后再提交到本地仓库中,最后没问题了上传到远程仓库中。刚开始可以通过pull拉取远程仓库到本地,在本地仓库中有多个提交版本和对应的日志,可以通过日志ID来回退版本。
二、如何在Linux中连接Github代码仓库
1.安装git
- 可以通过
git version
命令来判断是否安装了git - 如果没有安装可以使用
sudo apt install git
命令来安装
2.设置用户名和邮箱
注意:第一次使用需要,以后就不需要了,把邮箱和姓名替换成自己的就行了,实际用处就是在提交代码时能够知道是谁提交的,让别人能够找到你。
git config --global user.email "YourEmail"
git config --global user.name "YourName"
3.创建Github本地仓库
- 登录GitHub账号,点击头像
- 点击
Your repositories
- 点击
New
- 起一个仓库名字,README文件可选可不选,最后创建即可
4. 通过ssh密钥连接GitHub仓库
原因:
仓库可以公开看,但不能每个人都能上传代码到仓库中,并且git需要知道提交的远程仓库是哪一个,这个就需要ssh密钥来搞定了。
- 输入命令
ssh-keygen -t rsa -C "YourEmail"
生成ssh密钥文件,然后其余按回车就行了,不用输入。 - 使用命令
cat ~/.ssh/id_rsa.pub
,查看自己的ssh key - 将其全部复制,在GitHub中按照如下操作,随便起个名字,然后将刚才复制的密钥粘贴到对应的地方,即可。
- 最后在终端中输入
ssh -T [email protected]
,出现如下即连接成功
三、Git的基本使用
1.创建本地仓库
一般是创建一个文件夹,然后进去,输入命令
git init
将当前文件夹变为可以通过git管理的仓库,这个文件夹里面的区域就是我们的
工作区
,
.git
里面存的是日志之类的东西。
2.拉取远程仓库代码
一般都是先从远程仓库中把代码拉取到工作区,然后我们在本地对其进行修改,然后通过git命令上传到远程仓库中。
- 这里我先在GitHub中写了一了C++程序用来模拟真实的情况,在GitHub上是可以直接上传文件、修改文件的,如下步骤: 最后把改写的一写就行了,最后提交。
- 创建了一个C++文件用来模拟真实情况
- 通过命令
git clone ssh地址
就可以把远程仓库中的代码拉取到工作区当中
3.修改远程仓库的代码
- 可以直接在本地把该文件中的代码修改
git add filename
将文件暂存到缓存区git commit -m "注释"
将暂存区的文件提交到本地仓库 可以用命令git status
查看暂存区
的情况 可以用命令:git log
查看提交的版本记录git reflog
查看操作日志
4.使用命令
git push
将本地仓库的文件上传到远程仓库中
一般要是上传同一个文件会冲突的,有些文件git不知道怎么修改和合并,所以下一个人拉取文件时一般要修改文件一下,但只要文件名不一样就行了提交的时候。
4.向远程仓库提交代码
这个跟上一个修改其实是一样的,熟悉一下命令:
git add filename
:存入暂存区
git commit -m "注释"
:提交到本地仓库
git push / git push origin 分支名
:push到远程仓库(因为测试只有一个分支,所以git push就够了)
四、Git常用命令
git init//使该目录变成git管理的仓库
git add filename//添加文件到暂存区
git commit -m "注释"//将暂存区的文件提交到本地仓库中
git status//查看仓库状态
git log//查看提交的版本记录
git reflog//查看对仓库的操作日志
git diff [HEAD/HEAD^^... / 版本号]//查看当前工作区的代码与最后一次版本(或者前几个版本)的比较,仅git diff默认为最后一次提交的版本
git checkout filename//把当前版本库中最新的代码覆盖当前的,放弃对工作区代码的修改,可以回退版本再覆盖
git reset --hard HEAD^//回退版本,多个^代表回退几个版本
git reset --hard 版本号//这里也可以是版本号,用git log/reflog可以查看
git reset HEAD filename//从暂存区撤销
git rm filename 后git commit -m //先删除再把当前版本提交,就从版本库中删了,相当于提交了一份没有该文件的版本
git branch//查看分支
git branch 分支名//创建分支
git checkout 分支名//切换分支
git checkout -b 分支名//创建并切换到该分支
git branch -d 分支名//删除分支,不能删除当前所处分支,切换到其它分支再删除
git merge 分支名//合并某个分支到当前分支,合并时可能产生冲突,需要解决冲突,自己vim改代码就行了
git stash//保护现场,当前工作区有代码修改了,是不能切换到其他分支,可以先保存现场,再切换
git stash list//列出所有保存的现场信息
ssh-keygen -t rsa -C "[email protected]"//生成通信密钥,生成的公钥在/home/stu/.ssh/下
//测试与github或者gitee(码云)有没有连通:
ssh -T [email protected]//测试github 的命令
ssh -T [email protected]//测试gitee 也就是码云的命令
git clone 项目地址//克隆项目
//首先得把自己的仓库有东西,然后再拉取服务器最新的更新到本地,不然会提交失败
git pull origin 分支名//拉取远程服务器上的分支更新到本地,分支名不写默认master
git push -u origin 分支名//提交分支到远程仓库,并跟踪分支
git push origin 分支名//提交分支到远程仓库,如果改同一个文件,提交后,然后git不知道用哪个,都用,还是都不用,还是分别用哪个,所以提交到仓库中,别人看的时候,需要解决冲突,自己改代码
ssh -T [email protected] //可以查看有没有联通
//然后就git clone 自己GitHub上的SSH,然后就正常输命令了
//git pull origin master
//git add filename
//git status git log git reflog
//git commit -m ""
//git push origin master
版权归原作者 lijiachang030718 所有, 如有侵权,请联系我们删除。