Git学习笔记(详细)(Git learning notes (detailed))

https://gitee.com/all-about-git git大全

概述

  • 官网:https://git-scm.com/
  • Git是一个免费的、开源的分布式版本控制系统
  • 代码托管中心(远程库):局域网GitLab、互联网GitHub、码云Gitee

安装Git

  • 官网下载,直接默认安装即可(尽量不要修改路径),鼠标右键出现Git Bash Here即安装成功。
  • 查看版本:git bash 里面执行git –version
  • git bash很卡,清理windows临时目录可以解决:C:\Users\Administrator\AppData\Local\Temp

常用命令

  • 查看所有命令git –help
  • 查看某个命令的帮助文档git add –help, 会出现网页的文档供查看
# 设置用户签名
$ git config --global user.name xxx
$ git config --global user.email xxx@example.com

# 检查配置
$ cat ~/.gitconfig

# 初始化本地库 将当前目录变成一个git仓库 会生成一个.git目录
$ git init

# 查看状态
$ git status

# 添加修改到暂存区(新文件、修改文件、删除文件都要add到stage)
$ git add hello.txt

# 删除暂存区里的文件
$ git rm --cached hello.txt

# 提交到本地库 -m说明 不写也会打开一个编辑器让写
$ git commit -m "my first commit" hello.txt		# 或者git commit hello.txt -m "comment"
$ git commit -m "my first commit"				# 提交所有暂存区的修改
$ git commit -am "hot fix first commit "		# 相当于add + commit 自动提交所有修改到暂存区, 并提交到本地库
# 查看版本日志
$ git reflog  # 引用日志, 记录所有版本的版本号, 包括回滚, 精简版
$ git log     # 查看详细日志(提交作者和提交日期), 只有当前版本和以前的版本信息
$ git log --pretty=oneline # 在一行内显示

# 版本穿梭, 移动的是head指针, master分支 -> head指针 -> 具体的版本
$ git reset --hard xxxxxxx	# 根据git reflog中的版本号进行穿梭版本
$ git reset --hard HEAD^	# ^^表示回退两个版本,HEAD~100表示回退100个版本

分支管理

$ git branch --help	# 查看所有branch命令
$ git branch		# 查看所有分支 *号表示当前分支
$ git branch -v		# 查看所有分支
$ git branch hot-fix	# 创建分支hot-fix
$ git check hot-fix		# 切换到分支hot-fix
$ git merge hot-fix		# 将hot-fix分支合并到当前分支 如果两个分支同时修改了同一个文件会有冲突 当前状态会在MERGING状态 此时需要编辑冲突的文件 其中会标出当前分支修改的部分 hot-fix分支修改的部分 修改后再提交
$ git branch -d hot-fix		# 删除分支, 需要保证该分支的内容已经合并到它的HEAD版本的分支

团队协作:

  • 团队内协作,一个远程库即可,需要创建者加入权限,开发者clone代码到本地库,修改后push,其他成员pull即可
  • 跨团队协作,fork别的远程库,修改后push,发起pull request请求远程库拉取自己修改后的代码,审核通过会merge到他们的远程库里
    公共库都可以clone,不需要验证,首先需要在github上创建远程仓库git-demo,可以在github上邀请协作
    ssh免密登录
# 由于本地git仓库和远程git仓库是通过SSH加密的,所以需要配置ssh,首先本地生成ssh的公钥和私钥,将公钥配置到github上,配置了ssh免密登录才可以使用git@github.com:YourName/xxx.git,否则只能使用https://github.com/YourName/xxx.git,且需要验证
$ ssh-keygen -t rsa -C bingmous@163.com		# 直接回车,在用户目录下会生成.ssh目录,里面有公钥和私钥

团队内协作

####已有本地仓库,在github上创建仓库后,将本地仓库同步到远程库
$ git remote add ori https://github.com/bingmous/git-demo.git	# 添加远程库 git remote add 别名 地址(远程仓库的地址)
$ git remote add origin https://gitee.com/bingmous/git-demo.git		# gitee 注意ori只是一个别名
$ git remote -v		# 查看远程库,会有fetch和push两个 -v表示详细
$ git push -u ori master	# 推送当前库到远程库(第一次推送)-u使用ori作为上游
$ git pull origin master	# 拉取最新代码

####直接从远程库clone
$ git clone https://gitee.com/bingmous/git-demo.git # clone做了三件事 拉取代码 初始化本地仓库 创建远程库别名(默认为origin)

跨团队协作

  • fork一下,会在自己的远程库里多一个fork的库
  • 修改代码后,提交,并创建pull request,发送pull request,在对方的仓库下就可以看到你的pull request
  • 对方看到pull request后可以看到修改的代码,并与自己的代码合并
