首页 > 其他 > 详细

Git学习笔记

时间:2020-03-20 13:43:29      阅读:81      评论:0      收藏:0      [点我收藏+]

2020.3.19

Git

最先进的分布式版本控制系统,底层是c语言
git在本地保存着完整的历史版本,可以脱机查看开发的历史版本

Git 配置

有工具 git config ,专门用来配置或读取相应的工作环境变量。

  1. /etc/gitconfig 文件:
    系统中对所有用户都普遍适用的配置。
    若使用 git config 时用 --system 选项,读写的就是这个文件。
  2. ~/.gitconfig 文件:
    用户目录下的配置文件只适用于该用户。
    若使用 git config 时用 --global 选项,读写的就是这个文件。
  3. 当前项目的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件):
    这里的配置仅仅针对当前项目有效。
  • 每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量。
  • 在 Windows 系统上,Git 会找寻用户主目录下的 .gitconfig 文件。主目录即 $HOME 变量指定的目录,一般都是 C:\Documents and Settings$USER。

用户信息

$ git config --global user.name "chthollist"
$ git config --global user.email 1957897821@qqq.com

  • 用了 --global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。
  • 要在某个特定的项目中使用其他名字或者电邮,只要去掉 --global 选项重新配置即可,新的设定保存在当前项目的 .git/config 文件里。

添加远程地址

  • git remote add origin [url],加完之后进入.git,打开config,这里会多出一个remote "origin"内容,这就是刚才添加的远程地址,也可以直接修改config来配置远程地址。

此外,Git 还会尝试找寻 /etc/gitconfig 文件,只不过看当初 Git 装在什么目录,就以此作为根目录来定位。

工作流

本地仓库由 git 维护的三棵"树"组成。

  1. 工作目录working dir / working tree : 持有实际文件
  2. 暂存区Index : 临时保存改动
  3. HEAD : 指向最后一次提交的结果
    working diradd—> Indexcommit—> HEAD

在文件夹中右键 Git bash —> 以此目录作为当前目录进入命令行状态

  1. 新建仓库
    git init 当前目录下会出现.git目录,跟踪版本库,存放Git的数据和资源
    ( 版本库 = 仓库 = repository )

  2. 添加文件到本地库
    git add [filename] ( + git add * —> 将文件添加到暂存区 )
    git add .添加所有文件

  3. 提交文件到本地库
    git commit -m "提交说明" —> 将文件提交到本地仓库的HEAD中,但还没提交到远端仓库
    git commit -a -m "提交说明" —> 自动提交本地修改
    ( -a 可将所有被修改or已删除的且已被git管理的文档提交到仓库,但不会提交新文件 )
    • 可以多次add不同的文件,然后再一次性commit很多文件
    • git add 把工作区的修改提交暂存区,git commit 把暂存区的修改保存到本地库,git push 把本地库的记录推送到远程库
  • git status 查看当前本地库的状态 (是否有修改)
    git diff 查看前后的改动
    • a(---)改动前,b(+++)改动后 / index后接git哈希值
    • 在commit后git diff 不会显示任何东西
  1. 发布版本
    git clone ssh://……………….git —> 从服务器克隆一个库并上传
    git push ssh://……………….git(分支) —> 修改后推送到服务器(远端仓库)
    git remote add origin server —> 未克隆仓库时,将仓库连接到远程服务器
  • 克隆仓库
    1. 创建一个本地仓库的克隆版本
      git clone /path/to/repository
    2. 远端服务器上的仓库
      git clone username@host:/path/to/repository
  • 取回 & 更新
    git pull —> 将当前分支自动与唯一一个追踪分支进行合并
    git pull http://……………….git —> 从非默认位置更新到指定的url
  • 替换本地改动
    git checkout --<filename> —> 使用HEAD中最新内容替换掉工作目录中的文件,已添加到暂存区的改动以及新文件都不会受到影响
    git fetch origin + git rest --hard origin/master —> 丢弃在本地的所有改动和提交,可以到服务器上获取最新的版本历史,并将本地主分支指向它
  • 删除
    git rm file
  • 分支branch & 合并merge
    分支是用来将特性开发绝缘开来的。在你创建仓库的时候,master 是"默认的"分支。在其他分支上进行开发,完成后再将它们合并到主分支上。
    git branch test —> 创建一个新的分支 test
    git checkout test —> 更改分支 ( 主分支 / 第一个分支 : master )
    git checkout -b test —> 创建分支并切换过去
    git merge test —> 合并其他分支到当前分支
    git branch -d test —> 删除分支
    git diff <source_branch> <target_branch> —> 预览差异(git自动合并改动时可能出现冲突conflicts)
  • 标签
    git log —> 获取ID
    git tag 1.0.0 <log_10>(要标记的ID的前10位) —> 创建标签1.0.0

  • gitk —> 内建图形化git
  • git config color.ui true —> 彩色的git输出
  • git config format.pretty oneline —> 显示历史记录时,每个提交的信息只显示一行
  • git add -i —> 交互式添加文件到暂存区


上传到远程版本库

  1. 初始化git版本库 git init
    (当前目录下会出现.git目录,跟踪版本库,存放Git的数据和资源)
  2. 添加文件到本地库 git add .(添加所有文件)
  3. 提交文件到本地库 git commit -m "msg(提交日志)"
    (2.3.可合并 —> git commit -am "" )
  4. 关联远程库 git remote add branch_Name(master) [url]
    可以用 git remote -v 来检查是否关联成功
  5. git pull origin master

    同步GitHub Pages (在git bash 中)

  6. clone 项目
    $ git clone https://GitHub.com/chtholist/chtholist.github.io
    // 输入上面这个(完整的网址)
    Cloning into ‘chtholist.github.io‘...
    remote: Enumerating objects: 17, done.
    remote: Counting objects: 100% (17/17), done.
    remote: Compressing objects: 100% (16/16), done.
    remote: Total 17 (delta 5), reused 0 (delta 0), pack-reused 0
    Unpacking objects: 100% (17/17), 4.67 KiB | 88.00 KiB/s, done.
  7. 进入项目的文件中,创作文章

问题

  • 出问题没法解决就git remote rm master & git remote rm origin
  1. 无法回到Git Bash中开头为$的操作界面
    按下Esc,接着输入wq保存退出(连按两次大写Z)

  2. warning: LF will be replaced by CRLF

Git Bash模拟linux环境,会默认把Windows下的回车CRLF替换成linux下的换行LF,让git忽略这个换行符: git config core.autocrlf false

  1. git push后出现错误 [rejected] master -> master(non-fast-forward) error:failed to push some refs to XXX

    1. 在添加远程仓库git remote add origin [url]后先git push origin masterget add .
    2. git pull --rebase origin mastergit push -u origin master
    3. 把远程仓库和本地同步消除差异git pull origin master --allow-unrelated-histories ,再重新add & commit
    4. 强制上传(慎用): git push -f origin master
  2. Authentication failed for

git的账号密码有问题,先查看用户信息git config --list,不行就重新配置git config --global user.name [username] & git config --global uer.email [email]

  1. fatal: remote origin already exists

git remote rm origin,再重输git remote add origin [url]

Git学习笔记

原文:https://www.cnblogs.com/chtholist/p/12530390.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!