git 笔记

  • git软件大全
    • Git GUI 客户端
    • Git IDE 插件
    • Git 浏览器插件
    • 在线 Git 代码托管平台
    • 搭建 Git 服务
    • Git 教程
    • Git 常用命令

代码托管平台

git 仓库名称地址gitpage
githubgithub支持
gitlabgitlab支持
bitbucketbitbucket不支持
giteegitee暂停支持
腾讯 git腾讯 git不支持
慕课 git慕课 git不支持
阿里 git阿里 git不支持
gitcodegitcode不支持

安装 git

配置 git

账号密码管理仓库

  • 凭据
    • win 打开控制面板—>右上角搜索凭据—>点击管理 Windows 凭据—>找到你的gitee凭据操作
    • mac 打开 mac 钥匙串访问

配置ssh免密管理仓库

1
2
3
4
5
6
7
8
9
10
11
12
# 生成 ssh
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" # 生成 ssh 一路enter
clip < ~/.ssh/id_rsa.pub # win 复制ssh
pbcopy < ~/.ssh/id_rsa.pub # mac 复制ssh


git init # 初始化仓库。
git add . # 添加文件到暂存区。
git commit -m '第一次提交' # 将暂存区内容添加到仓库中。
git branch -M main # 创建分支
git remote add origin git@github.com:code-ba/hexo-issueslink.git # 添加远程版本库 (origin 是远程地址的意思)
git push -u origin main # 提交或者强制覆盖提交 git push -f origin main

配置文件

1
2
3
4
5
# 常用命令
less ~/.gitconfig # 查看账号配置
vi .git/config # (工程当前路径的Git配置文件)
vi ~/.gitconfig # (全局的Git配置文件)

配置ssh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Host 39.100.*.*

HostName 39.100.*.*
User root
ForwardAgent yes

Host github.com
HostName github.com
User baran
PreferredAuthentications publickey
IdentityFile E:\git\baran-demo

Host github.com
HostName github.com
User cxvh
PreferredAuthentications publickey
IdentityFile C:\Users\你的用户名\.ssh\id_rsa

Host code.aliyun.com
HostName code.aliyun.com
User cxvh
PreferredAuthentications publickey
IdentityFile C:\Users\你的用户名\.ssh\alicode\id_rsa

Host gitlab.com
HostName gitlab.com
User cxvh
PreferredAuthentications publickey
IdentityFile C:\Users\你的用户名\.ssh\gitlab\id_rsa

使用 git

创建密钥[ssh key]

doc

  • ssh-keygen
    • 默认路径,选填(./id_rsa_gitlab是相对当前路径的,可以写完整绝对路径)
      • win如果没权限可以在.ssh文件夹下面打开gitbash再生成 Enter file in which to save the key (/c/Users/Baran.Lee/.ssh/id_rsa): /c/ssh/
    • 默认密钥的密码空,选填 Enter passphrase (empty for no passphrase):
    • 确认密码 Enter same passphrase again:
    • 如果自定义了路径,可以通过.ssh/config文件自定义配置路径
  • 拷贝公钥
    • mac pbcopy < ~/.ssh/id_rsa.pub
    • win用gitbash clip < ~/.ssh/id_rsa.pub
  • 粘贴到设置配置公钥的地方,如github,点击add ssh key,title非必填

配置提交忽略文件或文件夹,根目录新建文件

.gitignore

1
2
3
4
5
.history
index.js
src/index.js
theme/default/
node_modules/

初始化仓库

初始化本地仓库

  • git init
  • git add README.md 或者 git add .
  • git commit -m "first commit"
  • git branch -M main
  • git remote add origin https://github.com/cxvh/docs.git
  • git push -u origin main

已有仓库

  • git remote add origin https://github.com/cxvh/docs.git
  • git branch -M main
  • git push -u origin main

多人使用 git 需要先邀请为团队成员
github的邀请在邮箱可以收到,码云的邀请直接登录个人账号能收到

想要找到所有的操作记录时如何进行操作

  • 查看所有提交记录git log
  • 查看某个人的提交记录git log --author='Baran'

配置用户名和邮箱

  • 添加用户名git config --add --global user.name 'cxvh'
  • 添加邮箱git config --add --global user.email '***@outlook.com'
  • 编辑用户名git config --global user.name 'cxvh'
  • 编辑邮箱git config --global user.email '***@outlook.com'
  • 查看配置信息git config --global --list
  • 删除 usergit config --global --remove-section user

想要修改项目中的文件时如何进行操作

