首次上传本地分支到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 --all
和 git 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
网友评论