一、配置用户名与邮箱
git 操作之前要先配置好用户名与邮箱。
配置用户名:$git config --global user.name 名称
查看用户名:$git config user.name
配置邮箱:$git config --global user.email 邮箱
查看邮箱:$git config user.email
二、初始化
**情况一:**决定将某个文件夹作为本地仓库时,需要进行初始化。
**情况二:**如果将远程仓库 clone 到本地后,得到的文件夹则会自动成为本地仓库。
初始化:$git init
三、查看文件状态
文件状态根据所在位置不同,分为 untracked、unstaged、staged 三种。
命令:$git status
其中 untracked 和 unstaged 都处于未添加的状态,需要用 git add .** 来添加至暂存区,也就是 staged 状态,但此时还没有加入本地仓库,需要使用 **git commit -m "提示信息" 添加至本地仓库,这样才算得上一次提交,而**$git log**统计的正是每次 git commit 的情况。
四、查看日志
命令:$git log [ options ]
[ options ] 选项有如下几种,可写成:$git log --all --pretty=oneline --abbrev-commit --graph
选项含义:
--all 表示显示所有分支
--pretty=oneline 表示将信息显示为一行
--abbrev-commit 表示简化 commit ID
--graph 表示图形化显示
五、回退至某个版本
命令:$git reset --hard commit ID
commit ID 可以通过 git log 查看;对于删除的日志,则可以通过 git reflog 获取 commit ID。
六、添加忽略文件
每次添加时,一般使用 **$git add .**添加全部。如果不想添加某些文件,可以在 .gitignore 文件中提前设置。
**第一步:**使用 touch 命令创建 .gitignore 文件。
**第二部:**使用 vim 在 .gitignore 文件中编辑要忽略的文件名称。
七、分支
master 为主分支,有时候根据工作需要会添加新的分支,以开发新的功能。
创建分支:$git branch 分支名
切换分支: $git checkout 分支名
在 git log 中 head 指向的就是当前分支,此外在 git bash 窗口中也可以直接看到当前在哪个分支。
创建并切换分支:$git branch -b 分支名
查看分支: $git branch
删除分支: $git branch -d 分支名
强制删除分支: $git branch -D 分支名
强制删除的情况适用于某个分支做了修改,但未提交,此时如果强制删除,则删除分支的同时,修改也同时被丢弃。
八、远程仓库
远程仓库一般是 github 或者 gitee,注册完成之后新建一个远程仓库,一个仓库只能存放一个项目。实现远程仓库与本地仓库的连接有两种方法,一种是通过 http 实现,另一种通过 SSH 实现。
使用 http 连接时需要输入账号密码,所以一般采用 SSH 公钥连接。
首先在 git bash 中输入**ssh-keygen -t rsa**生成公钥,然后通过 **cat ~/.ssh/id_ras.pub**查看公钥。将公钥复制粘贴至远程仓库,即可完成连接。
验证是否连接:$ ssh -T git@gitee.com
(一)添加远程仓库
命令:$git remote add origin SSH_url/http_url
两种 url 都可以作为地址添加至本地仓库的远程仓库对象表中,但后续使用时对应的连接协议不同。
添加远程仓库与密码无关,不是自己的远程仓库也可以添加至自己本地仓库的对象表中,但肯定 push 不上去。
(二)查看远程仓库对象表
命令:$git remote -v
一个本地仓库可以添加很多远程仓库,通过该命令可以查看远程仓库名称。
如果加上选项**-v**,不仅会显示远程仓库名称,也会显示出对应该仓库的 url。
$git remote 仓库名-url表示查看指定远程仓库的 url。
(三)推送
命令:$git push 远程仓库名/远程仓库的url 本地分支名:远程分支名
例如:$git push origin master:master
如果是在一个项目上做的修改,一般用 $git push 就足够。
(四)拉取和抓取
拉取:$git pull 远程仓库名 分支名
拉取表示将远程仓库的修改抓取至本地后顺带进行了 merge 合并。
抓取:$git fetch 远程仓库名 分支名
抓取表示将远程仓库的修改抓取至本地后未进行 merge 合并
上述不指定分支名的话,默认拉取/抓取所有分支。
(五)克隆
命令:$git clone http_url
九、解决冲突
不论是本地仓库的冲突,还是远程仓库的冲突都是在本地解决。如果是本地仓库的冲突,直接修改文件,再提交。如果是远程仓库的冲突,先拉取到本地,在本地将文件修改之后,再提交。