git与github笔记

1. git介绍

分布式版本控制工具,支持Linux命令
功能
  • 多人并行修改服务器端的同一文件
  • 保存提交过的历史状态
  • 对团队中的开发人员进行权限控制,对团队外的人员进行审核
  • 查看团队成员的修改内容、时间、日志
  • 将本地文件回退到某个历史版本
  • 团队开发时多条支线同时推进任务
  • 2.本地仓库与远程仓库管理

    本地管理

在这里插入图片描述

远程仓库团队内部管理

在这里插入图片描述

远程仓库团队外成员参与

在这里插入图片描述

3.本地仓库操作

1.初始化   git init

生成.git文件夹(默认隐藏),文件夹中包含了配置文件等本地库相关的目录和文件,如config文件中包含用户签名等信息

2.设置签名
形式为
用户名:xxxx
Email地址:xxx@xxx.com
用户名和Email地址可随意,仅用于区分开发者身份,与github、码云账号密码无关
用户签名分为:
项目级别(仓库级别):仅在当前本地仓库范围内有效
设置代码
git config user.name xxx
git config user.email xxx@xxx.com

配置文件保存在该项目下.git文件夹中的config里

系统用户级别:登录当前操作系统的用户范围
设置代码
git config --global user.name xxx
git config --global user.email xxx@xxx.com

配置文件位于C:\Users\Administrator\.gitconfig

当二者用户签名都存在时,会优先使用项目级别的签名。

3.git本地操作
3.1 将文件加入暂存区\从暂存区去除
  • 将文件加入暂存区  git add 文件名
  • 将文件从暂存区去除 git rm --cached 文件名
  • 将所有文件加入暂存区  git add *
  • 查看当前状态  git status

EG:git初始化后的文件夹中新建了test.txt文件,使用 git status查看状态为

$ git status
On branch master//当前在主分支

No commits yet//本地库无提交

Untracked files://未被追踪的文件
  (use "git add <file>..." to include in what will be committed)//提示使用git add追踪下面的文件
        test.txt

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

使用 git add test.txt 命令后

$ git add test.txt
warning: LF will be replaced by CRLF in test.txt.//行末的换行符会被转换
The file will have its original line endings in your working directory

再次使用 git status 查看状态

$ git status
On branch master//当前在主分支

No commits yet//本地库无提交

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)//使用git rm --cached 文件名从暂存区去除
        new file:   test.txt
3.2 将文件提交到本地库
  • 将文件快速提交到本地库 git commit -m "提交标识语句(eg:第一次提交)" 文件名
  • 将文件提交到本地库  git commit 文件名
  • 不使用快速提交会打开vim编辑器,要求添加提交标识语句
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch master
#
# Initial commit
#
# Changes to be committed:
#       new file:   test.txt
~
 C:/Users/Administrator/Desktop/gittest/.git/COMMIT_EDITMSG[+] [unix] (18:19 27/08/2021)                         1,1 全部-- 插入 --

i 键进入编辑模式,编辑完后esc,输入 : wq (必须小写)保存。(linux vim语法)

3.3 查看提交的日志
  • 完整查看历史记录 git log
  • 简洁版  git log --pretty=oneline
  • 简洁版并缩短了哈希值  git log --oneline
  • 在oneline基础上添加了回退版本指针需要移动的次数  git reflog
  • 3.4 版本回退/前进
    • 基于索引值  git reset --hard 哈希值
    • 基于^符号:只能后退  git reset --hard HEAD^
      一个^表示回退一个版本,n个^即回退n个版本
    • 基于~符号:只能后退  git reset --hard HEAD~回退数
      eg: git reset --hard HEAD~3
   3.4.1reset的参数
  • --soft   仅在本地库移动 HEAD 指针,不修改工作区和暂存区内容,工作区和暂存区内容仍为版本回退前的内容,因为本地库和暂存区内容不同了,此时git status会提示有新内容可提交(不常用)
  • --mixed  在本地库移动 HEAD 指针,同时暂存区也会回退到历史版本(不常用)
  • --hard 在本地库移动 HEAD 指针,暂存区、工作区也会一同被重置回历史版本
3.5 文件删除与找回
删除文件    rm 文件名

