GIT基础使用

Posted yangjunh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GIT基础使用相关的知识,希望对你有一定的参考价值。

GIT简介

分布式版本控制系统,用于高效的管理各种大小项目和文件。

sudo apt-get install git

GIT使用

基本概念

  • 工作区: 项目所在操作目录,实际操作项目的区域
  • 暂存区: 用于记录工作区的工作(修改)内容
  • 本地仓库: 用于备份工作区的内容
  • 远程仓库: 远程主机上的GIT仓库

注意: 只有仓库区的内容才能和其他远程仓库交互。

  • 项目操作过程

    # 项目文件夹内初始化仓库
    git init
    # 关联本地和远程仓库
    git remote add origin path
    # 查看链接状态
    git remote
    # 代码本地准备
    git add * # 提交到暂存区
    git commit * -m 'name' # 提交到本地仓库
    # 本地仓库同步到远程仓库
    git push origin master
  • 远程同步报错及解决

    • 请确认您有正确的访问权限并且仓库存在

      # 本地
      用户主目录进入.ssh文件,找到公钥
      # 没有公钥时创建公钥
      ssh-keygen -t rsa -C 'email'
      # 在github-setting-ssh中加入公钥
    • 请确认您有正确的访问权限并且仓库存在

      # 远程仓库和本地同步,消除差异
      git pull origin master --allow-unrelated-histories
      # 重新add、commit、push

配置命令

# 需要在项目目录内配置
git config [作用域] [选项]
# 作用域
--system
--global
# 选项
1. 配置用户名
git config --system user.name name
2. 配置用户邮箱
git config --global user.email email
3. 配置编译器
git config core.editor pycharm
4. 查看配置信息
git config --list

基本命令

  • 本地仓库
# 初始化仓库
git init
# 解除管理时删除.git文件即可

# 查看本地仓库,默认工作在master
git status

# 忽略设置
.gitignore文件
file            表示忽略file文件
*.a             表示忽略所有 .a 结尾的文件
!lib.a          表示但lib.a除外
build/          表示忽略build/目录下的所有文件
  • 工作区
# 工作区-暂存区
git add a b c/*/.
# 取消暂存
git rm --cached [files]
# 暂存区-工作区
git restore <file>新
git checkout [commit id前7位] -- [file]旧

# 工作区-本地仓库
gti commit [files] -m [message]
# 比较工作区文件和仓库文件差异
git diff  [file]

# 工作区-工作区
# 工作区移动或者删除文件
git mv [file] [path]
git rm [files]
# 保存工作区内容
git stash save [message]
# 查看工作区列表
git stash list
# 应用某个工作区
git stash apply [stash@{n}]
# 删除工作区
git stash drop [stash@{n}]  删除某一个工作区
git stash clear  删除所有保存的工作区

版本控制

# 查看commit日志记录:全球唯一编号,可以只用前7位
git log [--pretty=online](只显示ID和message)
# 查看所有操作记录:最上面为最新记录,利用commit_id去往任何位置
git reflog

# commit节点操作全是本地仓库内
# 退回到上一个commit节点
git reset --hard HEAD^
# 一个^表示回退1个版本,工作区自动和当前commit版本保持一致

# 退回到指定的节点
git reset --hard [commit_id/tag]

# 标签:记录节点,添加快照(备份),保存工作状态,用于版本迭代。
# 创建
git tag  [tag_name] [commit_id] -m  [message]
# commit_id可以不写则默认标签表示最新的commit_id位置
# 查看
git tag  查看标签列表
git show [tag_name]  查看标签详细信息
# 删除
git tag -d  [tag]

分支管理

每个人在原有代码(master分支)的基础上建立自己的工作环境,单独开发,互不干扰。完成开发工作后再进行分支统一合并,逐层合并,新分支会拥有原有分支的全部内容。

# 查看分支情况
git branch [-a]  
> 前面带 * 的分支表示当前工作分支
> -a标识所有分支
# 创建分支
git branch [branch_name]  
# 切换工作分支
git checkout [branch]  
# 创建并切换分支
git checkout -b [branch_name]  
# 合并分支:父分支下
git merge 子分支[branch]
> 原分支发生了变化,和分支创建时不一样就会产生冲突 
> 当合并分支时添加新的模块,冲突自动解决,只需自己决定commit
> 当合并分支时两个分支修改同一文件,则需要手动解决冲突,在主分支中删除=====/>>>>>HEAD/<<<<<<子分支,再进行add,commit。
# 删除分支
git branch -d [branch]  删除分支
git branch -D [branch]  删除没有被合并的分支
# 关联/解除远程分支
git branch --set-upstream-to origin/develop
git branch --unset-upstream <branch-name>

远程仓库

远程主机上的git仓库。实际上git是分布式结构

# 获取项目
git clone path

# 链接远程仓库
git remote add origin(远程主机别名,默认origin) https://github.com/xxxxxxxxx
# 查看连接的主机
git remote
# 删除远程主机
git remote rm [origin]

# 获取远程分支代码:自动合并
git pull
# 将远程分支master拉取到本地,作为tmp分支:手动决定合并
git fetch origin  master:tmp
git merge temp
# 推送旧的版本
git push --force origin  用于本地版本比远程版本旧时强行推送本地版本

# 推送本地分支
git push -u origin  本地分支名master:远程分支名master
# 删除远程分支 
git push origin [:branch]

# 推送标签
git push origin [tag]  推送本地标签到远程
git push origin --tags  推送本地所有标签到远程
# 删除远程标签
git push origin --delete tag [tagname]

项目流程

1. 克隆服务器上的代码到本地。
git clone git@gitee.com:jackfrued/python.git
2. 创建并切换到自己的分支。
git checkout -b <branch-name>
3. 在自己的分支上开发并在本地做版本控制。
4. 将自己的分支(工作成果)推到服务器。
git push origin <branch-name>

以上是关于GIT基础使用的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

如何管理在每个 git 版本中添加私有代码片段?

markdown Git代码片段

GitGit 分支管理 ( 克隆远程分支 | 克隆 master 分支 git clone | 查看远程分支 git branch -a | 克隆远程分支 git checkout -b )(代码片段

GitGit 分支管理 ( 克隆远程分支 | 克隆 master 分支 git clone | 查看远程分支 git branch -a | 克隆远程分支 git checkout -b )(代码片段