Git
1.简介
Git是目前世界上最先进的分布式版本控制(Revision control)系统(没有之一)。
1.本地版本控制
2.集中版本控制 SVN
3.分布式版本控制 Git
- 每个人都拥有全部的代码!
2. Git安装和卸载
使用镜像地址,速度快一些
CNPM Binaries Mirror (npmmirror.com)
软件版本:
rc是候选版
ga是正式版
NPM的全称是Node Package Manager,是一个NodeJS包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准。2020年3月17日,Github宣布收购npm,GitHub现在已经保证npm将永远免费。
3. 常用Linux命令
pwd 打印当前目录
git config -l 查看git配置清单
rm 删除文件
rm -r 删除目录
cd .. 返回上一级
ls和ll 列出当前目录下的所有文件
clear 清屏
exit 退出
git config --system --list查看系统级别的配置文件
git config --global --list查看当前用户配置
4.用户配置(必须)
系统配置git安装目录etc下的gitconfig文件。
用户配置c盘user用户目录下.gitconfig目录
git config --global user.name "wangzeyu" git config --global user.email "wangzeyu@email.com"
5. 基本理论✨
Workapce工作区
Index/Stage暂存区
Repository本地仓库
Remote远程仓库 --> GitHub
![[image-20221108081152691.png]]
6. 项目搭建
生成公钥ssh,实现免密登录
$ ssh-keygen -t rsa
在系统c盘用户目录下生成一个私钥和一个公钥文件,打开id_rsa.pub公钥,拷贝到gitee
- 在Gitee上新建仓库
- 然后克隆下载git clone gitee项目的url地址
- 再把克隆下来的文件复制到新建的idea项目中,或者直接使用该目录作为项目
- add到暂存区(在idea左下角的Terminal使用命令git add .)
- commit到本地仓库(git commit -m "提交新文件")
- push到远程仓库(git push)
- 此时刷新Gitee就显示出来了
7.Git分支(branch)
新建分支的方法:
在Gitee代码位置可以新建分支,默认主分支是master。
idea右下角Git:master也可以新建分支,+New Branch
![[image-20221108200251297.png]]
![[image-20221108200209201.png]]
切换分支
选中要切换到的分支,然后点Checkout
![[image-20221108200718287.png]]
注:如果是在Gitee中新建的分支,需要在idea项目中右键Git->Repository->Fetch刷新出来。
回退分支
git reset
尽量别用
合并分支merge
需要先切换到master主分支,然后Git->Repository->Merge
上面的是本地的,下面的是服务器上的分支
![[image-20221108204034267.png]]
自定义合并分支
eg.把A,B分支合并到C分支?
先Checkout选择到C分支,然后在分别把A,B两个分支Merge合并进来。最后push。
其他说明
一台电脑上可以配置多个SHH Key
https://gitee.com/help/articles/4229#article-header1
不同网站(例如Github和Gitee)进行SSH通信要填不同的邮箱来生成密钥对。
检查现有 SSH 密钥
- 打开Git Bash。
- 输入
ls -al ~/.ssh
以查看是否存在现有的 SSH 密钥。
生成新 SSH 密钥
- 打开Git Bash。
- 粘贴下面的文本(替换为您的 GitHub 电子邮件地址)。
$ ssh-keygen -t ed25519 -C "your_email@example.com"
当系统提示您“Enter a file in which to save the key(输入要保存密钥的文件)”时,可以按 Enter 键接受默认文件位置。 请注意,如果以前创建了 SSH 密钥,则 ssh-keygen 可能会要求重写另一个密钥,在这种情况下,我们建议创建自定义命名的 SSH 密钥。 为此,请键入新的密钥保存位置,并将 自定义的密钥名称 eg.id_rsa2
加在后面。注意这个id_rsa2
是文件名,不是目录名。
> Enter a file in which to save the key (/c/Users/YOU/.ssh/id_rsa2):[Press enter]
- 在提示符下,键入安全密码。注意它这里密码是不显示的,连*星号都没有。
- 在GitHub头像 -> Settings -> SSH and GPG keys -> New SSH key -> 把生成的公钥粘进去
- 添加后测试一下
ssh -T git@github.com
为Gitee和GitHub设置不同的key
- 打开Git Bash,
cd ~/.ssh
进入.ssh目录,如果.ssh文件夹不存在,利用mkdir ~/.ssh
指令自动创建 ssh-keygen -t ed25519 -C 'wangzeyu@tom.com' -f ~/.ssh/github_ed25519
然后回车三次,为GitHub生成公钥ssh-keygen -t ed25519 -C 'wangzeyu@tom.com' -f ~/.ssh/gitee_ed25519
也是回车三次,为Gitee生成公钥- 上面两个邮箱可以不同,我为了方便记忆写成一样的。
- 分别测试一下,
ssh -T git@github.com
和ssh -T git@gitee.com
- 如果报错:
git@github.com: Permission denied (publickey).
,就要添加主机到本机SSH可信列表,即将 SSH 私钥添加到 ssh-agent。 - 输入
ssh-agent -s
,然后ssh-add ~/.ssh/github_ed25519
,我这里的id是github - 如果还报错:
Could not open a connection to your authentication agent
,就执行如下命令:ssh-agent bash
- 然后再执行
ssh-add ~/.ssh/github_ed25519
- 最后测试一下,显示Hi username!就success了。
- 更好的办法是在.ssh目录下新建一个config文件,注意该文件无后缀!
# gitee Host gitee.com HostName gitee.com PreferredAuthentications publickey IdentityFile ~/.ssh/gitee_ed25519 # github Host github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/github_ed25519
git bash清屏
方法一:快捷键 Ctrl+L
该方法只是把滚动条置于最下方,还是可以滚动屏幕看到原来操作过的命令和记录。
方法二:输入reset命令加回车键
该方法能实现真正的清屏,所有打印记录,所有操作过的命令可以通过上下箭头迅速查看。
方法三:输入clear回车键
GitHub
- 先在本地文件夹,右键Git Bash输入
git init
初始化一个本地仓库 - 另外
git status
可以查看当前仓库的文件状态,clear
可以清屏 - 然后把要管理的文件添加到暂存区
git add 文件名
,将当前目录下的所有文件到暂存区:git add .
- 再把暂存区的文件提交到Git仓库中
git commit -m 提交的说明
- 先在GitHub上新建一个仓库
- 复制给出的远程仓库地址
- 给远程仓库起个别名,一般叫它
origin
,命令是git remote add origin 远程仓库地址
在Git中`git push xxx复制的地址 master(要推送的分支名称,这里写master)``- 改分支名称
git branch -M main
- 添加
-u
可以帮你记住本次提交的远程仓库地址和分支名称git push -u origin main
,下次提交只用git push
就行
Windows平台下使用git add文件时出现”warning: LF will be replaced by CRLF“提示
**什么是CRLF和LF **
- CRLF 是 carriage return line feed 的缩写;中文意思是 回车换行。
- LF 是 line feed 的缩写,中文意思是换行。
- CR为回车符,LF为换行符。Windows结束一行用CRLF,Mac和Linux用LF。
git config --global core.autocrlf false
false表示取消自动转换功能。适合纯Windows。
true表示提交代码时把CRLF转换成LF,签出时LF转换成CRLF。适合多平台协作。
input表示提交时把CRLF转换成LF,检出时不转换。适合纯Linux或Mac。
*更好的办法,比较麻烦:参考文章:
- 如果设置
core.autocrlf = false``,那么很可能会出现CRLF和LF混合的情况,这样会导致一些问题,例如``git diff
失去功能,会发现很多行代码并没有修改,
然而被认为是修改过了。 - 首先
core.autocrlf = true
在windows上才是正确的选择,那么如何避免warning呢?还要有以下几个步骤:
- 添加.gitattributes
- 设置
core.safecrlf = true
- 使用dos2unix、notepad++等工具来将LF转换成CRLF
本文作者:Ritchie里其
本文链接:https://www.cnblogs.com/wang-zeyu/p/16923889.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步