我的Git学习笔记


Git概述

介绍:

  • git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目
  • git易于学习,占地面积小,性能极快。它具有廉价的本地库,方便的暂存区域,和多个工作流分支等特性。其性能优于Subversion\CVS\Perforce和ClearCase等版本控制工具。

什么是版本控制?

版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。

版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换。

个人开发过渡到团体协作

集中

分布

Git和代码托管中心

代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库

  • 局域网
    • GitLab
  • 互联网
    • GitHub(外网)
    • Gitee码云(国内网站)

Git安装

不能单独删除某个版本

Git官网

Git常用命令

命令名称作用
git config --global user.name 用户名设置用户签名
git config --global user.email 邮箱设置用户签名
git init初始化本地库
git status查看本地库状态
git add 文件名添加到暂存区
git commit -m “日志信息” 文件名提交到本地库
git reflog查看历史记录
git reset --hard 版本号版本穿梭

说明:

签名的作用是区分不同操作者身份,用户的签名信息在每个版本的提交信息中能够看的,以此来确认本次提交是谁做的。

Git首次安装必须设置一下用户签名,否则无法提交代码!

注意:

这里设置用户签名和将来登录GitHub(或其它代码托管平台)的账号没有任何关系。

初始化本地库

git init

目录下会出现隐藏目录.git

查看本地库状态

git status

查看状态

Untracked files:未监控文件

nothing added to commit but untracked files present (use “git add” to track)

文件显示为红色

添加暂存区

git add xxx文件名

warning:提示自动转换了换行符

文件显示为绿色,表示git已经追踪到该文件

git rm --cached hello.txt删除暂存区的文件

工作区的未被删除。

提交本地库

将暂存区的文件提交到本地库

git commit -m "日志信息" 文件名

示例:

git commit -m "first commit" hello.txt


warning: LF will be replaced by CRLF in hello.txt.
The file will have its original line endings in your working directory
[master (root-commit) 172c198] first commit
 1 file changed, 10 insertions(+)
 create mode 100644 hello.txt


172c198表示版本号

git reflog

172c198 (HEAD -> master) HEAD@{0}: commit (initial): first commit

查看引用日志信息

git log

commit 172c198f5670fa0c508212560e4867c203adc6f4 (HEAD -> master)
Author: ccode <858144715@qq.com>
Date:   Mon Sep 6 15:02:09 2021 +0800

    first commit

modified: hello.txt说明文件被修改了

再次修改并提交

可以看到两个修改信息

$ git reflog
8bd7edf (HEAD -> master) HEAD@{0}: commit: second commit
172c198 HEAD@{1}: commit (initial): first commit

历史版本

查看历史版本

基本语法:

git reflog 查看版本信息

git log查看版本详细信息

版本穿梭

git reset --hard 172c198

会多生成一个指向我们穿梭的版本。

.git\refs\heads内的master文件指针改变

Git切换版本,底层其实是移动的HEAD指针

Git分支操作

什么是分支?

在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。

使用分支意味着程序员可以把自己的工作从主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。

对初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本。(分支底层其实也是指针的引用)

分支的好处

同时并行推进多个功能开发,提高开发效率。

各个分支在开发过程中,如果某个分支开发失败,不会对其它分支有任何影响。失败的分支删除重新开始即可。

分支的操作

命令名称作用
git branch 分支名创建分支
git branch -v查看分支
git checkout 分支名切换分支
git merge 分支名把指定的分支合并到当前分支上

查看分支

git branch -v

创建分支

示例:

git branch hot-fix

修改完文件记得git add 和 git commit

合并分支

git merge 分支名

同一行两个版本内容不一致,会发生冲突。

(master | MERGING)表示还未合并成功,正在合并

手动合并


<<<<<<< HEAD表示当前分支

当前分支的代码

=======

要合并的代码

>>>>>>> hot-fix


手动修改代码完成

人为修改之后

添加到暂存区

