美文网首页
git -- 首次上传代码到github的前期工作

git -- 首次上传代码到github的前期工作

作者: 我要进大厂 | 来源:发表于2020-01-27 20:21 被阅读0次

    首次上传本地分支到github

    添加远程仓库地址

    git remote -v
    git remote add test005 https://github.com/cjf1002361126/test005.git
    git remote -v
    

    将本地的所有分支push到远程仓库(该命令可省略,不操作)

    git push test005 --all
    命令解读:远程仓库会生成跟本地仓库同名的分支dev1.0(但跟本地dev1.0没有直接关系),而master分支,因远程仓库已经有master了,所以远程仓库不会再生成
    

    将远程仓库的dev1.0拉下来(该命令可省略,不操作)

    git fetch test005 dev1.0
    命令解读:把远程仓库dev1.0分支拉下来。此时远程分支dev1.0跟本地分支dev1.0还未建立关系;可通过gitk --all查看分支关系;
    

    设置本地分支的上游分支并进行push

    以上git push test005 --allgit fetch test005 dev1.0可不操作,直接使用git push --set-upstream test005 dev1.0,让远程分支dev1.0跟本地分支dev1.0建立关系,并将本地dev1.0的commit历史提交到远程仓库dev1.0上;

    git push --set-upstream test005 dev1.0
    命令解读:使远程分支dev1.0跟本地分支dev1.0建立关系,并将本地dev1.0的commit历史提交到远程仓库dev1.0上;
    

    取远程分支master,并跟本地master合并,并建立跟踪关系,最终上传commit历史

    git fetch test005 master
    git merge --allow-unrelated-histories test005/master
    命令解读:因远程的master和本地的master的不存在相同的祖先,即版本历史没有相同的commit。需要使用--allow-unrelated-histories让两个没有联系的分支进行merge;
    git push --set-upstream test005 master
    命令解读:虽然前面的命令进行了merge,但远程的master和本地的master还为建立起跟踪关系。此处命令,使远程分支master跟本地分支master建立关系
    

    以上命令省略为:

    git remote add test005 https://github.com/cjf1002361126/test005.git
    git push --set-upstream test005 dev1.0
    git fetch test005 master
    git merge --allow-unrelated-histories test005/master
    git push --set-upstream test005 master
    

    知识点

    1、(non-fast-forward) :表示没有共同祖先,无法使用fast forward快进模式,快速移动指针,进行commit更新。
    2、创建远程新分支并让远程仓库新分支和本地新分支建立跟踪关系,使本地仓库分支有上游的远程仓库分支,可以使用:git push --set-upstream test005 fix_bug2

    一整套试错操作

    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (dev1.0)
    $ git remote -v
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (dev1.0)
    $ git remote --h
    error: unknown option `h'
    usage: git remote [-v | --verbose]
      or: git remote add [-t <branch>] [-m <master>] [-f] [--tags | --no-tags] [--mirror=<fetch|push>] <name> <url>
      or: git remote rename <old> <new>
      or: git remote remove <name>
      or: git remote set-head <name> (-a | --auto | -d | --delete | <branch>)
      or: git remote [-v | --verbose] show [-n] <name>
      or: git remote prune [-n | --dry-run] <name>
      or: git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)...]
      or: git remote set-branches [--add] <name> <branch>...
      or: git remote get-url [--push] [--all] <name>
      or: git remote set-url [--push] <name> <newurl> [<oldurl>]
      or: git remote set-url --add <name> <newurl>
      or: git remote set-url --delete <name> <url>
    
       -v, --verbose         be verbose; must be placed before a subcommand
    
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (dev1.0)
    $ git remote add https://github.com/cjf1002361126/test005.git
    usage: git remote add [<options>] <name> <url>
    
       -f, --fetch           fetch the remote branches
       --tags                import all tags and associated objects when fetching
                             or do not fetch any tag at all (--no-tags)
       -t, --track <branch>  branch(es) to track
       -m, --master <branch>
                             master branch
       --mirror[=(push|fetch)]
                             set up remote as a mirror to push to or fetch from
    
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (dev1.0)
    $ git remote add test005 https://github.com/cjf1002361126/test005.git
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (dev1.0)
    $ git remote -v
    test005 https://github.com/cjf1002361126/test005.git (fetch)
    test005 https://github.com/cjf1002361126/test005.git (push)
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (dev1.0)
    $ git pull test005
    warning: no common commits
    remote: Enumerating objects: 4, done.
    remote: Counting objects: 100% (4/4), done.
    remote: Compressing objects: 100% (3/3), done.
    remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
    Unpacking objects: 100% (4/4), done.
    From https://github.com/cjf1002361126/test005
    * [new branch]      master     -> test005/master
    You asked to pull from the remote 'test005', but did not specify
    a branch. Because this is not the default configured remote
    for your current branch, you must specify a branch on the command line.
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (dev1.0)
    $ git branch -v
    * dev1.0 b664094 master添加了b.txt
     master b664094 master添加了b.txt
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (dev1.0)
    $ git branch -av
    * dev1.0                 b664094 master添加了b.txt
     master                 b664094 master添加了b.txt
     remotes/test005/master 4b84137 Initial commit
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (dev1.0)
    $ git push test005 --all
    Enumerating objects: 6, done.
    Counting objects: 100% (6/6), done.
    Delta compression using up to 4 threads
    Compressing objects: 100% (3/3), done.
    Writing objects: 100% (6/6), 479 bytes | 239.00 KiB/s, done.
    Total 6 (delta 0), reused 0 (delta 0)
    remote:
    remote: Create a pull request for 'dev1.0' on GitHub by visiting:
    remote:      https://github.com/cjf1002361126/test005/pull/new/dev1.0
    remote:
    To https://github.com/cjf1002361126/test005.git
    * [new branch]      dev1.0 -> dev1.0
    ! [rejected]        master -> master (non-fast-forward)
    error: failed to push some refs to 'https://github.com/cjf1002361126/test005.git'
    hint: Updates were rejected because a pushed branch tip is behind its remote
    hint: counterpart. Check out this branch and integrate the remote changes
    hint: (e.g. 'git pull ...') before pushing again.
    hint: See the 'Note about fast-forwards' in 'git push --help' for details.
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (dev1.0)
    $ git branch -av
    * dev1.0                 b664094 master添加了b.txt
     master                 b664094 master添加了b.txt
     remotes/test005/dev1.0 b664094 master添加了b.txt
     remotes/test005/master 4b84137 Initial commit
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (dev1.0)
    $ gitk --all
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (dev1.0)
    $ gitk --all
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (dev1.0)
    $ git pull test005 dev1.0
    From https://github.com/cjf1002361126/test005
    * branch            dev1.0     -> FETCH_HEAD
    Already up to date.
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (dev1.0)
    $ echo "c" > c.txt
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (dev1.0)
    $ git add .
    warning: LF will be replaced by CRLF in c.txt.
    The file will have its original line endings in your working directory
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (dev1.0)
    $ git commit -m "dev1.0添加了c.txt"
    [dev1.0 6e4ad14] dev1.0添加了c.txt
    1 file changed, 1 insertion(+)
    create mode 100644 c.txt
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (dev1.0)
    $ git push
    0
    
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (dev1.0)
    $ git push test005
    fatal: The current branch dev1.0 has no upstream branch.
    To push the current branch and set the remote as upstream, use
    
       git push --set-upstream test005 dev1.0
    
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (dev1.0)
    $   git push --set-upstream test005 dev1.0
    Enumerating objects: 4, done.
    Counting objects: 100% (4/4), done.
    Delta compression using up to 4 threads
    Compressing objects: 100% (2/2), done.
    Writing objects: 100% (3/3), 305 bytes | 305.00 KiB/s, done.
    Total 3 (delta 0), reused 0 (delta 0)
    To https://github.com/cjf1002361126/test005.git
      b664094..6e4ad14  dev1.0 -> dev1.0
    Branch 'dev1.0' set up to track remote branch 'dev1.0' from 'test005'.
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (dev1.0)
    $ gitk --all
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (dev1.0)
    $ git checkout master
    Switched to branch 'master'
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (master)
    $ ll
    total 2
    -rw-r--r-- 1 cjf 197121 5 1月  27 16:41 a.txt
    -rw-r--r-- 1 cjf 197121 6 1月  27 16:43 b.txt
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (master)
    $ echo "d.txt" > d.txt
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (master)
    $ git add .
    warning: LF will be replaced by CRLF in d.txt.
    The file will have its original line endings in your working directory
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (master)
    $ git push
    fatal: No configured push destination.
    Either specify the URL from the command-line or configure a remote repository using
    
       git remote add <name> <url>
    
    and then push using the remote name
    
       git push <name>
    
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (master)
    $ git push test005
    fatal: The current branch master has no upstream branch.
    To push the current branch and set the remote as upstream, use
    
       git push --set-upstream test005 master
    
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (master)
    $ git push --set-upstream test005 master
    To https://github.com/cjf1002361126/test005.git
    ! [rejected]        master -> master (non-fast-forward)
    error: failed to push some refs to 'https://github.com/cjf1002361126/test005.git'
    hint: Updates were rejected because the tip of your current branch is behind
    hint: its remote counterpart. Integrate the remote changes (e.g.
    hint: 'git pull ...') before pushing again.
    hint: See the 'Note about fast-forwards' in 'git push --help' for details.
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (master)
    $ ^C
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (master)
    $ git pull
    There is no tracking information for the current branch.
    Please specify which branch you want to merge with.
    See git-pull(1) for details.
    
       git pull <remote> <branch>
    
    If you wish to set tracking information for this branch you can do so with:
    
       git branch --set-upstream-to=test005/<branch> master
    
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (master)
    $ git pull test005
    You asked to pull from the remote 'test005', but did not specify
    a branch. Because this is not the default configured remote
    for your current branch, you must specify a branch on the command line.
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (master)
    $ git pull test005 master
    From https://github.com/cjf1002361126/test005
    * branch            master     -> FETCH_HEAD
    fatal: refusing to merge unrelated histories
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (master)
    $ gitk --all
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (master)
    $ gitk --all
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (master)
    $ git merge --allow-unrelated-histories
    dev1.0           HEAD             ORIG_HEAD        test005/master
    FETCH_HEAD       master           test005/dev1.0
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (master)
    $ git merge --allow-unrelated-histories test005/master
    error: Your local changes to the following files would be overwritten by merge:
     d.txt
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (master)
    $ gitk --all
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (master)
    $ git commit -m "master添加了d.txt"
    [master 417e77b] master添加了d.txt
    1 file changed, 1 insertion(+)
    create mode 100644 d.txt
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (master)
    $ git merge --allow-unrelated-histories test005/master
    Merge made by the 'recursive' strategy.
    .gitignore | 23 +++++++++++++++++++++++
    README.md  |  1 +
    2 files changed, 24 insertions(+)
    create mode 100644 .gitignore
    create mode 100644 README.md
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (master)
    $ gitk --all
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (master)
    $ git push
    fatal: No configured push destination.
    Either specify the URL from the command-line or configure a remote repository using
    
       git remote add <name> <url>
    
    and then push using the remote name
    
       git push <name>
    
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (master)
    $ git push test005
    fatal: The current branch master has no upstream branch.
    To push the current branch and set the remote as upstream, use
    
       git push --set-upstream test005 master
    
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (master)
    $   git push --set-upstream test005 master
    Enumerating objects: 7, done.
    Counting objects: 100% (7/7), done.
    Delta compression using up to 4 threads
    Compressing objects: 100% (4/4), done.
    Writing objects: 100% (5/5), 595 bytes | 595.00 KiB/s, done.
    Total 5 (delta 1), reused 0 (delta 0)
    remote: Resolving deltas: 100% (1/1), done.
    To https://github.com/cjf1002361126/test005.git
      4b84137..ee2880a  master -> master
    Branch 'master' set up to track remote branch 'master' from 'test005'.
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (master)
    $ gitk --all
    
    cjf@DESKTOP-RM9U0H6 MINGW64 /f/gitlearn/github/test005 (master)
    $ git push
    Everything up-to-date
    

    相关文章

      网友评论

          本文标题:git -- 首次上传代码到github的前期工作

          本文链接:https://www.haomeiwen.com/subject/gqbethtx.html