美文网首页
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