笔记"/>
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 工作流程如下:
-
在工作区中修改文件。
-
将你想要下次提交的更改选择性地暂存,这样只会将更改的部分添加到暂存区。
-
提交更新,找到暂存区的文件,将快照永久性存储到 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
自己尝试的例子:
使用了 --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 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 //从远程仓库中抓取与拉取,它并不会自动合并或修改你当前的工作
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.4git 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.5git 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.4git 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 删除远程仓库文件
更多推荐
git的自学笔记
发布评论