git学习笔记

1.Git简介

git安装与配置

  1. 首先从git官网下载git安装,然后再打开git bash,配置以下指令:
//使用--global参数,表明本地所有仓库都使用这个配置,也可以对不同仓库单独配置
git config --global user.name "your name"
git config --global user.email "your email"	
//可使用如下命令查看自己的用户名和email
git config [ user.name|email ]

创建版本库

版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

  1. 创建一个新文件夹当作仓库
  2. 使用 git init 命令把这个目录变成Git可以直接管理的仓库
$ mkdir repositories
$ cd repositories
$ pwd	//输出==> '/d/Development Kit/Repositories'
$ git init

pwd命令显示当前路径

使用Git上传文件到仓库

​ 使用Git只能管理一些纯文档的文件,比如文字、代码等,Git每次都能检测到详细的变动,而像音频、图像等二进制形式的文件,Git只能检测到大小变化,无法获取详细的内容变化。

​ 使用Git上传文件到版本库,需先在Git管理下的仓库中执行,子目录也可以,非Git管理目录Git是检测不了的。一般分两步:

  • 1、使用git add filename告诉Git添加文件filename到仓库

    $ git add readme.txt	//没有任何提示则执行成功
    //readme.txt文件内容:
    i am very happy
    i got a job
    
  • 2、使用git commit -m "说明"提交内容到仓库

    $ git commit -m "第一次提交readme.txt"
    [master (root-commit) e5d334f] my first readme
     1 file changed, 2 insertions(+)
     create mode 100644 readme.txt
    
    • 1 file changed : 一个文件改变
    • 2 insertions:插入了两行内容
  • 使用git add可以多次添加多个文件,而git commit则一次性提交多个文件

$ git add file1.txt
$ git add file2.txt file3.txt

2.时光穿梭机

$ git status	//查看工作区的状态,可看到是否有文件被修改,亦或是未准备提交
$ git diff		//difference的缩写(unix),可查看文件改变的具体内容

版本回退

commit快照:Git会自动保存历史版本记录,方便用户回退版本

  • 使用git log查看历史版本记录,每条记录由版本号、作者、修改日期和说明组成

    git log [--pretty=oneline]
    
  • git中通常使用git reset命令来进行版本回退,其中用head来表示当前版本,head是指向当前版本的一个指针

git reset --hard head^		//回退到上一个版本
git reset --hard head^^		//回退到上上个版本
git reset --hard head~100	//回退到往上100个版本
  • 若我们回退到了旧版本,但后悔了,想回退到新版本,则只需使用版本号即可
git log
git reset --hard x_xx	//版本号可以不用写全,但必须保证不会出现二义性
    
例如:    
$ git reset --hard e94a445ede7bf9706a44ec96ec791f
HEAD is now at e94a445 append GPL

  • 使用git reflog可以查看历史命令,以确定回到相应版本
$ git reflog
e94a445 (HEAD -> master) HEAD@{0}: reset: moving to e94a445ede7bf9706a44ec96ec791f
26ad658 HEAD@{1}: reset: moving to head^
e94a445 (HEAD -> master) HEAD@{2}: commit: append GPL
26ad658 HEAD@{3}: commit: 覆盖原语句
e5d334f HEAD@{4}: commit (initial): my first readme

工作区和暂存区

1、工作区

​ 即电脑中我们能看到的目录

2、版本库

​ 工作区中有一个隐藏目录.git,则叫Git的版本库。Git的版本库主要有stage(暂存区)、Git自动帮我们创建的第一个分支master,以及指向master的指针Headimage-20230319145411367

注:若在工作区添加了新文件且未提交,则Git会提示untracked file

3、添加文件到版本库

​ 之前我们把文件添加到版本库分为两步,现在再具体剖析一下:

  • 首先我们修改后的文件存放在工作区中,然后通过git add files工作区中的文件放入暂存区中。
  • 然后使用git commit -m命令将暂存区中的所有文件一次性提交到当前分支下。
  • commit后且工作区没有做任何改变,则stage暂存区就是空的。

4、关于git diff

git diff		//比较工作区和暂存区
git diff HEAD -- filename		//比较工作区和仓库
git diff --cached		//比较暂存区和仓库
  • 若暂存区为空,则比较工作区和仓库。此时 git diff <=> git diff HEAD(比较工作区与仓库)
  • 若暂存区不为空,则比较工作区和暂存区。
  • git diff --cached 比较暂存区和仓库

管理修改

​ Git基于追踪修改来管理文件版本,只有add到暂存区的文件,才会被commit到仓库中。

若:

  • 第一次修改file1 => git add file1 => 第二次修改file1 => git commit -m "",则只会提交第一次的修改版本。
  • 如果一个文件修改过了,则应及时加入暂存区,或在commit时先git status一下。

撤销修改

git checkout --file	//可用于丢弃工作区的修改,让文件回到最近一次'git commit'或'git add'时的状态

两种情况:

1、当文件自修改后还未放入暂存区时,git checkout让文件回到与版本库一样的状态

2、当文件放入暂存区后又做了修改时,git checkout则让文件回到添加到暂存区时一样的状态

删除文件

​ 当我们在工作区删除了一个文件file,使用git status可以看到文件被删除的操作,如果真要删除这个文件,那么就继续使用

git rm file,然后再git commit,文件就彻底从工作区和版本库中删除了。

​ 如果是误删了,则可以使用git checkout -- file从版本库中恢复最新版本的文件。

PS :一旦执行了git rm file或手动删除后执行了git add file,则git checkout -- file无法恢复,只能回退版本

3.远程仓库

添加一个远程库

​ 现在我们在本地已经有了一个git库,如果我们想在Github上也创建一个远程库,并且让这两个库相互关联、同步。方法如下:

  1. 首先在Github上新建一个仓库,这里命名为gitStudy

  2. 接着我们在想与之关联的本地库中,打开Git Bash,然后执行如下命令,执行成功后本地库就与Github上的远程库关联好了。

    $ git remote add origin git@github.com:hsn951/gitStudy.git
        //执行上述指令后,本地库就可与远程库相关联
    $ git push -u origin master		//把本地内容推送到远程库
     //由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
     $ git push origin master	//之后可直接push
    

    !!!然而,在执行时却报了一个这样的错误

    Permission denied (publickey). 
    fatal: Could not read from remote respository.
    

    原因:通常是由于个人Github 平台没有添加公钥,需要进一步添加密钥

    解决方法:

    1.生成公钥和密钥

    右键桌面打开Git Bash,执行ssh-keygen -t rsa -C "xxx@qq.com",直接敲三次回车后生成公钥和密钥。

    2.找到c:/user/电脑账户/.ssh/id_rsa.pub文件,复制你的公钥

    3.进入Github,点击头像=》找到设置=》找到SSH=》new 一个

    最后再执行一遍git push -u 即可。

  3. 删除远程库
    如果我们想要删除一个远程库,通常使用git remote rm 远程库名,其实只是解绑了本地库和远程库的关联

    $ git remote rm origin
    $ git remote -v		//也可以先在删除前查看一下远程库的信息
    

从远程库克隆

​ 克隆一个Github上的仓库到本地库

$ git clone git@github.com:hsn951/res_1.git		//此处用的是SSH

4.分支管理

4.1-创建与合并分支

4.2-解决冲突

4.3-分支管理策略

4.4-Bug分支

4.5-Feature分支

4.6-多人协作

4.7-Rebase

posted @ 2024-07-25 15:52  Arthur-Morgan  阅读(3)  评论(0编辑  收藏  举报