git的自学笔记

方便自己后续回头看,将学习笔记记录在此处,这里的学习参考

目录

0.环境

1.用户配置命令

(0)查询git的版本

(1)添加用户信息--用户名与邮箱

(2)检查配置信息

(3)检查指定信息

2.git常用操作--下载、推送、删除

(1)使用git下载gitlab远程仓库中的文件

(2)向gitlab远程仓库上推送文件

(3)删除gitlab远程仓库中文件/文件夹

3.git常用命令

(1)查询文件状态

(2)忽略文件

(3)查看未暂存与已暂存的修改

 (4)删除暂存区文件

 (5)移动文件或重命名文件(会被暂存)

 (6)查看提交历史

 (6)撤销操作

 (7)远程仓库的使用

 (8)git版本标签管理

 (9)git别名

参考



 

Git 有三种状态,你的文件可能处于其中之一: 已提交(committed)已修改(modified) 和 已暂存(staged)

Git 项目拥有三个阶段:工作区、暂存区以及 Git 目录:

基本的 Git 工作流程如下:

  1. 在工作区中修改文件。

  2. 将你想要下次提交的更改选择性地暂存,这样只会将更改的部分添加到暂存区。

  3. 提交更新,找到暂存区的文件,将快照永久性存储到 Git 目录。

 

0.环境

windows
git==2.16.1

    windows下直接点击下载git安装 

1.用户配置命令

    gitlab配置ssh

(0)查询git的版本

git --version

   自己尝试的例子: 

(1)添加用户信息--用户名与邮箱

git config --global user.name "John Doe"
git config --global user.email johndoe@example.com

   自己尝试的例子

   使用了 --global 选项,那么该命令只需要运行一次,因为之后无论你在该系统上做任何事情, Git 都会使用那些信息;当你想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行没有 --global 选项的命令来配置。

(2)检查配置信息

git config --list

   自己尝试的例子

(3)检查指定信息

   通过关键字查询指定信息。

git config <key>
git config color.diff

   自己尝试的例子

2.git常用操作--下载、推送、删除

(1)使用git下载gitlab远程仓库中的文件

   Git 克隆的是该 Git 仓库服务器上的几乎所有数据,而不是仅仅复制完成你的工作所需要文件。 当你执行 git clone 命令的时候,默认配置下远程 Git 仓库中的每一个文件的每一个版本都将被拉取下来。

git clone git@***/my_project.git

   自己尝试的例子

(2)向gitlab远程仓库上推送文件

   如果使用git上传一个新文件,那么需要先使用如下命令,创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这些文件是 Git 仓库的骨干。

git init

现在新建了一个新文件g.java,想上传到gitlab上,使用如下命令:

git add g.java                                    //跟踪一个文件,上传到仓库,已暂存
//或上传文件夹中中所有使用如下命令:
git add .

git commit -m '上传g.java文件'                    //将add的文件commit到仓库



//①使用git下载下来的已经与远程仓库创建联系,不需要这一步;②如果c是新建的远程仓库(preoject)那么需要此步
git remote add origin git@***/my_project.git     

git pull origin master                           //pull自动抓取后合并该远程分支到当前分支
git push -u origin master                        //上传
git push origin HEAD:refs/heads/master

    自己尝试的例子

 

 

 

(3)删除gitlab远程仓库中文件/文件夹

git rm -r -n --cached 文件/文件夹名称    //展示此命令要删除的文件列表预览
git rm -r --cached 文件/文件夹名称       //删除
git commit -m "提交说明"                 //提交说明
git push origin master                   //提交到本地并推送到远程服务器

例子:
删除文件夹.idea
git rm -r -n --cached .idea
git rm -r --cached .idea
git commit -m "删除.idea"
git push origin master

删除子文件夹gif中的文件 org.gif
git rm -r -n --cached ./gif/org.gif
git rm -r --cached ./gif/org.gif
git commit -m "删除git/org.gif"
git push origin master

3.git常用命令

(1)查询文件状态

   编辑过某些文件之后,由于自上次提交后你对它们做了修改,Git 将它们标记为已修改文件。 在工作时,你可以选择性地将这些修改过的文件放入暂存区,然后提交所有已暂存的修改,如此反复。

Git 下文件生命周期图。

 

git status

文件状态主要分为两种“未跟踪”和“已跟踪”{(未修改)、(未暂存)和(已暂存)}。使用上面命令后,文件状态会出现在下面四种情况下。

Untracked files:                     //未跟踪
nothing to commit, working tree clean //已跟踪-->未修改
Changes not staged for commit:        //已跟踪-->已修改未暂存
Changes to be committed:              //已跟踪-->已修改已暂存

自己的例子(由于前面已经上传了,也没有修改):

下面文件状态一览命令如下:

git status -s 
or
git status --short

输入命令后,可能存在的几种状态如下: 

$ git status -s
?? file1      //??表示file1未跟踪
A  file2      //A 表示file2已跟踪、新暂存
 M file3      // M表示file3已跟踪、已修改、未暂存
M  file4      //M 表示file4已跟踪、已修改、已暂存
MM file5      //MM表示file5已跟踪、已修改暂存后又修改(存在仓库中的为之前修改的版本)

