zoukankan      html  css  js  c++  java
  • Git基础使用指南-命令详解

    Software is like sex: it's better when it's free. —— Linus Torvalds


    前情须知 -O-

    工作流

    首先要明确的是Git的工作流程,你使用Git时,用了三个不同的区域对你的代码进行管理。
    1.工作区(workshop):就是你当前写代码的那些文件,具体就是你当前正在编辑的项目。
    2.缓存区(Index):是一个临时区域,保存你的临时改动。
    3.仓库区(HEAD):你最后提交到的区域。

    一般的流程:(工作区)编码 → 添加代码到(缓存区)→ 提交到仓库区(HEAD)→ 推送到远程仓库


    基本使用

    init 初始化

    当我们要使用git对项目进行管理的时候,使用:

    $ git init
    

    就会自动进行相关的初始化操作,会在项目中创建隐藏的.git文件夹,里面有相关的配置信息。

    add 缓存区操作

    要Git对文件进行跟踪,这时文件就到了缓存区了,是相当于复制了一份,使用命令:

    # 添加文件到缓存区
    $ git add [文件名1] [文件2]
    # 添加文件夹到缓存区
    $ git add [文件夹]
    # 添加所有文件到缓存区
    $ git add .
    

    执行了改命令后,Git就会跟踪你的文件的变化了,使用 git status 命令,就可以看到文件的状态了。

    # 查看文件状态
    $ git status
    # 查看简洁的状态信息 short
    $ git status -s
    

    当然你也可以将缓存区的删除操作

    # 停止追踪指定文件,该文件仍会保留在工作区
    $ git rm --cached [file]
    

    commit仓库区操作

    使用git commit命令会将缓存区的操作,添加到仓库区,每次提交都要添加提交信息

    # 将缓存区的文件提交到仓库区
    #然后会打开vm编辑器要求输入提交信息
    $ git commit
    # 简化,提交和添加提交信息
    $ git commit -m '提交信息'
    # 跳过添加到缓存区,直接将上一次提交后的修改进行提交
    # 所有已经跟踪过的文件暂存起来一并提交
    $ git cmmit -a 
    

    当一个文件已经被提交后,要提交删除该文件的记录,使用$ git rm [文件名]命令,工作区的对应文件会被删除,删除记录会添加到缓存区,然后可以commit

    remot远程操作

    Git的操作基本上都是本地进行的,但是若是要多人协助,保存/开源到Gitee或Github上就要进行远程操作了。

    # 添加一远程仓库,并未之命名
    # 当你在github中新建仓库后,它就会让你运行该命令
    # 让你的本地仓库和远程仓库关联,它可以添加多个
    $ git remote add [远程仓库命名] [url]
    $ git remote add origin https://gitee.com/mashiro-xxx/xxxx.git
    # 查看所有远程仓库
    $ git remote -v
    # 有远程仓库后,将新分支上传
    $ git push -u [远程仓库] [分支]
    $ git push -u origin master
    # 将本地分支上传
    $ git push [远程仓库名] [分支名]
    $ git push origin master
    # 直接推送到远程仓库
    $ git push
    # 暴力推送到远程仓库,不理会冲突
    $ git push --force
    # 将远程仓库的代码下载到本地
    # 此操作并不会改变本地仓库
    # 而是,会在本地有一个远程仓库的分支,如origin/master
    $ git fetch [远程仓库]
    # 将远程仓库拉取到本地,并合并到本地操作
    # 其本质是 fetch 后将,本地分支与远程分支merge
    $ git pull [远程仓库] [分支]
    

    回退操作

    使用Git不仅为了方便版本管理,当然也是为了以备不时之需,所以也是回退代码的可能也是很高的呢。
    注:执行回退操作前,切记要将当前工作区内容提交

    # 撤销工作区指定文件的操作,撤销至add时的状态
    $ git restore [文件]
    # 将缓存区的文件回退至工作区
    $ git checkout [文件]
    # 将缓存区的全部文件回退到工作区
    $ git checkout .
    # 将工作区回退至上一次commit
    $ git reset --hard
    # 回退当前分支的HEAD为指定commit
    # 同时重置暂存区和工作区,与指定commit一致
    $ git reset --hard [commit]
    

    进阶操作

    branch分支操作

    分支就像是同一个变种衍生出来的各种变种,每个分支可以有不同的变异方向。不过在Git中分支是可控的,你可以增加,合并,删除。

    # 查看当前所有分支
    $ git branch
    # 新建分支
    $ git branch [分支名]
    $ git branch dev
    # 且换分支
    $ git checkout [分支]
    $ git checkout master
    # 新建并切换到新建的分支
    $ git checkout -b [分支]
    $ git checkout -b feature_x
    # 删除分支,若没有有未被合并的内容,则无法删除
    # 不能删除当前所在的分支,如要删除需切换分支
    $ git branch -d [分支]
    # 强制删除分支
    $ git branch -D [分支]
    # 当前所在分支与指定分支合并
    $ git merge [分支]
    $ git merge dev
    

    创建无父依赖的分支

    $ git checkout --orphan 分支名
    

    此命令在创建分支时不会有父分支,也就是它创建的分支是独立的,和父分支没有依赖关系。创建成功后,原分支的文件会在创建时添加到当前暂存区。它是个全新的分支,没有任何的提交。
    使用此命令可以将多个(相关)项目,放到统一仓库下进行git管理。

    other其它操作

    # 查看所有提交的记录
    $ git log
    # 暂时将未提交的变化保存
    $ git stash
    # 暂时将未提交的保存的变化恢复
    $ git stash pop
    
  • 相关阅读:
    Http和Socket连接区别
    解决TCP网络传输“粘包”问题
    c# 获取MAC IP TCP列表
    《你不常用的c#之四》:Array的小抽屉ArraySegment
    《你不常用的c#之三》:Action 之怪状
    《你不常用的c#之二》:略谈GCHandle
    c#中var关键字用法
    Combotree--别样的构建层级json字符串
    一周代码秀之[11.18~11.24 linq2xml面向对象]
    这个季节的这些时候
  • 原文地址:https://www.cnblogs.com/flytree/p/14706928.html
Copyright © 2011-2022 走看看