layout: post
title: Git分布式版本控制工具
description: Git分布式版本控制工具
tag: 开发工具
文章目录
- git 基本配置与指令
- 设置用户信息
- 为常用指令设置别名
- 解决gitbash乱码问题
- 基础操作指令:初始化、添加到暂存区、提交到仓库、查看状态、日志
- 版本回退git reset
- 配置.gitignore
- 分支
- 分支创建、删除、合并、查看
- 合并遇到冲突
- 远程仓库
- ssh公钥配置
- git推送本地项目到远程的空仓库
- 本地远程仓库操作
- 推送到远程仓库
git 基本配置与指令
设置用户信息
设置用户信息:
git config --global user.name "lewis"
git config --global user.email "lewissince2022@163.com"
查看用户信息:
git config --global user.name
git config --global user.email
为常用指令设置别名
有些常用指令可能参数很多,可以使用别名来简化命令。指令设置别名的具体方法如下:
- 打开用户目录,创建
.bashrc
文件,部分Windows系统不允许用户创建点开头的文件,可以打开gitbash,执行touch ~/.bashrc
- 在.bashrc文件中输入如下内容:
语法格式:alias 简化指令=实际指令
# 用于git提交日志
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
# 用于输出当前目录所有文件及基本信息
alias ll='ls -al'
- 打开gitbash,执行
source ~/.bashrc
,使得文件生效。
解决gitbash乱码问题
- 打开gitbash执行下面命令
git config --global core.quotepath fasle
- ${git_home}/etc/bash.bashrc (git_home即为git的安装目录)文件最后加入如下两行:
export LAN="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"
基础操作指令:初始化、添加到暂存区、提交到仓库、查看状态、日志
在当前目录下初始化仓库:git init
git中非常主要的两个指令git add
和git commit
add
将新建文件(未追踪)或修改过的文件(未暂存)提交到暂存区,commit
则将暂存区的修改加入到仓库,称为一次提交。
例子:
- 创建file01.txt:
touch file01.txt
- 查看git状态(当前工作区文件的状态):
git status
- 添加到暂存区(指定文件或者使用通配符’“.”添加所有):
git add file01.txt
或者git add .
- 再次查看状态:
git status
- 提交到本地仓库,并添加注释为“add file01”:
git commit -m "add file01"
- 再次查看状态:
git status
- 查看git日志:
git log
git log [option]
- –all 显示所有分支
- –pretty=oneline 将提交信息显示为一行
- –abbrev-commit 使得输出的commit更简短
- –graph 以图的形式显示
版本回退git reset
撤销某次不想要的提交:git reset --hard commitID
commitID使用git log
查看
撤销提交后在git log中将不再显示
如果想要查看已经删除的记录
git reflog
该指令记录了所有的操作
通过git reset --hard commitID
可以再找回撤销前的版本
配置.gitignore
某些不想纳入Git管理的文件,可以在gitignore文件中列出需要忽略的文件模式
创建.gitignore文件: tourch .gitignore
编辑.gitignore:
# no .a files
*.a
# but do track lib.a, even though you're ignoring .a files above
!lib.a
# only ignore the TODO file in the current directory, not subdir /TODO
/TODO
# ignore all files in the build/ directory
build/
doc/*.txt
# ignore all pdf files in the doc/directory
doc/**/*.pdf
分支
分支创建、删除、合并、查看
- 查看分支:
git branch
- 创建本地名为“dev01”分支:
git branch dev01
- 再次查看分支:
git branch
- 切换到分支dev01:
git checkout dev01
- 创建分支dev02并切换到该分支:
git checkout -b dev02
- 在dev02分支创建文件:
tourch file02.txt
- 切换回master分支,合并dev02
git checkout master
git merge dev02
- 删除分支dev02:git branch -d dev02
删除分支还有一个指令使用大写的D。
大写的D是不检查,强制删除,小写的d删除时会检查分支是否还有未merge的提交。
合并遇到冲突
假定两个分支对于同一行代码进行了修改,git 在merge时将无法自动合并,需要人为手动调。
远程仓库
ssh公钥配置
生成SSH公钥:
ssh-keygen -t rsa
- 不断回车
在Gitee设置账户公钥
- 获取公钥
cat ~/.ssh/id_rsa.pub
- 验证是否配置成功
ssh -T git@gitee.com
git推送本地项目到远程的空仓库
1- 在远程比如gitee建立空仓库,复制仓库地址,例如:https://gitee.com/lewissince2020/my-leet-code.git
2- 在本地项目的根目录右键git bash here,进入git命令行,
初始化:建立本地空仓库,自动生成.git文件夹,指令:
git init
3- 绑定远程项目orgin
git remote add origin https://gitee.com/lewissince2020/my-leet-code.git
4- 拉远程项目和本地合并
git pull origin master --allow-unrelated-histories
5- 添加待提交内容,‘.’的含义是所有文件
git add .
6- 提交到本地仓库,‘-m’的含义是本次推送的message说明
git commit -m 'init'
7- 推送到远程仓库
git push origin master
本地远程仓库操作
推送到远程仓库
- 推送命令:
git push [-f] [--set-upstream]
[远端名称][本地分支名][:远端分支名]- 如果远程分支名和本地分支名相同,则可以只写本地分支
git push origin master
- –set-upstream 推送到远端的同时并且建立和远端分支的关联关系
git push --set-upstream origin master
- 如果当前分支已经和远端分支关联,则可以省略分支名和远端名
git push
将master分支推送到已经关联的远端分支 - -f 是用本地分支强制覆盖远端分支的意思(假如远端和本地改变了同一程序的同一行发生冲突)
- 如果远程分支名和本地分支名相同,则可以只写本地分支
- 查看本地分支与远端对应关系
git branch -vv