(2)忽略文件

    一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。在这种情况下,我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件的模式。

    文件 .gitignore 的格式规范如下:

  • 所有空行或者以 # 开头的行都会被 Git 忽略。

  • 可以使用标准的 glob 模式匹配,它会递归地应用在整个工作区中。

  • 匹配模式可以以(/)开头防止递归。

  • 匹配模式可以以(/)结尾指定目录。

  • 要忽略指定模式以外的文件或目录,可以在模式前加上叹号(!)取反。

这里参考中写得不错,直接用了。

// 忽略所有的 .a 文件
*.a

// 但跟踪所有的 lib.a,即便你在前面忽略了 .a 文件
!lib.a

// 只忽略当前目录下的 TODO 文件,而不忽略 subdir/TODO
/TODO

// 忽略任何目录下名为 build 的文件夹
build/

// 忽略 doc/notes.txt,但不忽略 doc/server/arch.txt
doc/*.txt

// 忽略 doc/ 目录及其所有子目录下的 .pdf 文件
doc/**/*.pdf

(3)查看未暂存与已暂存的修改

   想知道具体修改了什么地方,可以用 git diff 命令。  

//查看未暂存文件,做了哪些更新
git diff 

//查看已暂存文件,相对最后一次暂存的文件做了哪些修改
git diff --staged
or 
git diff --cached

 (4)删除暂存区文件

git rm file_name

 (5)移动文件或重命名文件(会被暂存)

git mv file_from folder/file_to

 (6)查看提交历史

git log

   自己的例子

  其中一个比较有用的选项是 -p 或 --patch ,它会显示每次提交所引入的差异(按 补丁 的格式输出)。 你也可以限制显示的日志条目数量 。

git log -p -1

 自己的例子

 还有一些详细的参数,需要的时候看这里

 (6)撤销操作

    在任何一个阶段,你都有可能想要撤消某些操作。

git reset HEAD file1    //撤销已暂存file1的暂存状态,即将file1从暂存区拉回未暂存状态
git checkout -- file2  //撤销未暂存、已修改file2的修改
git commit --amend      //撤销已提交状态,重新提交暂存区文件

   在目录下新建requirements.txt文件后,自己尝试的例子依次:

   ①撤销已暂存file1的暂存状态,即将file1从暂存区拉回未暂存状态

   ②撤销未暂存、已修改requirements.txt的修改(我们修改requirements.txt)。

 

     ③暂时就不尝试了

 (7)远程仓库的使用

//远程服务器名称
git remote       

//需要读写远程仓库使用的 Git 保存的简写与其对应的 URL
git remote -v    

//添加一个新的远程(简写为shortname,URL为url)的 Git 仓库
git remote add <shortname> <url>
例:git remote add pb https://github.com/paulboone/ticgit

//从远程仓库中抓取与拉取,它并不会自动合并或修改你当前的工作
git fetch <remote>
例:git fetch pb

//抓取数据并自动尝试合并到当前所在的分支
git pull

//推送到远程仓库
git push <remote> <branch>
例:git push pb master

//查看某个远程仓库
git remote show <remote>
例:git remote show pb

//远程仓库的重命名
git remote rename <remote1> <remote2>
git remote rename pb paul

//远程仓库的移除
git remote remove <remote>或 git remote rm <remote>
例:git remote remove pb 或 git remote rm pb

 (8)git版本标签管理

//列出标签
git tag

//查看指定标签信息
git show <tagname> 
例:git show v1.2

//列出感兴趣标签
git tag -l "Tag_of_interest"或git tag --list "Tag_of_interest"
例: git tag -l "v1.0.*"

//创建标签--附注标签(annotated):
git tag -a <tagname> 
git tag -a <tagname> -m "<Notes>"
例:git tag -a v1.4
    git tag -a v1.4 -m "my version 1.4"

//创建标签--轻量标签(lightweight):给提交打标签的方式是使用轻量标签。
git tag <tagname> 
例:git tag v1.4

//后期打标签
git tag -a <tagname> CRC 
例git tag -a v1.2 9fceb02
(
$ git log --pretty=oneline
9fceb02d0ae598e95dc970b74767f19372d61af8 updated rakefile
)

//共享标签(git push 命令并不会传送标签到远程仓库服务器上。 在创建完标签后你必须显式地推送标签到共享服务器上。 这个过程就像共享远程分支一样)
git push <remote> <tagname>  //推送指定标签
git push <remote> --tags     //推送多个标签
例:git push origin v1.5
    git push origin --tags 

//删除标签--本地(不会从任何远程仓库中移除这个标签)
git tag -d <tagname>
例:git tag -d v1.4

//删除标签--远程
git push <remote> :refs/tags/<tagname>
git push <remote> --delete <tagname>
例:git push origin :ref/tags/v1.4
    git push origin --delete v1.4

//检出标签(查看某个标签所指向的文件版本)
git checkout <tagname>                    //tag相当于是一个快照,是不能更改它的代码的
//如果要在 tag 代码的基础上做修改,你需要一个分支: 
git checkout -b <branch_name> <tagname>   //创建一个新分支

 (9)git别名

  git config 可以轻松地为每一个命令设置一个别名

git config --global <command_after> <command_origin>
例:git config --global alias.co checkout

 

参考

1.Git book

2.git切换到某个tag

3.git 删除远程仓库文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wait a minutes

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值