git常用命令
1.配置个人签名
提交更改所必须的两个配置,因为必须要告诉在这个git仓库里的所有人是谁在改代码,这个仅供参考,不会被校验,这个仅仅是用于本地提交版本库所使用的个人签名,和远程代码托管中心基给予的账号没有任何关系
git config --global user.name 名称 设置用户名称
git config --global user.email 邮箱 设置用户邮箱
2.初始化仓库
在一个目录下初始化一个git仓库,相当于是对一个目录安装了git然后可以对目录中以后所有的文件进行版本控制
git init
3.查看当前git仓库状态
一般用于查看目前版本库的状态,如果有任何问题都会显示在上面,在提交或者是添加到暂存区前最好都执行一遍
git status
git status 结果解析
on branch master //在哪个分支里
no commits yet //目前的版本历史是空的
untracked files: //有未添加到暂存区的文件
nothing added to commit but untracked files present
// 没有暂存区的文件需要提交但是现在有没有添加到暂存区的文件
tips:
git rm --cached filename 将git中暂存区的文件删去但是不会影响工作区的实际文件。
4.提交到版本库
git commit -m “版本信息” filename/目录/空
filename/目录代表仅提交指定的文件,空代表全提交
git reflog (打印所有包括被回退的版本历史)
git log 打印HEAD及之前的提交历史(被回退的版本不会被打印出来1)
提交后的信息:
一个文件被改变,1行新增,1行删除
前面是commit id
tips:
红色意味着修改还没有被添加进暂存区
5.版本穿梭
*git reset --hard commitID/tag/HEAD指针(HEAD~3) 回退到指定的提交中 --hard代表抛弃工作区/暂存区的所有更改 (这部分要多了解点)
–soft commit -> commit的更改放在暂存区中,–hard commit -> commit的更改全部扔掉,–mixed commit -> commit的更改放在工作区中
版本穿梭功能的实现实际是利用tips中的层级指针来实现,其次版本的存储并不是意味着文件副本的存储而是修改的存储
tips:
.git文件夹中的HEAD写明指向哪个分支,分支中对应的信息又写明了指向哪次提交
6.分支
分支其实就是多人协作工作的主要流程
git branch -v 查看当前的分支及 版本信息
颜色+ *号代表 HEAD指针
git branch 分支名 创建分支
git checkout 切换分支 (git checkout -b new_branch 远程仓库名/new_branch 此处可以用这个命令去做创建新分支并切换新分支相当于branch+checkout)
git merge 分支名 合并分支名所指分支到当前分支
tips:
切换分支的实质其实就是切换HEAD指针
7.代码冲突
合并状态:
正在合并中-要处理合并冲突
两个分支都更改了当前文件中的同一行
解决冲突:
vim both modified的文件
<<<< Head
当前分支的内容
==========
要合并到当前分支的 相同行代码内容
》》》》要合并到当前分支的分支名
修改即删除保留或修改代码至合并后的状态即可,同时删去代码冲突的符号
在提交合并后的代码文件时,git commit -m “msg” 不能带文件名因为git不知道是哪个分支的文件
提交解决冲突的文件后变为正常意味着合并冲突解决(对git来说)
8.远程分支操作
git remote add 别名 git仓库地址
git remote -v 查看分支
git push 远程仓库名/别名 本地分支名:远程分支名
git pull 远程仓库名 远程分支名:本地分支名 (与git push 相反)
git clone 远程仓库地址 分支名
Clone代码是不需要登陆账号的 (对github来说)
1.拉去代码 2.初始化本地库 3.创建别名-看安装时的选择有无自定义别名,没有就是origin
tips:
推送代码到github 的时候需要 仓库权限者的账号凭据
上是用浏览器的github账号登陆
下是用口令登陆
此时在win的凭据管理器中应当有此处github对应的账号凭据
上面是git仓库地址,下面是邀请成员加入git仓库的url,两者只是最后一级不同
跨团队协作的提交(github功能)
9.ssh免密登陆
如果是用github的话
那么就需要本地生成公私钥,然后将公钥放到github上个人账户里的ssh秘钥管理页面里
如果使用gitlab的话那么就要在config里配置host等信息然后放入gitlab的公钥