查看项目当前的状态

  • git status
  • modified: demo.html (字红色) 意思是改动, demo.html 文件被改动,提示需要添加到暂存区
  • git add demo.html
  • git status
  • modified: demo.html (字绿色) 意思是改动, demo.html 文件被改动,此时文件在暂存区,可以提交到远程仓库

查看提交记录git log

想要删除不需要的文件时如何进行操作

手动删除文件

  • 删除后查看状态
  • git status
  • deleted:demo.html (字红色)
  • 把剩余的本地代码提交到暂存区
  • git add .
  • 在次查看状态
  • git status
  • deleted:demo.html (字绿色)
  • 提交到暂存区仓库
  • git commit -m 手动删除文件

命令行删除文件

  • 输入命令+要删除的文件或文件夹或文件夹下面的文件
  • git rm demo.html

删除文件后,记得把剩余文件添加到暂存区里面

  • git add .
  • git status
  • deleted:demo.html (字绿色)
  • git add .
  • git commit -m 命令行删除文件

想要给文件重命名时如何进行操作

手动重命名

  • 手动重命名后查看状态
  • git status
  • deleted:demo.html (字红色)删除了一个文件
  • home.html (字红色)添加了一个文件
  • git add home.html
  • git rm demo.html
  • git status
  • renamed:demo.html->home.html (字绿色)说明操作成功
  • git commit -m 手动重命名文件
  • git status

提交到远程仓库,查看状态:nothing to commit 是没有要提交的

命令行修改名字

  • 格式:git mv 当前名字 修改后名字
  • git mv home.html demo.html
  • git status
  • renamed:demo.html->home.html (字绿色)说明操作成功
  • git commit -m 命令行重命名文件
  • git status

再次提交到远程仓库,查看状态:nothing to commit 是没有要提交的

想要移动文件到其他位置时如何进行操作

移动文件到文件夹

  • 命令行格式:git mv 文件 文件夹
  • git mv demo.html page
  • git status
  • renamed:demo.html->page/demo.html (字绿色)说明操作成功
  • git commit -m '移动文件到文件夹并提交'

移动文件到文件夹 并 重命名

  • 命令行格式:git mv 文件 文件夹/文件名
  • git mv demo.html page/home.html
  • git status
  • renamed:demo.html->page/home.html (字绿色)说明操作成功
  • git commit -m '移动文件到文件夹 并重命名 并提交'

文件有变化时如何查看文件前后变化

文件重命名+移动+各种操作后,命令行查看文件的前后变化

  • 方法一
    • 格式:git log --pretty=online 文件的所在位置 名称 或 路径/名称
    • git log --pretty=oneline home/demo.html
    • 出来了 ID head -> 分支(master) 描述:移动文件并且重命名
    • 复制 ID
    • 格式:git show ID
    • git show b435ec75eabc959559a5sd9adasdsadasdas
  • 方法二
    • 格式:git log -p 文件的所在位置 名称 或 路径/名称
    • git log -p home/demo.html

操作失误的情况下如何实现一键还原

文件还没有提交到暂存区之前,让代码回到上一次提交的状态

  • 针对单个文件的还原
  • 自己找不同,手动还原
  • git diff
  • 红色删掉的,绿色添加的

命令行操作

  • git status
  • modified:home/demo.html 说明有改动的文件,那就还原他
  • git checkout -- home/home.html

不再追踪时如何实现撤销追踪操作

文件已经提交到暂存区,git 会对文件进行追踪,所以需要撤销追踪,然后还原

  • git reset HEAD home/demo.html
  • git checkout -- home/home.html

想要回到上一版本或者指定版本时如何进行操作

一个项目提交到暂存区 5 次,项目快速退回到第 3 次 提交的状态

  • 方法一
    • ^ 一个(^)代表回退一个版本,^ 两个(^^)代表回退两个版本,就到第 3 次 提交
    • git reset --hard HEAD^^
  • 方法二
    • 获取需要回退到的版本 ID (可以取前 7 位,也可以全部复制)
    • git log
    • 回退指定版本 ID(可以是 ID 前 7 位,也可以是完整 ID)
    • git reset --hard ID

想要将某一文件回到指定版本时如何进行操作

一个 项目 提交到暂存区 5 次,指定文件 快速退回到第 3 次 提交的状态

  • 获取要回退的版本 ID (可以取前 7 位)
  • git log
  • git checkout e748986 -- demo.html
  • git checkout e748986 -- home/home.html
  • git add .
  • git commit -m 将指定文件回退到指定版本

想要修改内容之后推送至远程仓库时如何进行操作

  • 推送到远程的master支上git push origin master
  • 设置默认推送远程地址git push --set-upstream origin main(设置成功后下次只需要git push即可)