文件删除同样需要git add添加和git commit提交,将删除记录提交到本地库,以备版本回退。
找回文件将版本回退到删除前的版本即可
若删除文件后只添加到了缓存区,没有提交到本地库,此时本地库中是没有提交记录,但可以用 git reset --hard HEAD 命令将暂存区、工作区一起回退到没有删除文件和添加缓存的那个版本。
即:
删除操作已经提交到本地库   git reset --hard 哈希值
删除操作未提交到本地库       git reset --hard HEAD

3.6 文件比较
将工作区和暂存区的文件进行比较   git diff 文件名

若无文件名则将比较所有文件
删除内容将以红色表示,新增文件绿色标识

将工作区文件和历史版本进行比较   git diff 历史版本 文件名
eg:git diff HEAD new1.txt 和当前版本进行比较
eg:git diff HEAD^^ new1.txt 和上上个版本比较
eg:git diff 哈希值 new1.txt 和该哈希值对应的版本进行比较

4.分支
4.1 创建与切换分支
  • 创建分支  git branch 分支名
  • 切换分支  git checkout 分支名
  • 这两个代码可以合并,创建并切换到新建的分支  git checkout -b 分支名
  • 不能创建两个同名的分支,使用 git checkout -B 分支名 强制创建会重置原有的分支
  • 查看所有分支  git branch -v
4.2 合并分支
1.先切换到需要待修改的分支上   git checkout 分支名
2.执行合并   git merge 有新内容的分支名
4.3 解决冲突
当两个分支同一文件同一内容进行了不同修改,git将提示自动合并失败,打开文件会使用
<<<<<<<HEAD
当前分支修改内容
=========
被合并分支修改内容
>>>>>>>分支名

标识出冲突位置和内容,并且状态显示为正在合并,直接打开文件修改冲突内容后保存
然后使用  git add 文件名
      git commit -m “提交说明”
完成合并
注意!!git commit 命令后不跟文件名,否则会提示合并状态下无法进行提交


3. 远程仓库

3.1push与clone
在github创建仓库,并复制仓库地址

git init 在本地初始化文件夹,建立本地仓库

  • 创建远程仓库别名    git remote 别名 远程仓库地址
  • 查看当前所有仓库别名  git remote -v
  • 推到远程仓库      git push 别名 分支名
  • 克隆到本地          git clone 远程仓库地址
3.2 拉取
  • 拉取并直接合并    git pull 别名 远程分支名
  • 仅拉取远程库     git fetch 别名 远程分支名
  • 合并         git merge 远程库地址别名 / 远程分支名
  • 即 pull=fetch+merge
3.3冲突解决
当团队不同成员对同一文件进行了修改,后push 的人会被要求将本地库更新到最新版本,即需先 pull 到本地,而当拉取的远程库内容和本地库有冲突时,会直接进入待合并状态,需解决冲突位置。 即如果不是基于Github 远程库最新版本进行的修改,会无法进行push操作

4. 跨团队开发与fork操作

团队外的成员,可用 Github 中的 fork 将心仪的仓库复制一份到自己的仓库中,fork的仓库会保留来源。 在自己的仓库中编辑完后,可用 Github 中的 Pull requests 将修改提交给原作者。 原作者可通过 Merge pull request 合并代码,书写合并操作日志后 Confirm merge完成合并。

5. ssh免密登录设置

5.1 生成.ssh密钥目录
cd ~ 返回根目录
ssh-keygen -t rsa -C github账号 生成.ssh密钥目录,密钥文件夹在win10中默认路径为C:\Users\当前登录win10的用户名
文件夹中默认生成 id_rsaid_rsa.pub文件
使用命令 cat id_rsa.p 或直接用记事本打开文件,复制内容
打开github的头像→Settings→SSH and GPG keys 位置,New SSH Key 后进行粘贴
5.2 配置ssh
创建远程仓库别名 git remote 别名 远程仓库ssh

此时使用 git remote -v 查看列表中将新增ssh地址,此时即可用push ssh别名 远程分支使用ssh进行操作。

6. Github常见报错

记录一下自己遇到过的问题,解决方法都是网上找到的
6.1 无法连接
fatal: unable to access 'https://github.com/xxxxx.git/'之类的错误
将链接中的https改为git
6.2 git push 时报错 error 10054
push的文件太大,缓存默认只有1M,将缓存改为500M
git config http.postBuffer 524288000
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值