zoukankan      html  css  js  c++  java
  • git命令大全

    概述

    git安装好后, 可以在任何一个文件夹,右键打开Git Bash. 可以在该程序中直接运行linux命令或git命令

    git工作机制的核心在于3个区:

    • 工作区: 电脑的本地目录(该目录中有创建的.git目录)
    • 暂存区: 暂存区的数据保存在.git/index文件中
    • 本地仓库: 一般从远程仓库通过clone创建, 之后可以通过pull保持与远程仓库的同步; 另一种方式是使用init在当前目录创建仓库.

    git作为分布式版本管理软件与集中式的svn的最大区别在于

    • 分布式中, 每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库, 可以在本地仓库上进行独立开发.
    • 而集中式的SVN, 只有一个中央仓库, 所有版本信息都放在中央仓库上, 脱离了服务器,开发者便无法工作. 同时中央仓库的数据丢失也不会有其它备份,

    git也有好用的GUI工具TortoiseGit, 作为开放人员用的最多的也还是在idea上使用git. 这里整理git的命令, 主要为了熟悉git, 以及深入对git的理解.

    常用的Git命令

    与本地仓库操作相关

    命令 含义
    git init 初始化本地库
    git status 查看本地库的状态(git status -s 简化输出结果)
    3种状态:1. 无任何信息 2. 绿色文件 3. 红色文件
    git add [file] 多功能命令:
    1. 开始跟踪新文件
    2. 把已跟踪的文件添加到暂存区 3. 合并时把有冲突的文件标记为已解决状态
    git commit –m “xxx” [file] 将暂存区的文件提交到本地库,-m 后面为修改的说明

    设置Git账户

    命令 含义
    git config --list 查看所有配置
    git config --list --show-origin 查看所有配置以及所在文件位置
    git config --global user.name xxx 设置git用户名
    git config --global user.email xxx 设置git邮箱
    git init 初始化本地库
    git config core.autocrlf false 取消换行符转换的warning提醒

    git config --list --show-origin: 可以查看配置文件, 在配置文件上直接修改配置

    --global: 用于设置全局账户, 而不是某个项目的

    忽略文件

    在idea中可以使用maven, java, scala等模板. 也可以自己编写该文件.

    # 忽略所有的
    .a 文件 *.a
    
    # 但跟踪所有的 lib.a,即便你在前面忽略了 .a 文件
    !lib.a
    
    # 只忽略当前目录下的 file 文件,而不忽略 subdir/file. 不递归的忽略
    /file
    
    # 忽略任何目录下名为 dir 的文件夹 递归的忽略
    dir/
    
    # 忽略 doc/notes.txt,但不忽略 doc/server/arch.txt
    doc/*.txt
    
    # 忽略 doc/ 目录及其所有子目录下的 .pdf 文件
    doc/**/*.pdf

    版本切换

    命令 作用
    git log 以完整格式查看本地库状态(查看提交历史)
    git log --pretty=oneline 以单行模式查看本地库状态
    git reset --hard HEAD^ 回退一个版本
    git reset --hard HEAD~n 回退N个版本
    git reflog 查看所有操作的历史记录
    git reset --hard [具体版本号,例如:1f9a527等] 回到(回退和前进都行)指定版本号的版本,

    git refloggit log的区别在于可以列出所有操作包括该版本之后的版本信息

    注意: 因为版本的存在, git中所有文件都可以恢复, 没有真正的删除操作

    文件撤回

    命令 作用
    git checkout -- [file] 从本地库检出最新文件覆盖工作区的文件(文件还没有提交到暂存区, 否则无效)
    git reset [file] 或者 git restore –staged [file] 从暂存区撤销文件
    git restore 放弃在工作区的修改(还没有提交到暂存区)
    git rm --cache [file] 撤销对文件的跟踪.

    比较文件

    命令 作用
    git diff 将工作区中的文件和暂存区进行比较
    git diff HEAD 将工作区中的文件和本地库当前版本进行比较
    git diff --cached 查看暂存区和本地库最新提交版本的差别

    分支操作

    不使用分支,就是人与人之间协作;

    使用分支,就是小组与小组之间的协作;或者两个版本互不影响同时开发.

    从主干中拉取分支,开发完成,将工作,合并到主干。

    分支常用操作

    命令 作用
    git branch -v 查看分支
    git branch [分支名] 新建分支
    git checkout [分支名] 切换分支
    git merge [分支名] 合并分支
    git branch –d [分支名] 删除分支
    git checkout –b [分支名] 新建切换

    合并分支时注意: 例如将dev分支合并到master上, 需要先切回到master分支

    处理分支合并时的冲突

    两个分支合并式, 如果某个文件的某行在创建分支后, 同时在两个分支上都被修改, 则该行内容在合并时就会发生冲突

    注意: 处理分支冲突时, 需要和组内成员商量, 确认.

    处理方法

    编辑冲突的文件, 把“>>>>>>>>>”、“<<<<<<” 和“========” 等这样的行删除, 编辑至满意的状态,之后 add, commit。
    提交的时候注意: git commit 命令不能带文件名。

    github远程仓库相关操作

    简单操作

    1. 查看是否配置了密钥
    cd ~/.ssh
    1. 生成密钥
    ssh-keygen
    1. 将生成公钥拷贝值github账户的SSH and GPG keys
    2. 测试本地仓库与github的联通性
    ssh -T git@github.com

    .ssh 文件夹中会多一个文件 known_hosts, 其中记录了连接的 github 的 ip 账号。 `

    push操作

    本地仓库推送到GItHub

    ①准备本地库

    ②在GitHub上创建一个仓库

    ③增加远程地址

    git remote add  <远端代号>   <远端地址>
    
        <远端代号> 是指远程链接的代号,一般直接用origin作代号,也可以自定义;
        <远端地址> 默认远程链接的url;

    ④本地库推送到远程库

    git  push  -u  <远端代号>    <本地分支名称>
    
    -u 把本地的master分支和远程的master分支关联起来
    <远端代号> 是指远程链接的代号;
     <分支名称>  是指要提交的分支名字,比如master;

    之后再此推送时可以简写:git push

    ⑤查看远程分支

    git remote –v

    ⑥查看本地库做了的修改

    git status

    与远程仓库同步

    方式一: fetch+ merge

    方式二: pull

    clone

    刚开始做项目的时候,需要从远程库将项目先整到本机。

    git  clone   <远端地址>   <新项目目录名>

    解决冲突

    push之后可能会发生冲突.

    冲突原因:本地库的版本和远程库的版本都做了更新, 这时需要将本地版本更新与远程保存一致.

    操作: 先pull将远端仓库的分支拉取合并到本地, 再此push

  • 相关阅读:
    從 IC流程中探索數位工程師的風格--III
    從 IC流程中探索數位工程師的風格--II
    從 IC流程中探索數位工程師的風格--I
    producer and consumer concept ( II )
    producer and consumer concept ( I )
    是否long pulse 訊號一定要拿來做同步處理?不做同步處理可以嗎?
    module介面訊號的收斂與發散的思考
    恐龍版OS裏的哲學家問題的思考
    git创建与合并分支
    把CentOS启动进度条替换为详细信息
  • 原文地址:https://www.cnblogs.com/bitbitbyte/p/12951120.html
Copyright © 2011-2022 走看看