Git结构&命令简介

Git结构简介

Git主要分为4个部分,以下为各部分的解释以及相关命令

前提:你已经有一个受git控制的目录

  1. 本地工作区(workspace)——即本地的文件,此时文件不受git控制

  2. 缓存区(Index)——使用git add命令可以将本地的文件添加到git管理中,add后的文件就在缓存区内
    1. git add
    2. git add *

  3. HEAD——这个区域指向你最后一次提交的位置,使用git commit命令后可以将文件提交到HEAD区域
    1. git commit -m “代码提交信息,想写啥就写啥”—— -m是message的简写

  4. 远端仓库——使用git push命令后,文件才会被推送到远端仓库,这时候,其他人才可以看到你的提交
    1. git push origin 1.1.1 ——将commit后的文件推送到远端仓库,1.1.1为代码的分支版本

在阅读下面的内容之前,推荐对git操作文件的逻辑有简单了解;强烈推荐下面这篇文章,图文并茂,大家可以只阅读第一和第四章节:https://www.jianshu.com/p/94775fe7e793

Git命令行总结

  1. clone仓库

    1. git clone xxxxx.git xxxdir(若不指定则clone到当前文件夹下)
    2. git clone xxx.git xxxdir -b 1.1.2 1.1.2为项目版本号
  2. 创建分支–git chekout -b 1.1.3

    1. git checkout -b 1.1.3 会在本地创建一个分支1.1.3并切换到1.1.3分支
    2. 使用 git push origin 1.1.3会把1.1.3分支推送到远端,没push之前,1.1.3分支在远端仓库是不存在的
    3. git checkout 1.1.2 会切换回1.1.2分支
    4. git branch -d 1.1.3 会删除掉新建的1.1.3分支
  3. 更新(pull):

    1. git pull origin 1.1.2:这会获取(fetch)并且 合并(merge)1.1.2 远端的改动

      当远端跟本地有冲突的时候:
      在这里插入图片描述

在修改后需要将此文件标记为更新成功:git add README.md

之后就可以在需要的时候提交到服务器上了

以下命令转自:http://marklodato.github.io/visual-git-guide/index-zh-cn.html

  1. checkout命令详解:

    checkout命令用于从历史提交(或者暂存区域)中拷贝文件到工作目录,也可用于切换分支。

    ​ 当给定某个文件名(或者打开-p选项,或者文件名和-p选项同时打开)时,git会从指定的提交中拷贝文件到暂存区域和工作目录。比如,git checkout HEAD~ foo.c会将提交节点HEAD~(即当前提交节点的父节点)中的foo.c复制到工作目录并且加到暂存区域中。(如果命令中没有指定提交节点,则会从暂存区域中拷贝内容。)注意当前分支不会发生变化

    ​ 当不指定文件名,而是给出一个(本地)分支时,那么HEAD标识会移动到那个分支(也就是说,我们“切换”到那个分支了),然后暂存区域和工作目录中的内容会和HEAD对应的提交节点一致。新提交节点(下图中的a47c3)中的所有文件都会被复制(到暂存区域和工作目录中);只存在于老的提交节点(ed489)中的文件会被删除;不属于上述两者的文件会被忽略,不受影响。
    在这里插入图片描述
    如果既没有指定文件名,也没有指定分支名,而是一个标签、远程分支、SHA-1值或者是像master~3类似的东西,就得到一个匿名分支,称作detached HEAD(被分离的HEAD标识)。这样可以很方便地在历史版本之间互相切换。比如说你想要编译1.6.6.1版本的git,你可以运行git checkout v1.6.6.1(这是一个标签,而非分支名),编译,安装,然后切换回另一个分支,比如说git checkout master。然而,当提交操作涉及到“分离的HEAD”时,其行为会略有不同,详情见在下面。
    在这里插入图片描述

    1. checkout HEAD~ files来把当前提交节点的父节点中的file文件,复制到工作目录并且加到暂存区域中

    ps:HEAD~表示head中当前节点的父节点,HEAD~3表示当前节点,网上数三个节点

    1. git checkout -b name来创建一个新的分支。
  2. Reset

reset命令把当前分支指向另一个位置,并且有选择的变动工作目录和索引。也用来在从历史仓库中复制文件到索引,而不动工作目录。

如果不给选项,那么当前分支指向到那个提交。如果用--hard选项,那么工作目录也更新,如果用--soft选项,那么都不变。

在这里插入图片描述

如果没有给出提交点的版本号,那么默认用HEAD。这样,分支指向不变,但是索引会回滚到最后一次提交,如果用--hard选项,工作目录也同样。

在这里插入图片描述

Merge

merge 命令把不同分支合并起来。合并前,索引必须和当前提交相同。如果另一个分支是当前提交的祖父节点,那么合并命令将什么也不做。 另一种情况是如果当前提交是另一个分支的祖父节点,就导致fast-forward合并。指向只是简单的移动,并生成一个新的提交。

在这里插入图片描述

否则就是一次真正的合并。默认把当前提交(ed489 如下所示)和另一个提交(33104)以及他们的共同祖父节点(b325c)进行一次三方合并。结果是先保存当前目录和索引,然后和父节点33104一起做一次新提交。

在这里插入图片描述

将本地项目推送到github

# 步骤
# 1.创建一个目录
mkdir Test
# 2.进入目录
cd Test
# 3.将当前目录变为git管理仓库
git init
# 4.将文件添加到版本库,这里将目录下的所有文件都添加进去了,也可以指定要加入的文件或文件夹
git add .
# 5.告诉git将文件提交到仓库
git commit -m "first-commit"
# 5.将当前仓库与远程仓库关联
git remote add orign 远程仓库的https地址 # eg: git remote add https://github.com/ssmath/Test.git
# 6.将仓库内master分支的所有内容推送到远程仓库,这里会使用到Github的账号密码
git push -u orign master
# 7. 当本地代码和git代码不一致时(比如git自动创建的代码有reademe,本地没有)会报错: ! [rejected]        master -> master (non-fast-forward)
# 8. 使用:`git pull origin master --allow-unrelated-histories` 后面加上 --allow-unrelated-histories , 把两段不相干的 分支进行强行合并
# 9. 然后使用 `git push -u orign master`就可以顺利提交到远程仓库里了

How to remove a remote origin in Git

To remove a remote origin in git, we can use the git remote command followed by the rm origin.

git remote rm origin

Now, you can add a new origin url by using the following command.

git remote set-url origin https://my-new-url.git

If you want to see your current origin url, run the git remote command followed by the -v flag.

git remote -v
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值