Git基础(一)

Git基础概念

git在每次更新时,创建一个所有文件的快照。

git只能添加数据,不能清除数据,所以难以丢失数据。

git的三个工作区域:git仓库、工作目录、暂存区域。

git仓库:Git用来保存项目元数据和对象数据库的地方,从其他计算机克隆仓库时,即拷贝此处数据。

工作目录:对项目某个版本独立提取出的内容,即用于使用和修改的文件。

暂存区:一个保存了下一次将提交的文件列表信息的文件。

Git的配置命令

Git的配置信息存储在三个位置,即三个层次。

系统级,配置文件为Git的安装目录下的etc\gitconfig文件,使用--system选项的git config命令操作此文件。

用户级,用户文件夹下的.gitconfig文件,使用--global选项的git config命令操作此文件。

仓库级,仓库下的.git\config文件。

三个层次配置的优先级顺序:仓库>用户>系统

git config命令用于读写配置信息,可以通过反复执行来随时修改配置信息。

配置用户信息

git config --global user.name "tom"
git config --global user.email "[email protected]"

note:将用户名配置为tom,用户邮箱配置为[email protected],配置级别为用户级。

ps:在安装完git之后,第一件事情就是配置git用户信息。

ps:用户信息会写入每一次提交。

查看配置信息

git config --list

note:查看所有配置信息。

ps:git config user.email用来查看用户邮箱信息。

Git的基础使用命令

在现有目录中初始化仓库

git init

note:将当前文件夹转为git仓库。

ps:创建一个.git文件夹,但是新初始化的仓库并没有跟踪当前文件夹的文件,需要手动跟踪。

克隆现有的仓库

git clone https://github.com/user/repository

note:将github的user用户的repository仓库拷贝到当前文件夹下,执行后,当前文件夹下有一个名为repository的仓库。

ps:git clone https://github.com/user/repository ccc,将克隆后的仓库重命名为 ccc。

git中的文件状态

git中的文件只有两种状态,已跟踪、未跟踪。

已跟踪的文件状态有未修改、已修改、已放入缓存区。

eg:克隆的仓库下的文件状态都为已跟踪未修改。

查看当前文件状态

git status

note:可以使用git status -s查看状态简览。

ps:状态简览只会显示文件状态标识+文件,??表示未跟踪文件,左M表示已修改已暂存文件,右M表示已修改未暂存文件,A表示新添加已暂存文件

跟踪未跟踪文件

git add sss.txt

note:令git跟踪新文件sss.txt,变为已暂存文件。

ps:git add的参数是路径,如果参数为文件夹,则会递归跟踪文件夹下的所有文件。

ps:常使用 git add . 命令跟踪当前文件夹下的所有文件。

将已跟踪已修改文件暂存

git add xxx.txt

note:将已跟踪未修改文件xxx.txt暂存,变为已暂存文件。

note:git add是一个多功能命令。

设置忽略文件

将一些文件设置为无需纳入git管理的文件,这些文件不会被跟踪,也不会被git status提示。

使用.gitignore文件列出需要忽略的文件模式。

查看未暂存文件变化

git diff

ps:git diff --cached 或 git diff --staged查看已暂存文件变化

提交

git commit

note:将暂存区提交,未暂存的变化不会提交。

ps:执行命令后默认进入vim编辑器,编写提交信息。

ps:可以使用git commit -m "commit message" 的方法不打开编辑器,而是直接编写提交信息。

ps:git commit -a 直接将所有变化(包括未暂存的变化)提交。

删除文件

git rm sss.txt

note:将sss.txt从暂存区删除,删除操作会被直接暂存。

ps:如果被删除的文件已经发生了改动,需要加上-f选项强制删除。

ps:如果只是直接删除文件,操作不会暂存,会被不断提示删除为未暂存文件产生的改变需要暂存。

ps:git rm --cached sss.txt 将文件从暂存区删除,即将文件标识为未跟踪文件。用以防止误暂存。

重命名文件

git rm aaa.txt ccc.txt

note:将aaa.txt重命名为ccc.txt,并且将此操作暂存。

git不关心目录,不会把空文件夹视为变化。

查看提交历史

git log -2

note:查看最近两条提交历史。

ps:添加-p选项可以查看每次提交的变化。

重新提交

git commit --amend

撤销暂存

git reset HEAD cc.txt

note:强制取消cc.txt的暂存。

撤销文件的修改

git checkout -- aaa.txt

note:将文件aaa.txt恢复到上一次提交的状态。

远程仓库是指托管在网络上的项目的版本库。

查看已配置的远程仓库服务器简写

git remote

ps:可以使用git remote -v,查看远程仓库服务器的简写以及URL。

ps:git remote show origin,查看远程服务器的详细信息。

添加远程仓库

git remote add ccc https://example

note:添加简写为ccc,url为https://example的远程仓库。

从远程仓库拉取

git fetch origin

note:从远程仓库origin中抓取直到最后一次提交的克隆。

ps:git fetch不会修改当前工作,需要手动合并。

从远程仓库拉取并且合并

git pull

note:将当前分支跟踪的远程分支内容合并到当前分支,如果当前分支没有跟踪的远程分支,那么此命令执行失败。

ps:git push origin ccc,将远程仓库origin下的分支ccc中的内容合并到当前分支下。

推送到远程仓库

git push origin master

note:将master推送至origin服务器。

ps:默认情况下,git push origin xxx,会将xxx分支推送到远程分支xxx上,如果远程仓库origin没有远程分支xxx,则会新建一个分支xxx。

ps:git push origin kkk:ccc,将本地分支kkk推送至远程分支ccc。

远程仓库重命名

git remote rename ccc kkk

note:修改远程仓库简写名,ccc改为kkk。

远程仓库移除

git remote rm kkk

note:将远程仓库kkk移除。

标签类似于一个不可变分支。

查看所有标签

git tag

ps:git tag -l "1.0.*",查看1.0系列的所有标签。

查看指定标签

git show 1.1

note:查看1.1标签。

创建附注标签

git tag -a 1.1 -m "new version 1.1"

创建轻量级标签

git tag 1.2

ps:创建轻量级标签不需要任何选项,只需提供标签名。

后期打标签

git tag -a 1.0.1 2028

note:给部分校验和为2028的提交记录打上标签1.0.1。

推送标签

git push origin 1.1

note:将标签1.1推送至远程仓库origin。

ps:push操作不会推送标签。

ps:git push origin --tags 一次性推送所有标签。

使工作目录与标签一致

git checkout -b ttt 1.1

note:新建并移动到建立在标签1.1上的分支ttt。

为命令设置别名

git config alias.ls "!dir"

note:设置外部命令dir的别名为ls,通过git ls执行cmd的dir命令。

详细学习:https://git-scm.com/book/en/v2

猜你喜欢

转载自blog.csdn.net/qq_32165041/article/details/82426666