• git 常用使用及问题记录


    1、打开bash,进入工程根目录(引用whaon的话:是和.classpath和.project同级的目录)。PS:我的系统是win7,在bash切换到E的命令是 cd /e;

    2、运行 git init 初始化代码仓库(repository)

    3、运行git add .将该目录下的所有文件全部提交到缓冲区

    4、运行git commit -m "helloword init"将代码提交到HEAD,此时还没有提交到服务器

    5、运行git remote add origin http://git.oschina.net/yourname/helloworld.git

    6、git push origin master

    其中第5和6步骤容易出现问题,lz就出现的问题和解决的方法列出

    问题一:"NOT FOUND"

    解决方法:正如前面所述,如果没有在osc@git 上创建空项目就会出现这个问题

    问题二:"![rejected] master -> master (fetch first)"

    解决方法:看他的关键提示fetch first , 通过lz尝试此问题顺利解决

    问题三:"![rejected] master -> master (non-fast-forward)

     解决方法:还是同样的提示,还是熟悉的味道自己看它的提示,哦,原来要我pull一下,好吧我就pull一下,结果说必须指定pull谁,最后通过尝试终于把东东提交上去了。

    修正:"git pull remote master" 改为 "git pull origin master"

    git 远程分支创建与推送

    本地分支的创建

    本地分支的来源为执行git checkout -b <branch name> 的那个分支

    例如现在有两个分支,master和b1

    master 分支下有一个commit:

    commit1: add test1.c

    b1分支下有两个commit:

    commit2: add test2.c

    commit1: add test1.c

    如果在master分支下checkout,即:

    git checkout master //进入master分支

    git checkout -b frommaster //以master为源创建分支frommaster

    git log后发现frommaster中有一个提交:

    commit1: add test1.c

    这说明他是从master分支为源头创建的

    如果在b1分支下checkout,即:

    git checkout b1 //进入master分支

    git checkout -b fromb1 //以b1为源创建分支fromb1

    git log后发现fromb1中已经有两个提交:

    commit2: add test2.c

    commit1: add test1.c

    这说明他是从b1分支为源头创建的

    远程分支的创建

    从远程分支检出的本地分支,称为跟踪分支(tracking branch)。跟踪分支是一种和远程
    分支有直接联系的本地分支。在跟踪分支里输入git push,Git 会自行推断应该向哪个服
    务器的哪个分支推送数据。反过来,在这些分支里运行git pull 会获取所有远程索引,并

    把它们的数据都合并到本地分支中来.

    $ git push ssh://git@dev.lemote.com/rt4ls.git master // 把本地仓库提交到远程仓库的master分支中

    $ git remote add origin ssh://git@dev.lemote.com/rt4ls.git
    $ git push origin master

    这两个操作是等价的,第二个操作的第一行的意思是添加一个标记,让origin指向ssh://git@dev.lemote.com /rt4ls.git,也就是说你操 作origin的时候,实际上就是在操作ssh://git@dev.lemote.com/rt4ls.git。origin在这里完全可以理解为后者 的别名。

        需要说明的是,默认情况下这条语句等价于提交本地的master仓库到远程仓库,并作为远程的master分支。

    我从master分支创建了一个issue5560分支,做了一些修改后,使用git push origin master提交,但是显示的结果却是'Everything up-to-date',发生问题的原因是git push origin master 在没有track远程分支的本地分支中默认提交的master分支,因为master分支默认指向了origin master 分支,这里要使用git push origin issue5560:master 就可以把issue5560推送到远程的master分支了。

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

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

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

    $ git push origin :test              // 刚提交到远程的test将被删除,但是本地还会保存的,不用担心
     
     
     

    git远程分支的管理和代码提交

    首先从远程代码仓库中克隆一份代码, 直接用git clone remote_repository,

    假设远程代码仓库有2个分支, master和test分支, 默认是master分支, git clone会克隆远程的所有分支到本地(可以用git branch -r查看远程的所有分支). 然后checkout 到默认的一个分支上, 这里默认的分支是master

    clone代码以后, 可以切换到远程的test分支, 使用

    git checkout origin/test, 这时候当前git目录处于 'detached HEAD' state, 此时需要用git checkout -b new_branch建一个新的分支(从test分支为起点建), 然后就可以在new_branch分支上修改代码了, 比如我们加一个文件, test,.c, 然后 git add test.c, 然后git commit -a -s 以后就能像test分支提交代码了

    git push origin HEAD:refs/for/test     (git push origin HEAD:test)

    ps:

    在new_branch更新upstream上游的代码, 可用git pull origin test

    git 本地会有一个master, 对应远程的master, 如果远程有一个alpha1.0分支, 本地也会有一个和远程alpha1.0对应的本地分支, 操作和master一样

    关于如何在多个分支直接提交代码

    比如, 有2个分支,  master和alpha, 在master上提交代码以后, 得到一个本次提交的commit id, 如果想要将本次提交再提交一份到alpha, 可以先git checkout alpha,然后使用git cherry-pick commit-id, 再git push origin alpha即可

  • 相关阅读:
    length()
    matlab mod()&rem()
    tf调试函数
    64位win7+PCL1.6.0+VS2010,64位win10+PCL1.6.0+VS2010
    pcl 1.8 + VS 2010 在win7 x64下的配置
    Qt在vs2010下的配置
    VS2010 win7 QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序
    [POI2012]ROZ-Fibonacci Representation (贪心)
    CF 666C & 牛客 36D
    数位dp练习
  • 原文地址:https://www.cnblogs.com/jinjiangongzuoshi/p/4938468.html
Copyright © 2020-2023  润新知