Git学习摘要
# Git学习摘要
# Git下载
https://git-scm.com/download/win
# Git安装
一直点击下一步即可
# 安装成功

Bash相当于内置了一个Linux窗口的程序
# 配置用户名和邮箱
git config --global user.name "塞外暴风雪"
git config --global user.email "287077203@qq.com"
提示
右键显示git bash窗口后输入命令行如下:用户名和邮箱要与代码托管服务的一致
Administrator@WIYZAMVJLAVLSIS MINGW64 /d/GIT
$ git config --global user.name "塞外暴风雪"
Administrator@WIYZAMVJLAVLSIS MINGW64 /d/GIT
$ git config --global user.email "287077203@qq.com"
Administrator@WIYZAMVJLAVLSIS MINGW64 /d/GIT
$ git config --global user.name
塞外暴风雪
Administrator@WIYZAMVJLAVLSIS MINGW64 /d/GIT
$ git config --global user.email
287077203@qq.com
# 为常用指令配置别名(可选)
- 打开用户目录(user),创建.bashrc文件
如果手动不能创建,可以使用指令创建:
touch ~/.bashrc

在.bashrc文件中输入如下内容: #用于输出git提交日志
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
#用于输出当前目录所有文件及基本信息alias ll='ls -al'
打开gitbash,执行
source ~/.bashrc
# 为常用指令配置别名(可选)
第一、打开gitbash执行下面命令
git config –global core.quotepath false
第二、${git_home}/etc/bashrc文件最后加入下面两行
export LANG=”zh_CN.UTF-8”
export LC_ALL=”zh_CN.UTF-8”
# 本地仓库
在本地磁盘创建一个文件夹目录,比如git-LSVSystem。执行gitbash,输入命令git init创建空仓库,输入命令ll查看当前文件夹下的内容。
Administrator@WIYZAMVJLAVLSIS MINGW64 /d/GIT
$ git init
Initialized empty Git repository in D:/GIT/.git/
2
3
# 操作指令
Git工作目录下对于文件的修改(增加、删除、更新)会存在几个状态,这些修改的状态会随着我们执行Git命令而发生变化。

基本命令:
- git status 查看仓库的状况。
- git add fileName.format 提交文件到暂存区。
- git add . 提交所有新文件到暂存区。
- git commit -m “说明文字” 提交文件到仓库。
- git log --pretty=oneline --abbrev-commit --all –graph
- git reset --hard commitID 版本回退
- git reflog 记录所有操作
- git branch 查看分支
- git branch 分支名 创建新分支
- git checkout 分支名 切换分支
- git checkout -b 分支名 切换并创建分支
- git merge 分支名 将分支名的文件合并到当前分支
- git branch -d 分支名 删除一个分支
- git branch -D 分支名 强制删除一个分支
- git push -f origin master:master 完整的指令名称(-f强制覆盖)
- $ git config --global core.autocrlf false (warning: LF will be replaced by CRLF in 原因是存在符号转义问题)
- $ git rm -h 用法:git rm [<选项>] [--] <文件>... -n, --dry-run 演习 -q, --quiet 不列出删除的文件 --cached 只从索引区删除 -f, --force 忽略文件更新状态检查 -r 允许递归删除 --ignore-unmatch 即使没有匹配,也以零状态退出
未创建文件前的状态:

创建了一个Version.txt文件后的状态

将Version.txt提交到暂存区后的状态, git add

将Version.txt提交到仓库后的状态,git commit


查看仓库的提交日志,git log

当修改了Version.txt文件后的状态

将修改后的Version.txt文件再次 git add后

再次git commit后的状态

最后再git log查看仓库提交记录

优化显示:
$ git log --pretty=oneline --abbrev-commit --all --graph
* 651e0d4 (HEAD -> master) Update version file
* b9b427c add a file
2
3
如果指令太长,就用到了别名,详情请看上面。 版本回退 git reset --hard b9b427c 回退到这个版本