想要给每个版本创建一个独特标签,做所有版本

  • 创建 taggit tag v1.0
  • 给指定 commit 版本 创建 taggit tag v0.5 9286adde
  • 查看 taggit tag
  • 删除 taggit tag -d v0.5
  • 推送 tag 到远程仓库git push origin v1.0

创建的 tag 默认 加到最新的一次 commit 上面

想要切换、删除分支时如何进行操作

分支操作:需要完成某些功能,从主线中剥离出来一些支线,由支线完成单独的功能,最后把支线合并到主线

  • 创建分支git branch dev
  • 查看分支git branch
  • 切换分支git checkout dev
  • 删除分支(不能删除当前的分支)git branch -d test
  • 强制删除分支(分支处于 commit ,没有 push 到远程仓库的状态也是不能删除)git branch -D test
  • 创建分支并切换到分支git checkout -b test

想要合并分支时如何进行操作

分支开发完成后,commit 到暂存区,合并到主线,
切换主线分支,然后把 dev 分支 合并到主线 master 分支

  • git checkout master
  • git branch
  • git merge dev dev合并到master dev 分支没有变化,master 是合并后的代码

当合并分支有冲突时如何正确的合并分支

两人都改了同一个文件后进行合并git merge dev

  • 解决方法一
    • 冲突,忽略 dev 分支代码,保留原分支(当前分支)内容
    • git merge --abort
  • 解决方法二
    • 手动处理冲突
    • git add .
    • git commit
    • 可编辑界面,按 i 可输入 加注释:这是解决冲突之后的正确代码,解决了 test.html 当中的冲突
    • 退出编辑:esc-->:wq-->enter
    • git commit -m 解决冲突之后的代码

不同人想要查看版本路线如何进行操作

  • 查看日志git log
  • 查看精简日志git log --oneline
  • 查看版本路线,分支日志git log --oneline --graph

不同人想要删除不想要的分支如何操作

  • 拉取所有的远程仓库git fetch
  • 查看远程分支git branch -av
  • 删除远程仓库分支(1.改分支是不是不需要了 2.该分支有没有合并到主分支)git push origin --delete dev

不同人修改了不同文件如何处理

张三给远程仓库 dev 提交了代码,修改了 a.html 文件,当前用户改了 b.html 需要提交到远程仓库

  • 查看远程分支
  • git branch -av
  • 出来了 remotes/origin/dev
  • 把远程的仓库 dev 分支 代码合并到暂存区的 dev 分支,再把暂存区的 dev 分支提交到远程仓库
  • git merge origin/dev
  • 按 i 编辑加入注释,退出编辑:esc—>:wq–>enter
  • 提交到远程 dev 仓库
  • git push

不同人修改相同的文件如何操作

  • 添加用户,模拟 A 用户 可忽略
    • git config --add --global user.name 'cc'
    • git config --add --global user.email 'qq@qq.com'
  • 查看本地分支与远程分支的关联
    • git branch -av
  • 远端分支与本地分支做关联
    • git checkout -b dev remotes/origin/dev
  • 对项目进行改动,然后提交
    • git add .
    • git commit -m 我需改的
    • git push
  • B 用户修改文件提交
    • git branch -av
    • git fetch
    • git branch -av
    • git checkout -b dev remotes/origin/dev
  • 对项目进行改动,然后提交
    • git add .
    • git commit -m 他需改的
    • git push

远程库与本地库不一致解决

  • 提交git push origin main
  • 报错error: failed to push some refs to 'https://github.com/cxvh/***'
  • 解决方法git pull --rebase origin main
  • 该命令的意思是把远程库中的更新合并到(pull=fetch+merge)本地库中,–-rebase的作用是取消掉本地库中刚刚的commit,并把他们接到更新后的版本库之中。出现如下图执行pull执行成功后,可以成功执行git push origin master操作。

从谷歌应用商店安装扩展

安装浏览器扩展: octotree(应用商店搜索出来第一个)

github 会出来左侧的导航树,类似编辑器的导航树,体验效果一样




安装浏览器扩展: enhanced github(应用商店搜索出来第一个)

github 会显示单个文件的大小,在单个文件旁边显示下载图标,点击可直接下载单个文件

安装浏览器扩展: gitzip for github(应用商店搜索出来第一个)

github 直接下载某个文件夹,文件夹空白处双击,出现下载图标,点击下载




git 命令思维导图

小技巧

  • git update-git-for-windows升级git版本
  • 使用ssh协议克隆时记得先生成公钥配置到git仓库
  • 生成密钥时,确保路径是正确的(路径存在),默认会生成在user用户下面的.ssh文件夹下面,如果.ssh不存在则保存失败,需要手动创建.ssh文件夹