git一些概念

  1. git push origin HEAD:refs/for/master的意思
git push <remote 名字> <本地分支的名字> : <远程库的名字>

  git push origin HEAD:refs/for/master
  git push 肯定是推送
  origin : 是远程的库的名字
  HEAD: 是一个特别的指针,它是一个指向你正在工作的本地分支的指针,可以把它当做本地分支的别名,git这样就可以知道你工作在哪个分支
  refs/for :意义在于我们提交代码到服务器之后是需要经过code review 之后才能进行merge的
  refs/heads 不需要

  1. git中的HEAD、head和master
    https://juejin.cn/post/6844903493078089736

  2. git中refs/for/mybranch 和 refs/heads/mybranch

https://blog.csdn.net/qq_31411389/article/details/77045719
简单点说,就是refs/for/mybranch需要经过code review之后才可以提交;refs/heads/mybranch不需要code review。

Gerrit 下需要这样提交:$git push origin HEAD:refs/for/mybranch

https://blog.csdn.net/qq_31411389/article/details/77045719
  1. Git 里面的 origin 到底代表啥意思
git branch -r  查看远端所有分支
git remote -v  查看相关的仓库的指向
origin就是一个名字,它是在你clone一个托管在Github上代码库时,git为你默认创建的指向这个远程代码库的标签,
origin指向的是repository,master只是这个repository中默认创建的第一个branch。
当你git push的时候因为origin和master都是默认创建的,所以可以这样省略,但是这个是bad practice,因为当你换一个branch再git push的时候,有时候就纠结了
  1. git强行拉取
第一步:git fetch --all    #下载代码到本地,不进行合并操作
第二部:git reset --hard origin/vipggc_shop  #(origin/vipggc_shop是你所需要更新的分支,把HEAD指向最新下载的版本)
      git reset --hard:
            throw away all my staged and unstaged changes, forget everything on my current local branch and 
            make it exactly the same as origin/master.
第三部:git pull  
  1. git fetch 和git pull
https://juejin.cn/post/6844903921794859021

# 1
git fetch origin master:
      取回更新后,会返回一个FETCH_HEAD ,指的是某个branch在服务器上的最新状态,我们可以在本地通过它查看刚取回的更新信息:
      git log -p FETCH_HEAD


# 2
git pull 的过程可以理解为下面的过程:
      git fetch origin master //从远程主机的master分支拉取最新内容 
      git merge FETCH_HEAD    //将拉取下来的最新内容合并到当前所在的分支中

  1. 本地分支和远程分支建立映射关系的作用
git branch --set-upstream-to origin/远程分支名 本地分支名

# 本地origin 到远端master
git push --set-upstream origin master
git push -u origin master

  1. 暂存区,撤销修改
1. 暂存区
每个 Git 仓库中,都有一个隐藏目录 .git 用于存放 Git 仓库的相关信息,包括暂存区(称为 stage)、自动创建的 master 分支以及指向 master 分支的 HEAD 指针。
git add 添加文件到暂存区。
git commit 提交更改,把暂存区的所有内容一次性全部提交到当前分支,清空暂存区。

2. 撤销修改
因为暂存区的存在,撤销修改分为几种情况(通过 git status 查看仓库状态时会提示相关撤销修改的命令):

修改后,文件没有放入暂存区(即文件一直在工作区):用 git checkout -- 文件名 撤销工作区的改动(回到跟版本库一样的状态,即回到最近一次 git commit时的状态,所有改动全部清除)
修改后,文件放入暂存区,且文件没有再次修改(即文件已经进入暂存区):分两步:先用 git reset <文件名> 撤销 git add 操作(此时更改仍留在工作区),再执行 git checkout -- 文件名 清除工作区的改动
修改后,文件放入暂存区,且文件再次修改:分三步:先用 git checkout -- 文件名 撤销工作区的改动,再用 git reset <文件名> 撤销 git add 操作(此时更改仍留在工作区),最后执行 git checkout -- 文件名 清除工作区的改动
通过 git checkout -- 文件名 命令可以撤销文件在工作区的修改。
通过 git reset 文件名 命令可以撤销指定文件的 git add 操作,即这个文件在暂存区的修改。
通过 git reset 命令可以撤销之前的所有 git add 操作,即在暂存区的修改。


posted @ 2021-02-05 16:30  该显示昵称已被使用了  阅读(160)  评论(0编辑  收藏  举报