Git基础

一、简介

  • 方便多人协同开发

  • 方便版本控制

  • 作者Linux之父:Linus Torvalds

  • git开发目的:为了辅助Linux内核的开发

  • 是Linus被逼无奈,花了2个星期用c写的

  • 2008年,GitHub网站上线,为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub

  • Git迅速成为最流行的分布式版本控制系统(没有之一)

二、Git结构

Git是分布式管理系统。服务端和客户端都有版本控制功能,都能进行代码的提交,合并,..

图一

GIT_interview

图二

work_directory_index

三、本地仓库操作

1、安装git

2、查看是否安装成功

git --version

3、创建本地仓库

  1. 创建一个文件夹用于存放项目文件(mygit)

  2. 新建本地仓库

    cd ~/mygit/
    # 初始化
    git init
    # 会创建一个.git的隐藏文件,关于版本控制的文件都存放在这里,绝对不要改动
    
  3. 配置个人信息

    # 配置全局信息
    git config --global user.name 'yun'
    git config --global user.email '570454176@qq.com'
    # 配置信息会保存在家目录下
    ~/.gitconfig
    
    # 配置本项目个人信息
    git config user.name 'yun'
    git config user.email '570454176@qq.com'
    # 配置信息存储在当前目录下的.git/config下
    

help

git add --help

调用浏览器,打开help页面

4、添加文件

在项目文件加下创建readme.md文件,输入以下内容。

1、先提交到暂存区

git add Readme.md

2、查看git状态

git status

3、提交到本地仓库

git commit -m '新建了Readme.md文件'

git commit命令的,-m参数后输入的内容是提交说明。命令执行成功后显示几个文件被改动,加了多少行。每提交一次就会生成一个版本。

5、历史版本

查看历史版本

git reflog可以查看所有分支的所有操作记录(),包含已删除的commit记录。

git log不能查看已删除的commit记录

git log
git reflog

6、版本切换

git reset --hard HEAD^

  • HEAD表示当前最新版本
  • HEAD^表示当前最新版本的前一个版本
  • HEAD^^表示当前最新版本的前两个版本,以此类推
  • HEAD~1表示当前最新版本的前一个版本
  • HEAD~8表示当前最新版本的前8个版本,以此类推

git reset --hard 版本号

当版本非常多时选择这种方法。版本号就是每次commit生成的hash值,只用取前几位数。

7、撤销修改

运行git status命令会显示当前工作区,暂存区,仓库的状态。当工作区的所有代码都提交到仓库 并和仓库保持一致时会显示:

一旦有修改,git status命令会显示改动的文件,以及你应该怎么提交这些修改。

1、撤销工作区代码

git checkout 文件名

修改文件后没有执行add,运行此命令可以撤销所有修改,一旦撤销没有后悔药哦,在确定抛弃所有修改时使用。

2、撤销暂存区的代码

# 第一步:将暂存区代码撤销到工作区
git reset HEAD 文件名
# 第二步:撤销工作区代码
git checkout 文件名

8、对比文件

  1. 对比本地仓库与工作区

    git diff HEAD -- 文件名
    
  2. 对比本地仓库上个版本代码

    git diff HEAD HEAD^ -- 文件名
    

9、文件删除

  1. 删除没有添加进版本库中的工作区中的文件

    # 直接删除不用做任何操作
    
  2. 删除已添加进工作区但没有提交的文件

    # 1.先撤回工作区
    git reset HEAD 文件名
    # 2.直接删除
    rm 文件名
    
  3. 已提交到版本库

    # 1.删除文件
    rm 文件名
    # 2.运行`git add .` 
    git add .
    # 3.提交
    git commit -m 'delete some file'
    

四、分支管理

新建仓库时默认创建master主分支

1、创建分支

git branch newbranch

切换到分支

git checkout newbranch

创建并切换到分支

git checkout -b newbranch

查看分支

git branch

2、合并分支

分支任务完成后,合并到主分支

首先切换到master分支

git checkout master

然后合并分支

git merge newbranch

3、删除分支

分支合并完之后,没有其他任务了,可以删除分支

git branch -d newbranch

五、远程仓库

github:https://gitee.com/
码云:https://github.com/

首先你需要注册一个码云的账户,然后创建一个空的仓库。这个在码云上有教程大家自行操作。

创建好仓库后,你的仓库会有两个地址,一个是https,一个是ssh。因为使用https需要输入用户名和密码,推荐使用ssh的方式。要使用ssh你需要设置你账户的ssh公钥。公钥管理

1、公钥管理

生成公钥

 ssh-keygen -t rsa -C '570454176@qq.com'

部署公钥

添加后,在终端中输入

ssh -T git@gitee.com

clone测试

2、添加远程仓库

要把本地仓库和远程仓库联系起来有两种方式:

克隆

远程仓库里已经存在项目文件,更换开发电脑,需要将项目从远程仓库clone到本地进行工作。

# 首先cd到你要存放项目的目录
cd ~/projects
# 然后运行下面的命令
git clone clone地址
eg:
git clone https://gitee.com/yun5704/12345wanwan.git

拉取

本地初始化一个仓库,设置远程仓库地址后再做拉取

和第一种方式的区别在于先创建仓库

git init # 新建仓库
git remote add origin https://gitee.com/yun5704/12345wanwan.git

3、推送到远程仓库push

git push origin master

4、拉取到本地仓库pull

git pull origin master

六、git在pycharm中的使用

1、环境配置

设置git的安装位置

点击test

允许版本控制器

选择git

查看版本控制器

创建 .gitignore文件

2、pycharm git使用

commit

07 pycharmgit使用1.png
08 pycharmgit使用2.png

一键还原修改

09 pycharmgit使用3.png

Checkout Revision

10 pycharmgit使用4.png

切换分支

11 pycharmgit使用5.png

创建分支

12 pycharmgit使用6.png
13 pycharmgit使用7.png
14 pycharmgit使用8.png

重置分支

15 pycharmgit使用9.png
16 pycharmgit使用10.png

撤销提交

17 pycharmgit使用11.png

revert

18 pycharmgit使用12.png

3、远程仓库

a、码云 gitee

搜索gitee

Search in repositories 下载

配置gitee

上传到gitee

push

pull

b、github

github配置

共享到github

push和pull与gitee类似

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342