查看所有操作记录 git reflog

git .gitignore文件记录了需要忽略的文件格式,此处忽略*.a文件

git branch 查看分支 ;git branch dev01 创建一个dev01的分支

git checkout dev01切换分支

git checkout -b dev02 创建并切换到dev02分支

git merge dev01合并dev01分支的内容到master分支

# 分支使用原则和流程
- master :生产分支
- develop:开发分支
- hotfix/xxx分支
- test:测试分支
- pre:预上线分支

# 远程仓库
常用的托管服务(远程仓库)
- Github(https://github.com) 面向开源与私有软件项目的代码托管平台。因为只支持Git作为唯一的版本库格式进行托管管理。
- 码云(https://gitee.com)国内的代码托管平台。
- GitLab(https://about.gitlab.com)仓库管理的开源项目,使用git作为代码管理的工具,一般用于企业、学校等内部网络搭建git私服。
# 远程仓库码云使用
- 注册账号
- 创建仓库
- 配置SSH公钥
- b生成密钥: ssh-keygen -t rsa
- 查看密钥:cat ~/.ssh/id_rsa.pub
- 配置密钥到码云:将ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC+MgMSYrD3wp8cddH/Meol7vXI9FhQA2tKbbYbq/VnTd2MUhXE2L6KVYxc89i8UUUAc1QgnZxQbtnSRiV7M6NJ2DnryjUefM5h6G3xfPcBrqXn5VbwQqUcfeeAHKt+umzNNqh8rYDyywyoVZzQ82atoZeJ9EJzhU1HIg1uibAXM9P7U6lz8R8xfHALUFjbHiHukpb8lmAWaxq2h+TBbbZYl6RX+OnsBAgsoBi/uoSl0luoTQ/vUor49WEpksEizv5cSkirxwK/WYLRoRLR7f9sAU7tkrb8+/4Alx7hAE1O0a4I7kaORAKbvhCc4Ign2jlYtL3g0cpp6lvVNYJ7oSq8jA6q1Mz6SWRjfhLsg+xsYyuB3siIePE2ZbNQXQp93zotoRULPbnk4nJnTyEYmybXLIV0no/iwl4vfc5l6jSrp2cLGJcrblr83iXohI1/xolgrxUOwMCMAMzQ2vI1eDq96247sUIynvsTGBD0DydpHAN57HT43WccIfrPhYTZ8ZU= Administrator@DESKTOP-0TBMHJ6
- 复制到码云的密钥处
- 验证配置信息:ssh -T git@gitee.com

把本地仓库推送到远程仓库 git remote add origin git@gitee.com:yangliangxi/git-lsvsystem.git (地址为远程仓库的SSH地址)origin是远端名称 git push origin master 推送本地代码到远程仓库 git push -f origin master:master 完整的指令名称(-f强制覆盖)

git remote -vv 查看远程详细信息 git branch -vv 查看本地详细信息

git push –set-upstream origin master:master 将本地master 关联到远程master,这样在推送的时候,就可以省略掉分支名和远端名 ,即 git push

# 从远程仓库克隆
git clone 仓库路径git@gitee.com:yangliangxi/git-lsvsystem.git

# 从远程仓库抓取/拉取
- git fetch 远端名 分支名 将远端仓库里的更新抓取到本地,但是不会合并。如果不指定远端名和分支名,则抓取所有分支。
- git pull 远端名 分支名 将远端仓库的修改拉到本地并自动进行合并,等同于fetch +merge,如果不指定远端名和分支名,则抓取所有并更新当前分支。
- git pull origin master --allow-unrelated-histories

本地解决了冲突后才能push上远程仓库。 远程仓库有更新后,本地执行pull就将远程的更新拉到本地仓库。

# 创建Git密钥和公钥
https://git-scm.com/book/zh/v2/%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git-%E7%94%9F%E6%88%90-SSH-%E5%85%AC%E9%92%A5