git add hello.txt

执行提交(注意:此时使用git commit命令时不能带文件名)

git commit -m "merge test"

master、hot-fix其实都是指向具体版本记录的指针。当前所在分支,其实是由HEAD决定的,所以创建分支的本质就是多创建一个指针。

HEAD如果指向master,那么我们现在就在master分支上。

HEAD如果指向hotfix,那么我们现在就在hotfix分支上。

所以切换分支的本质就是移动HEAD指针。

Git团队协作机制

团队内协作与跨团队协作fork

GitHub操作

GitHub

Repository name一般与本地库名称相同

创建远程库即可

可以看到两种不同协议的链接

创建远程仓库别名

git remote -v查看当前所有远程地址别名

git remote add别名 远程地址

别名一般与库名相同

推送本地库到远程库

git push 别名 分支

别名直接写远程地址也可

示例:

git push git-demo master

拉取远程库到本地库

git pull 别名 分支

别名直接写远程地址也可

克隆远程仓库到本地

git clone 链接地址

克隆代码不需要登录!

小结:

clone会做以下操作:

  • 拉取代码
  • 初始化本地仓库
  • 创建别名,默认origin

团队内协作

github打开库

点击Settings–>

Manage access

–>Invite a collaborator

复制Pending Invite发送给要协作的团队成员

成员获得后,直接复制浏览器打开,选择Accept invitation

此时即可推送

跨团队协作

复制链接,打开项目,点击右上角Fork可以叉到自己项目上

forked from xxxx/xxx

可以克隆本地库等等操作

也可以在线编辑!

编辑完,选择Pull requests

New pull request—>

Create pull request

—>

填写commit信息,可以留言

原作者可以看到请求。

也可以给提交者留言。

原作者可以选择Merge pull request

还需要再次确定: Confirm merge

SSH协议免密登录

选择C盘–>用户–>你的账户:C:\Users\Administrator

在这里选择Git Bash here

命令

ssh-keygen -t rsa -C 1506833696@qq.com

后面是github邮箱

连续3次默认enter即可

此时目录下生成了.ssh文件夹

我们命令进入

cd .ssh

ll命令可查看当前目录里的文件

我们命令

cat id_rsa.pub

即可看的公钥,复制公钥

打开github

头像—>Setting

选择SSH and GPG keys

–>New SSH keys

Title都可

Key将公钥粘贴在此,并添加!

复制网站上SSH链接

git pull SSH链接 分支名

输入yes保存

即可拉取

git push SSH链接 分支名

IDEA集成Git

配置Git忽略文件

为什么忽略?

与项目的实际功能无关,不参与服务器上部署运行。把它们忽略掉能够屏蔽IDE工具之间的差异

怎么忽略?

创建忽略规则文件xxx.ignore(前缀名随便起,建议是git.ignore)

理论上放在哪里都可以,建议放在用户家目录下

git.ignore


# Compiled class file
*.class

# Log file
*.log

# BlueJ files
*.ctxt

# Mobile Tools for Java (J2ME)
.mtj.tmp/# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar

hs_err_pid*

.classpath
.project
.settings
target
.idea
*.iml

在.gitconfig文件中引用忽略配置文件(此文件在Windows的家目录中)

.gitconfig

[user]
	name = ccode
	email = 858144715@qq.com
[core]
	excludesfile = C:/Users/xxx/git.ignore

注意目录要使用"正斜线(/)",不用使用"反斜线(\)"

定位Git程序

IDEA—>Settings—>Version Control

—>Git—>配置安装目录—>Test出现版本信息即可使用!!

初始化&添加&提交

VSC–>Import into Version Control—>Create Git Repository

创建git的本地库—>OK

此时右键文件发现Git选项—>Add

此时就已经加入暂存区!

此时新建包,文件提示是否Add到暂存区

也可以右击项目,添加到暂存区。

提示是否强制提交,选择取消,被忽略的文件就不会被提交到暂存区。

