git使用及常见问题

安装

一直默认next即可

初始全局配置

建议使用github的账号信息
git config --global user.name "用户名"
git config --global user.email "邮箱"
如果不配置这些信息,就不是commit

创建仓库

在当前目录中

mkdir git_test
cd git_test
git init #初始化仓库(让仓库知道要管理当前文件夹),会创建.git隐藏目录

仓库文件介绍


在.git目录中存在以上文件(夹)功能如下:

  • hooks: 里面存放着生命周期钩子,指定某个操作的时候执行额外的某个功能。以pre-commit文件为例,在执行git commit命令之前,会自动执行这个文件中的代码。
  • info:包含全局性排除文件。某个文件不需要git管理时,就放在这里
  • logs: 保存日志信息
  • objects: 存储所有的数据内容,相当于代码的数据库。
  • refs: 存储指向数据(分支)的提交对象的指针
  • config: 存储当前git项目的局部配置信息。例如:
git config user.name "my_name"   #将此信息存储在config文件中(注意是双引号)
git config --global user.name "my_name"   #将此信息存储在系统中

#常用指令
* git status: 查看当前代码修改 状态
* git add filename: 添加到缓存区
 1. git add file1 file2 file2
2. git add .   :将当前目录添加到缓存区中
* git commit -m "annotation": 提交至版本库
* git checkout 用版本库里的版本替换工作区里的版本,一键替换(用于切换分支),git checkout -- 文件名:一键还原指定文件

#版本回退
1. 通过log日志查看版本信息:
 git log
 git log --pretty=oneline  #每一行都是一个时间点
commit 后面的长串数字就是版本号,相当于时间戳,其实前7位就行。
2. 回退操作:
* git reset --hard 版本号3 回滚到指定版本
* git reset --hard HEAD^ 回滚到上一次版本
回退到版本3,版本3之后的版本号(4,5)就没了。
回到过去后,如果想再回到刚才最新的版本5,则需要使用指令去查看历史操作,以得到最新的commit id(版本号)
``` git reflog```
查看版本历史操作 

#连接远程仓库
1. 创建空目录
2. 使用clone指令复制线上仓库到本地:
``` git clone 远程仓库地址```
3. 在仓库上做对应操作(提交暂存区,提交本地仓库,提交线上仓库,拉取线上仓库)
## git push
格式:git push <远程主机名> <本地分支名>:<远程分支名>  远程主机名可以使用origin来指代clone仓库时的主机
eg:

git push origin master

将本地的master分支推送到远程的master分支上(本地和远程的仓库
$ git push origin :master    #删除远程master分支
# 等同于
$ git push origin --delete master

推送一个空给远程的分支,相当于将其删除。

  • 拉取线上仓库: git pull
  1. 登录
    4.1 https连接
    修改.git中的config文件中的url:
    url = https://用户名:密码@github.com/qianshan1/test.git

4.2 ssh连接

  • 安装openssh
  • 生成公私钥对:ssh-keygen -t rsa -C "注册邮箱"
    会在目录:C:\Users\b2acm.ssh中id_rsa私钥和id_rsa.pub公钥,将公钥中的内容复制到github账户中即可。

分支操作

  • 查看分支: git branch
  • 创建分支: git branch 分支名
  • 切换分支: git checkout 分支名
  • 删除分支: git branch -d 分支名
  • 合并分支: git merge 被合并的分支名

git checkout -b 本地分支名 远程分支名

git checkout -b dev/1.5.4 origin/dev/1.5.4

先创建分支dev/1.5.4,再切换到该分支

忽略文件

  • touch .gitignore 新建.gitignore文件,对当前目录及其子目录生效。被过滤的在git push时不会传到远程仓库
    .gitignore文件的语法
  1. /myfolder/ 过滤整个myfolder文件夹
  2. *.zip 过滤所有zip文件
  3. /myfolder/do.txt 过滤具体某个文件
  4. !index.php 不过滤具体某个文件
    在文件中,以#开头的是注释
posted @ 2020-05-10 23:53  千山h  阅读(136)  评论(0编辑  收藏  举报