————————

https://gitee.com/all-about-git git大全

summary

  • 官网:https://git-scm.com/
  • Git is a free, open source distributed version control system
  • Code hosting Center (remote library): LAN gitlab, Internet GitHub, code cloud gitee

安装Git

  • Download from the official website and install directly by default (try not to modify the path). Right click to display git bash here, and the installation is successful.
  • 查看版本:git bash 里面执行git –version
  • git bash很卡,清理windows临时目录可以解决:C:\Users\Administrator\AppData\Local\Temp

Common commands

  • View all commands git — help
  • View the help document git add — help of a command, and the document of the web page will appear for viewing
# 设置用户签名
$ git config --global user.name xxx
$ git config --global user.email xxx@example.com

# 检查配置
$ cat ~/.gitconfig

# 初始化本地库 将当前目录变成一个git仓库 会生成一个.git目录
$ git init

# 查看状态
$ git status

# 添加修改到暂存区(新文件、修改文件、删除文件都要add到stage)
$ git add hello.txt

# 删除暂存区里的文件
$ git rm --cached hello.txt

# 提交到本地库 -m说明 不写也会打开一个编辑器让写
$ git commit -m "my first commit" hello.txt		# 或者git commit hello.txt -m "comment"
$ git commit -m "my first commit"				# 提交所有暂存区的修改
$ git commit -am "hot fix first commit "		# 相当于add + commit 自动提交所有修改到暂存区, 并提交到本地库
# 查看版本日志
$ git reflog  # 引用日志, 记录所有版本的版本号, 包括回滚, 精简版
$ git log     # 查看详细日志(提交作者和提交日期), 只有当前版本和以前的版本信息
$ git log --pretty=oneline # 在一行内显示

# 版本穿梭, 移动的是head指针, master分支 -> head指针 -> 具体的版本
$ git reset --hard xxxxxxx	# 根据git reflog中的版本号进行穿梭版本
$ git reset --hard HEAD^	# ^^表示回退两个版本,HEAD~100表示回退100个版本

Branch Management

$ git branch --help	# 查看所有branch命令
$ git branch		# 查看所有分支 *号表示当前分支
$ git branch -v		# 查看所有分支
$ git branch hot-fix	# 创建分支hot-fix
$ git check hot-fix		# 切换到分支hot-fix
$ git merge hot-fix		# 将hot-fix分支合并到当前分支 如果两个分支同时修改了同一个文件会有冲突 当前状态会在MERGING状态 此时需要编辑冲突的文件 其中会标出当前分支修改的部分 hot-fix分支修改的部分 修改后再提交
$ git branch -d hot-fix		# 删除分支, 需要保证该分支的内容已经合并到它的HEAD版本的分支

Teamwork:

  • In team collaboration, a remote library can be created, and the creator needs to join the permission. The developer can clone the code to the local library, push it after modification, and other members can pull it
  • Cross team collaboration, fork other remote libraries, push after modification, initiate a pull request to request the remote libraries to pull their modified code, and merge it into their remote libraries after approval
    All public libraries can clone without verification. First, you need to create a remote warehouse git demo on GitHub, and you can invite collaboration on GitHub
    SSH password free login
# 由于本地git仓库和远程git仓库是通过SSH加密的,所以需要配置ssh,首先本地生成ssh的公钥和私钥,将公钥配置到github上,配置了ssh免密登录才可以使用git@github.com:YourName/xxx.git,否则只能使用https://github.com/YourName/xxx.git,且需要验证
$ ssh-keygen -t rsa -C bingmous@163.com		# 直接回车,在用户目录下会生成.ssh目录,里面有公钥和私钥

< strong > teamwork < / strong >

####已有本地仓库,在github上创建仓库后,将本地仓库同步到远程库
$ git remote add ori https://github.com/bingmous/git-demo.git	# 添加远程库 git remote add 别名 地址(远程仓库的地址)
$ git remote add origin https://gitee.com/bingmous/git-demo.git		# gitee 注意ori只是一个别名
$ git remote -v		# 查看远程库,会有fetch和push两个 -v表示详细
$ git push -u ori master	# 推送当前库到远程库(第一次推送)-u使用ori作为上游
$ git pull origin master	# 拉取最新代码

####直接从远程库clone
$ git clone https://gitee.com/bingmous/git-demo.git # clone做了三件事 拉取代码 初始化本地仓库 创建远程库别名(默认为origin)

< strong > cross team collaboration < / strong >

  • If you fork, you will add a fork library to your remote library
  • 修改代码后,提交,并创建pull request,发送pull request,在对方的仓库下就可以看到你的pull request
  • After the other party sees the pull request, it can see the modified code and merge it with its own code