提交到本地库

右击项目—>Commit Directory

填写提交信息。

点击commit

切换版本

也可以直接提交本地库

在IDEA的左下角,点击Version Control

Log选项里我们可以查看历史版本。

选择要切换的版本,右击Checkout Revision ‘xxx’

黄色HEAD指针就会指向切换的版本

master分支指向最新版本

指向master分支

创建分支&切换分支

右键项目名称,

选择Git–>Repository–>Branches

—>New Branch

或者

IDEA右下角–>点击显示当前分支的内容—>Git Branches也可以

勾选Checkout branch就会创建并切换过去。

切换分支—>

直接IDEA右下角,选择要切换的分支Checkout

合并分支

正常合并

IDEA右下角选择要合并的分支,选择Merge into Current

冲突合并

同上操作,此时弹窗Conflicts冲突

选择右侧Merge选项

手动合并。中间是没有冲突的代码,左右分别是两个不同分支冲突的代码

X表示不要这个代码

>>表示合并到正常代码

此时改掉了冲突

合并成功!

IDEA集成GitHub

设置GitHub账号

Settings–>Version Cotrol

—>GitHub

没有的话安装插件即可

点击加号—>

输入账号密码(不建议)

或者

登录框右上角 Use Token口令

GitHub网页,头像—>Settings

—>Developer settings

—>Personal access tokens

—>

设置权限!

一刷新就会消失!!!

分享项目到GitHub

VCS—>

Import into Version Control

—> Share Project on GitHub

选择Repository name

Remote: 别名

直接Share

推送代码到远程库

提交本地库

1、

右击项目—>

选择Git—>

Repository—>

选择Push

2、

VCS–>

Git—>

Push

默认选中了别名:

建议SSH协议

复制SSH链接

点击别名:

选择Define Remote

Name:别名

URL:链接

—>Push


注意:

push是将本地库代码推送到远程库,如果本地库代码跟远程库代码版本不一致。push的操作是会被拒绝的。

也就是说,要想push成功,一定要保证本地库的版本要比远程库的版本高!

因此一个成熟的程序员在动手改本地代码之前,一定会先检查下远程库跟本地代码的区别!如果本地的代码版本已经落后,切记要先pull拉取一下远程库的代码,将本地代码更新到最新以后,然后再修改,提交,推送!

拉取远程库代码合并本地库

VCS–>

Git—>

Pull

选择Remote。

勾选如果需要合并,合并的分支。

选择Pull

注意:

pull是拉取远端仓库代码到本地,如果远程库代码和本地库代码不一致,会自动合并,如果自动合并失败,还会涉及到手动解决冲突的问题。

clone克隆远程库到本地

打开IDEA欢迎页面,有一个Get from Version Control

点击,可以选择Git

URL

目录

就会下载

国内代码托管中心-码云

码云

注册登录等等

与GitHub类似!

码云建议使用HTTPS协议

IDEA集成码云

IDEA默认不带码云插件,安装码云插件!

与GitHub操作相似

码云复制GitHub项目

新建仓库—>

选择导入已有仓库!

直接把HTTPS协议的链接复制粘贴直接创建!

可以点击项目名称后的刷新图标!

就可以强制刷新同步GitHub项目

GitLab

GitLab是由GitLabInc.开发,使用MIT许可证的基于网络Git仓库管理工具,且具有wiki和issue跟踪功能。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。

GitLab由乌克兰程序员DmitriyZaporozhets和ValerySizov开发,它使用Ruby语言写成。后来,一些部分用Go语言重写。截止2018年5月,该公司约有290名团队成员,以及2000多名开源贡献者。GitLab被IBM,Sony,JülichResearchCenter,NASA,Alibaba,Invincea,O’ReillyMedia,Leibniz-Rechenzentrum(LRZ),CERN,SpaceX等组织使用。

官网:

https://about.gitlab.com/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值