zoukankan      html  css  js  c++  java
  • git常用命令

    eval "$(ssh-agent -s)"
    ssh-add


    git branch dev

    git push --set-upstream origin  dev

    在本地创建 分支
    git push origin dev 将本地创建的分支同步到库上

    git add .
    git commit -m "add readme"
    git config --global push.default current
    git push

     提交代码

    1. git中工作区,缓存区,本地库,远程库的简要区别

    工作区,缓存区,本地库对应到实体,都是你从远程仓库克隆下来的那个项目目录!

    工作区即你实际看到的目录和目录里的内容,当你修改/添加/删除了从远程仓库clone下来的目录中的文件后,工作区就变了
    缓存区:使用git add . 操作可以将工作区的修改保存到缓冲区中
    本地库:使用git commit -m "版本名" 可以将缓冲区中的更改保存到本地库中

    远程库:即远程服务器上的那个项目目录,使用git push origin master 操作可以将本地库的修改保存到远程库中

    2. git撤消、放弃本地的修改,本地库版本回退

    2.1 还未使用 git add 缓存代码,即代码还在本地,可以用下面的命令回退修改

          可以使用 git checkout -- filepathname (比如: git checkout -- readme.md  ,不要忘记中间的 “--,不写就成了切换分支了!!)。放弃所有的文件修改可以使用 git checkout .  命令。

          此命令用来放弃所有还没有加入到缓存区的修改:内容修改与整个文件删除。但是此命令不会删除掉刚新建的文件。因为刚新建的文件还没已有加入到 git 的管理系统中。所以对于git是未知的。自己手动删除就好了。

    2.2 已经使用了  git add 缓存了代码,代码到了缓存区

          可以使用  git reset HEAD filepathname (比如: git reset HEAD readme.md)来放弃指定文件的缓存,放弃所有的缓存可以使用 git reset HEAD . 命令。

         此命令用来清除 git  对于文件修改的缓存,相当于撤销 git add 命令所在的工作。在使用本命令后,本地的修改并不会消失,而是回到了如(1)所示的状态。继续用(1)中的操作,就可以放弃本地的修改。

    2.3已经用 git commit  提交了代码,代码到了本地库

          可以使用git reset --hard 将本地库中的代码回退到指定的状态,有两种实现方式:

              git reset --hard HEAD^,其中HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。

             git reset --hard  commitid 回退到到具体的commitid,commitid可以通过 git log/git reflog命令来查看

          以上的版本回退只是本地的,不会影响git库中的内容

         举栗:

             使用 git reset --hard HEAD可以查看当前在哪个commitid上

             使用git reset --hard HEAD^可以将本地代码回退到上个版本,也可以使用~计数,使用命令git reset --hard HEAD~1,回退后通过git status可以看到提示

              Your branch is behind 'origin/RDB-42388-test-algorithm-4.0' by 1 commit

    3.远程仓库的版本回退

      3.1如果提交了一个错误的版本到本地,怎么回退本地版本?

    参考2.3的内容

      3.2如果提交了一个错误的版本到远程分支,怎么回退远程分支版本?

        首先要回退本地分支:

          git reflog

       git reset --hard Obfafd

             紧接着强制推送到远程分支:

      git push -f

             注意:本地分支回滚后,版本将落后远程分支,必须使用强制推送覆盖远程分支,否则无法推送到远程分支

    3.3如果提交了一个错误的版本到公共远程分支,又该怎么回退版本?

    回滚公共远程分支和回滚自己的远程分支的区别:公共远程分支中含有别人的提交,回退公共远程分支可能会将别人的提交给冲掉。

    具体操作可参考:https://www.cnblogs.com/qlqwjy/p/8179684.html

    一些相关的知识点:

    git checkout -b tony_backup //拉个分支tony_backup,可以用来保存当前代码

    git revert 命令意思是撤销某次提交。它会产生一个新的提交,虽然代码回退了,但是版本依然是向前的,所以,当你用revert回退之后,所有人pull之后,他们的代码也自动的回退了。

    git revert HEAD //撤销最近一次提交

    git revert HEAD~1 //撤销上上次的提交,注意:数字从0开始

    git revert 0ffaacc //撤销0ffaacc这次提交

    要注意以下几点:

    1. revert 是撤销一次提交,所以后面的commit id是你需要回滚到的版本的前一次提交
    2. 使用revert HEAD是撤销最近的一次提交,如果你最近一次提交是用revert命令产生的,那么你再执行一次,就相当于撤销了上次的撤销操作,换句话说,你连续执行两次revert HEAD命令,就跟没执行是一样的
    3. 使用revert HEAD~1 表示撤销最近2次提交,这个数字是从0开始的,如果你之前撤销过产生了commi id,那么也会计算在内的
    4. 如果使用 revert 撤销的不是最近一次提交,那么一定会有代码冲突,需要你合并代码,合并代码只需要把当前的代码全部去掉,保留之前版本的代码就可以了.

    git revert 命令的好处就是不会丢掉别人的提交,即使你撤销后覆盖了别人的提交,他更新代码后,可以在本地用 reset 向前回滚,找到自己的代码,然后拉一下分支,再回来合并上去就可以找回被你覆盖的提交了。

    4. git 对比两个分支的差异

    参考:https://blog.csdn.net/u011240877/article/details/52586664

    比如我们有 2 个分支:master, dev,现在想查看这两个 branch 的区别,有以下几种方式:

    目的命令其他
    1.1查看 dev 有,而 master 中没有的:
    1.2查看 master 中有,而 dev 中没有的内容:

    git log dev ^master 

    git log master ^dev

    感觉差别不大

    2.1查看 dev 中比 master 中多提交了哪些内容:
    注意,列出来的是两个点后边(此处即dev)多提交的内容

    2.2master 比 dev 多提交了什么:

    git log master..dev

    git log dev..master

    3.不知道谁提交的多谁提交的少,单纯想知道有什么不一样: git log dev...master  
    4.在3的基础上,再显示出每个提交是在哪个分支上: git log --left-right dev...master 注意 commit 后面的箭头,根据我们在 –left-right dev…master 的顺序,左箭头 < 表示是 dev 的,右箭头 > 表示是 master的。



  • 相关阅读:
    CCCC L3-015. 球队“食物链”(dfs+剪枝)
    【USACO2.1】解题报告
    【USACO2.1】解题报告
    序列【模拟】
    序列【模拟】
    【JZOJ5184】Gift【DP】【01背包】
    【JZOJ5184】Gift【DP】【01背包】
    【JZOJ5177】TRAVEL【并查集】
    【JZOJ5177】TRAVEL【并查集】
    【JZOJ5178】So many prefix?【KMP】【DP】
  • 原文地址:https://www.cnblogs.com/ting152/p/12516836.html
Copyright © 2011-2022 走看看