zoukankan      html  css  js  c++  java
  • Git 简单使用

    Git 简单使用步骤

    记录 Git 应用的逻辑步骤和常用命令

    开始篇

    使用 Git 管理项目(不一定是代码)有两种方式开始,第一种从远程到本地,即先建立远程库后 git clone 到本地目标路径,此种方式用于新建一个空项目之后与本地路径关联起来。第二种从本地到远程,即先建立本地项目并可以任意先编辑,待到准备同步到远程库时,依次使用指定命令初始化本地仓库、将文件新增至版本库、提交更改、关联远程库、推送至远程库。

    第一种方式逻辑上感觉比较“顺”,第二种方式更适合工作还没有具体规划,先在本地任意编辑,待到合适时候再创建并推送上远程库。

    第二种方式的逻辑与命令:

    cd xxx (切换到要创建 Git 管理的根目录)
    git init(初始化,将当前目录设置为 Git 可管理的目录)
    git add <file> (将文件添加到版本库,即将该文件纳入管理范围)
    git commit -m <comment> (提交所有 add 到版本库)
    git push <远程库名称> <分支名称> (将 commit 之后的内容更新到远程库)
    

    关系篇

    有一个图片比较好的描述了本地、自有远程库和他人库的关系
    forking工作流

    所以,使用 Git 时最多的工作就三步,编辑文件git add <file>git commit

    分支是 Git 的灵魂之一,创建库时默认是 master 分支,一个人的、简单的工作可以一直在该分支上提交更新没有问题,但即便是一个人,某天希望开发一个新功能又不想影响当前工作,最好的版本就是开辟出一个分支,在分支上进行任意操作,而不会影响主线 master 的任何内容,多么完美。

    随时使用 git branch <branch name> 创建一个分支,使用 git checkout <branch name> 切换到该分支进行工作,以后再有 git addgit commit 时也不会影响到其他分支,分支也可以使用 git push 提交到远程库,Git 将在远程库自动创建该分支。

    本地目录是同一个目录,难道在 B 分支上创建或删除一个文件,不会影响 A 分支吗?

    我也纳闷儿和担心,可以看看切换分支时工作目录有什么变化。先创建一个名叫 branchMD 的分支并切换到该分支下,删除 master 分支下的 EchoWord.go 文件,新增 addNewBranch.mdmeta 两个文件(两个文件没有任何实际意义,只为与 master 分支内容区别开来),在新建分支下变更提交到版本库。

    现在拥有了两个分支,使用 git checkout <branch name> 切换并观察本地目录看一下

    master分支
    上图是 master 分支目录内容

    branchMD分支
    上图是 branchMD 分支目录内容

    可以看到,切换不同分支,工作目录中内容自动变了,Git 为我们做了很多贴心的事情。

    随着工作需要,很多分支编辑后自然需要合并到一处。当确认了分支 B 的所有变更,要把 B 合并到 A 时,就先切换到 A 分支,然后运行合并命令,如将刚才的分支合并到 master,但要注意,此操作将认为是认可了 B 从创建后的所有“变更”,并将这种变更后的结果应用到 A 分支上。刚才说到,branchMD 分支移除了一个文件,新增了两个文件,那么如果合并成功,master 分支中的唯一文件 EchoWord.go 也应该是被移除,并新增两个文件。

    git checkout master
    git merge branchMD
    

    将变更 git push 到远程库看一下结果,master 分支也变得和 branchMD 内容一样了。
    远程库中master分支结果

    分支没用时,删除它,Git 鼓励大量创建和使用分支来进行工作,就像我们做word时候的副本。

    命令篇

    • 创建
      • (将本地目录)初始化为一个 Git 的工作区:git init
    • 添加与提交
      • 从工作区添加文件到版本库:git add <file-name>
      • 从工作区添加所有文件到版本库:git add .
    • 撤销
      • 丢弃工作区的修改:git checkout -- <file>
      • 丢弃暂存区修改将工作区回复到最新(后)保存的一个版本:git reset HEAD <file>
      • 版本回退到指定版本:git reset --hard <commit_id>
    • 删除
      • 从版本库中删除文件:git rm <file>
      • 用版本库中文件替换工作区内容(与丢弃工作区修改操作的结果一样):git checkout -- <file>
    • 关联
      • 本地仓库与远程库关联:git remote add <本地仓库名称> <远程库地址:git@gitee.com:xxx>
      • 版本库推送到远程库:git push <option> <与远程库关联的本地仓库名称> <分支名称>
      • 从远程库拉取内容更新本地库:git pull <与远程库关联的本地库名称> <分支名称>
    • 分支
      • 查看分支:git branch
      • 创建分支:git branch <branch-name>
      • 切换分支:git checkout <branch-name>
      • 创建+切换:git checkout -b <branch-name>
      • 合并分支到指定分支:git merge <待合并的分支>
      • 删除分支:git branch -d <branch-name>

    一些链接和引用

  • 相关阅读:
    oracle 闪回操作--区别于快照
    easyui 低版本下拉多选框绑定onChange事件样式失真问题
    kvm虚拟机网络配置-网桥
    CentOS7.5使用KVM创建虚拟机
    梦醒时分
    姑娘
    Ventoy+WePE 装机教程
    PG-SSL安全配置
    转载-如何做一份完善的补丁分析
    网络流24题部分题解
  • 原文地址:https://www.cnblogs.com/cinlap/p/10469291.html
Copyright © 2011-2022 走看看