zoukankan      html  css  js  c++  java
  • Git的基本知识及应用

    安装

    方法一:在windows点击安装

    方法二:安装 GitHub Desktop

    配置

    # 查看配置
    $ git config --list
    $ git config --list --show-origin
    
    # 配置用户信息
    $ git config --global user.name "John Doe"
    $ git config --global user.email johndoe@example.com
    

    每一个 Git 提交都会使用这些信息,它们会写入到你的每一次提交中,不可更改。 当你想针对特定项目使用不同的用户名称与邮件地址时,可以不带--global

    文件状态

    工作目录下文件的两种状态:已跟踪或未跟踪。已跟踪的文件是指本来就被纳入版本控制管理的文件,在上次快照中有它们的记录。

    输入图片描述

    • Untracked files 未跟踪文件
    • Changes to be commited 暂存文件
    • Changes not staged for commit 已跟踪文件内容发生变化,但没有放入暂存区

    基础

    克隆现有的仓库

    $ git clone https://github.com/libgit2/libgit2
    

    基础操作

    # 检查当前文件状态
    $ git status	
    
    # 跟踪文件		
    $ git add <file>			
    $ git add .					//跟踪所有,即将所有文件加入暂存区
    
    # 提交文件
    $ git commit 				//提交暂存文件
    $ git commit -m "说明"		//提交并附加说明
    $ git commit -a 			//自动把所有已经跟踪过的文件暂存起来一并提交
    
    # 移除文件
    $ git rm <file>				//移除跟踪并删除文件
    $ git rm -f <file>   		//移除暂存
    $ git rm --cached <file> 	//移除跟踪但不删除文件
    
    # 查看历史提交记录
    $ git log					
    $ git log -p  				//展开提交的内容差异
    $ git log -p -2				//最近的两次更新
    $ git log --stat			//显示简要的增改行数统计
    
    # 查看已暂存和未暂存的更新
    $ git diff					//查看尚未暂存的文件更新内容
    $ git diff --cached 		//查看已经暂存起来的文件和上次提交时的快照之间的差异
    
    # 撤销操作
    $ git commit --amend		//修改最后一次提交
    $ git reset HEAD <file>		//取消某个文件的暂存
    $ git checkout -- <file>	//取消对文件的修改
    
    # 文件重命名
    $ git mv <file_from> <file_to>	
    

    忽略某些文件

    创建一个名为 .gitignore 的文件,列出要忽略的文件模式

    *.a							//忽略所有 .a 结尾的文件
    build/						//忽略 build/ 目录下的所有文件
    

    远程操作

    # 查看远程仓库
    $ git remote						//列出远程库的简短名字
    $ git remote -v						//显示对应的克隆地址
    $ git remote show [remote-name]		//查看指定远程仓库信息
    
    # 添加远程仓库 
    $ git remote add [shortname] [url]  //shortname通常为origin
    
    # 从远程抓取代码到本地
    $ git fetch [remote-name]				//拉取到当前工作分支 不自动合并
    $ git pull [remote-name] [branch-name]	//下载代码并合并
    
    # 上传代码到远程仓库
    $ git push [remote-name] [branch-name]
    $ git push origin master  				//举例 把本地的master分支推送到origin服务器上
    
    # 远程仓库重命名
    $ git remote rename [old-remote-name] [new-remote-name]
    
    # 移除远程仓库
    $ git remote rm [remote-name]
    

    标签操作

    # 列显已有的标签
    $ git tag
    $ git tag -l 'v1.4.2.*'				//用特定搜索模式列出符合条件的标签
    
    # 新建标签
    $ git tag [tag-name]				//保存着对应提交对象的校验和信息的文件
    $ git tag -a [tag-name]				//含附注类型的 独立对象 有自身的校验和信息
    $ git tag -s [tag-name]				//有私钥时 签署标签
    $ git tag -v [tag-name]				//验证标签 此命令会调用 GPG 来验证签名 有签署者的公钥存放在 keyring 时才能验证
    
    # 查看标签版本信息
    $ git show <tag>	
    

    分支操作

    # 创建分支
    $ git branch [branch-name]
    $ git checkout -b [branch-name] 	//新建并切换到该分支
    
    # 切换分支
    $ git checkout [branch-name]
    
    # 删除分支
    $ git branch -d [branch-name]
    
    # 合并分支
    $ git merge [branch-name]			
    
    # 查看分支清单
    $ git branch
    $ git branch -a						//查看所有分支
    $ git branch -v						//查看各个分支最后一个提交对象的信息
    $ git branch --merged				//筛选出已经与当前分支合并的分支
    $ git branch --no-merged			//筛选出尚未与当前分支合并的分支
    
    # 推送本地分支
    $ git push [remote-name] [branch-name]	//remote-name一般为origin
    
    # 跟踪远程分支
    $ git checkout --track [remote-name]/[branch-name]
    
    # 删除本地分支
    $ git branch -d  <branch>
    
    # 删除远程分支
    $ git push [remote-name] --delete [branch-name]
    $ git push [remote-name] :[branch-name]
    
    # 修改分支名称
    git branch -m [old-branch] [new-branch]
    git push --delete origin [old-branch]
    git push origin [new-branch]
    git branch --set-upstream-to origin/[new-branch]
    

    服务器上的Git

    本地协议

    远程仓库在该协议中的就是硬盘上的另一个目录。这常见于团队每一个成员都对一个共享的文件系统(例如 NFS)拥有访问权。如果你使用一个共享的文件系统,就可以在一个本地文件系统中克隆仓库,推送和获取。

    $ git clone /opt/git/project.git
    $ git clone file:///opt/git/project.git
    $ git remote add local_proj /opt/git/project.git	//添加一个本地仓库作为现有 Git 项目的远程仓库
    

    HTTP/S 协议

    $ git clone http://example.com/gitproject.git
    

    在使用git开发时,需要在每次同步操作输入用户名和密码。为了省去每次都输入密码的重复操作,我们可以在本地新建一个文件,来存储你的用户名和密码,只需要在第一次clone输入用户名和密码,这些信息就被存储起来,以后就可以自动读取

    git config --global credential.helper
    

    SSH 协议

    SSH 是同时支持读写操作的网络协议。SSH 同时也是一个验证授权的网络协议

    $ git clone ssh://user@server/project.git
    $ git clone user@server:project.git			//默认ssh
    

    大多数 Git 服务器都会选择使用 SSH 公钥来进行授权。系统中的每个用户都必须提供一个公钥用于授权。 下面是生成SSH公钥

    $ cd ~/.ssh				//首先确认是否已经有一个公钥 SSH公钥默认储存在~/.ssh。若有,`.pub` 后缀的文件就是公钥,另一个文件则是密钥
    $ ssh-keygen			//若没有-->生成ssh公钥 它会让你重复一个密码两次,如果不想在使用公钥的时候输入密码,可以留空
    $ cat ~/.ssh/id_rsa.pub	//获取公钥 复制 `.pub` 文件的内容然后给管理员。如果你用github,就创建一个ssh公钥并把内容复制过去就可以了
    

    Git托管服务

    如果不想经历自己架设 Git 服务器的麻烦,网络上有几个专业的仓库托管服务可供选择。
    目前比较常用的有github、gitee、coding

    环境变量配置

    windows环境下git的环境变量配置( 可执行文件不需要配置 绿色安装版才需要)

    1. 从官网下载git软件 .msi格式 安装
    2. 找到你的git的安装目录,复制
    3. 控制面板——系统——高级系统设置——环境变量——path——编辑 把软件安装包的路径复制进去:
    • 你的git的安装目录in;
    • 你的git安装目录libexecgit-core;

    开发工具配置

    以vscode为例,配置之后就可以直接在终端使用git命令了

    • 设置—搜索user.setting—对setting.json进行编辑
      image.png
    • 添加“git.path”:"Git实际安装地址"
      image.png
  • 相关阅读:
    Centos6.8下设置gitlab服务开机自启动,关闭防火墙开机自启动
    gitlab设置SSH key
    在centos6.8下安装gitlab遇到的坑
    recyclerView中的方法
    ListView中的方法
    tcp断开时分几步
    get,post区别
    cookie是什么,在什么地方会用到
    http和https的区别
    keystore是个嘛东西
  • 原文地址:https://www.cnblogs.com/sanhuamao/p/13596708.html
Copyright © 2011-2022 走看看