git常用命令总结

#在gitlab上做测试
1) 远程仓库相关命令
检出仓库:$ git clone https://gitlab.com/huhy0602/test.git
查看远程仓库:$ git remote -v
添加远程仓库:$ git remote add [name] [url]
删除远程仓库:$ git remote rm [name]
修改远程仓库:$ git remote set-url --push[name][newUrl]
拉取远程仓库:$ git pull [remoteName] [localBranchName]
推送远程仓库:$ git push [remoteName] [localBranchName]

2)分支(branch)操作相关命令
查看本地分支:$ git branch
查看远程分支:$ git branch -r
创建本地分支:$ git branch [name] ----注意新分支创建后不会自动切换为当前分支
切换分支:$ git checkout [name]
创建新分支并立即切换到新分支:$ git checkout -b [name]
删除分支:$ git branch -d [name] ---- -d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用-D选项
合并分支:$ git merge [name] ----将名称为[name]的分支与当前分支合并
创建远程分支(本地分支push到远程):$ git push origin [name]
删除远程分支:$ git push origin :heads/[name]
    我从master分支创建了一个yang分支,做了一些修改后,使用git push origin master提交,但是显示的结果却是'Everything up-to-date',
    发生问题的原因是git push origin master 在没有track远程分支的本地分支中默认提交的master分支,因为master分支默认指向了origin master 分支,
    这里要使用git push origin yang:master 就可以把yang推送到远程的master分支了。

    如果想把本地的某个分支test提交到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫test的分支,那么可以这么做。

$ git push origin test:master             // 提交本地test分支作为远程的master分支
$ git push origin test:test              // 提交本地test分支作为远程的test分支

如果想删除远程的分支呢?类似于上面,如果:左边的分支为空,那么将删除:右边的远程的分支。

$ git push origin  :test              // 刚提交到远程的test将被删除,但是本地还会保存的,不用担心
3)版本(tag)操作相关命令
查看版本:$ git tag
创建版本:$ git tag [name]
删除版本:$ git tag -d [name]
查看远程版本:$ git tag -r
创建远程版本(本地版本push到远程):$ git push origin [name]
删除远程版本:$ git push origin :refs/tags/[name]

5)删除远程库
    ps:我们在上传项目后如果上传了你不想要的文件怎么办?很操蛋的在github上我们是不能直接删除仓库的文件,我们只能通过终端命令来删除我们不想要的文件或者目录

    Git 如何删除远程服务器文件同时保留本地文件

    在上传工程到git上时,有时候会把本地的一些eclipse配置文件传到服务器上,这时你先删除本地,再同步服务器,显然是不合理的。git提供了一个好的解决方法,可以直接删除服务器文件,同时不影响本地文件,命令如下



    2.删除远程springboot_jsp文件夹,本地保留

    一定要注意,删除文件夹要使用-r 参数

    git rm --cached -r springboot_jsp
    git commit -m "springboot_jsp"
    git push

   git的回滚注意:

  

方法一,删除远程分支再提交
    ①首先两步保证当前工作区是干净的,并且和远程分支代码一致

        $ git co master
        $ git pull origin master
        $ git co ./                        
    ②备份当前分支(如有必要)

        $ git branch masterBackUp
    ③恢复到指定的commit hash

        $ git reset --hard resetVersionHash //将当前branch的HEAD指针指向commit hash


    ④删除当前分支的远程分支

        $ git push origin :master 
        $ //或者这么写git push origin --delete master
    ⑤把当前分支提交到远程

    $ git push origin master
方法二,强制push远程分支
    ①首先两步保证当前工作区是干净的,并且和远程分支代码一致

    ②备份当前分支(如有必要)

    ③恢复到指定的commit hash

        $ git reset --hard resetVersionHash
    ④把当前分支强制提交到远程

        $ git push -f origin master
方法三,从回滚位置生成新的commit hash
    ①首先两步保证当前工作区是干净的,并且和远程分支代码一致

    ②备份当前分支(如有必要)

    ③使用git revert恢复到指定的commit hash,当前分支恢复到a>3版本(见下图)

        a)此方法会产生一条多余的commit hash&log,其实1c0ce98和01592eb内容上是一致的

        b)git revert是以要回滚的commit hash(1c0ce98)为基础,新生成一个commit hash(01592eb)

            $ git revert resetVersionHash


    ④提交远程分支

        $ git push origin master
方法四,从回滚位置生成新的分支merge
    ①首先两步保证当前工作区是干净的,并且和远程分支代码一致

    ②备份当前分支(如有必要)

    ③把当前工作区的HEAD指针指向回滚的commit hash(注意不是branch的HEAD指针)

        Notice:这个时候工作区HEAD没有指向分支,称为匿名分支detached HEAD

        这个时候提交commit后无法保存状态,git中的任何提交必须是在当前工作区HEAD所在分支的HEAD上进行push hash入栈,所以HEAD必须是属于某个分支的HEAD位置,提交才生效。

        $ git co resetVersionHash


    ④以该commit hash创建一个新的分支

        $ git co -b newRevertedHash
    ⑤切换到当前分支,合并newRevertedHash。

        $ git co master
        $ git merge newRevertedHash
    ⑥进行代码diff,完成代码回滚,push到远程master

 git修改远程仓库地址:

  有时远程仓库的ip修改了,我们应该怎么样修改远程仓库的的地址呢?有三种方式:

    第一种:git remote set-url origin [new url]

    第二种:先删除老的远程仓库地址然后添加新的远程仓库地址

        git remote rm origin

        git remote add origin [url]

    第三种:修改仓库下的config文件

        

 

  git 重新调出登录:

   git config --system --unset credential.helper

      git config --global credential.helper store

 


 

Git撤销对远程仓库的push提交

   执行  git log查看日志,获取需要回退的版本号 

    

  2. 执行 git reset –soft <版本号> ,如 git reset -soft 4f5e9a90edeadcc45d85f43bd861a837fa7ce4c7 ,重置至指定版本的提交,达到撤销提交的目的

    然后执行 git log 查看

    

    此时,已重置至指定版本的提交,log中已经没有了需要撤销的提交

 git reset 命令分为两种: git reset –soft 与 git reset –hard ,区别是:

   前者表示只是改变了HEAD的指向,本地代码不会变化,我们使用git status依然可以看到,同时也可以git commit提交。后者直接回改变本地源码,不仅仅指向变化了,代码也回到了那个版本时的代码。

  3. 执行 git push origin 分支名 –force ,强制提交当前版本号。

 

posted @ 2018-06-25 17:31  陽66  阅读(170)  评论(0)    收藏  举报