推送到远程仓库
当想分享你的代码时,可以将其推送到远程仓库,命令格式:git push[remote-name] [branch-name]
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master)
$ git push origin master
origin 是上面绑定的远程仓库的地址 ,master是本地仓库的分支
执行后出现用户输入账号和密码,前面因为仓库是开源仓库,又是下载操作,所以不需要输入账号和密码,此时是上传到仓库,所以需要验证需要输入远程仓库的账户和密码
验证成功后
跳出成功信息
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master)
$ git push origin master
Enumerating objects: 6, done.
Counting objects: 100% (6/6), done.
Delta compression using up to 12 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (5/5), 566 bytes | 566.00 KiB/s, done.
Total 5 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.4]
To https://gitee.com/doreamen-ac/test01.git
9f0ab69..c2a25de master -> master
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master)
$
进入远程仓库,刷新
会出现hello文件表示上传成功
在本地仓库修改文件之后,需要加入暂存区,之后提交到本地仓库,然后推送到远程仓库这样做实有一点麻烦
新建一个world文档
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master)
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
world.txt
nothing added to commit but untracked files present (use "git add" to track)
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master)
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master)
$ git add world.txt
加入git
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master)
$ git commit -a -m "world"
[master c44aa8d] world
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 world.txt
提交到本地仓库
这里的
git commit -a -m "sssssss"
命令表示可以跳过Modifed过程,直接提交到本地仓库,用于update时
但是此处用于新文件没有用到,但是可以保持这个习惯
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master)
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: hello.txt
modified: world.txt
no changes added to commit (use "git add" and/or "git commit -a")
修改两个文档,直接进行commit命令
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master)
$ git commit -a -m "update"
[master 1e63530] update
2 files changed, 2 insertions(+), 1 deletion(-)
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master)
$ git status
On branch master
nothing to commit, working tree clean
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master)
$
跳过modefied过程
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master)
$ git push origin master
确认账号
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master)
$ git push origin master
Enumerating objects: 9, done.
Counting objects: 100% (9/9), done.
Delta compression using up to 12 threads
Compressing objects: 100% (5/5), done.
Writing objects: 100% (7/7), 631 bytes | 631.00 KiB/s, done.
Total 7 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.4]
To https://gitee.com/doreamen-ac/test01.git
c2a25de..1e63530 master -> master
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master)
$
推送成功
可以看到,两个文档刚刚进行了修改
说明推送已经成功
Git 分支
几乎所有的版本控制系统都以某种形式支持分支
使用分支一位置妮克以把你的工作从开发主线上分离开来,以免影响开发主线
Git的master分支并不是一个特殊的分支,他跟其他分支没有区别
之所以几乎每一个仓库都有一个master分支是应为git init 命令默认创建它,并且大多是人都懒得改动它.
相关的分支命令
- 查看分支
- 创建分支
- 切换分支
- 推送至远程仓库分支(自己的分支推送到远程仓库,远程仓库多出来一个分支)
- 合并分支
- 删除分支
查看分支
列出所有本地分支(本地仓库里面的分支)
branch:翻译过来就是分支的意思
git branch
列出所有远程分支(远程仓库里面的分支)
git branch -r
列出所有本地分支和远程分支
git branch -a
以本地test01为例
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master)
$ git branch
* master
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master)
$
只有一个分支master
这就是本地仓库的分支
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master)
$ git remote -v
origin https://gitee.com/doreamen-ac/test01.git (fetch)
origin https://gitee.com/doreamen-ac/test01.git (push)
关联的远程仓库
远程仓库的分支:
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master)
$ git branch -r
origin/master
-r:代表remote远程的
origin指代远程仓库的地址,master分支
查看关联的所有分支
-a:代表all表示所有
ndrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master)
$ git branch -a
* master
remotes/origin/master
创建分支
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master)
$ git branch b1
这样就创举了一个b1分支
查看分支
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master)
$ git branch
b1
* master
除了有master,还有一个b1
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master)
$ git branch b2
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master)
$ git branch
b1
b2
* master
这里一共有三个分支了,master前边的*表示当前处于哪一个分支
切换分支
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master)
$ git checkout b1
Switched to branch 'b1'
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (b1)
$ git branch
* b1
b2
master
本地分支推送至远程分支
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (b1)
$ git push origin b1
由于b1分支实在 master基础上建成的所以b1分支和master分支内容相同
合并分支
使用
git checkout b1
切换到b1分支
新建一个java文件
git add User.java
git commit
add User.java in b1 branch
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch master
# Changes to be committed:
# new file: User.java
# new file: User.java.bak
#
~
~
~
~
之后切换到master
git checkout master
返回文件夹会发现
将之前在b1下面创建的文件合并到master中来
切换到master分支中执行命令
git merge b1
文件来自于b1
通过merge命令合并分支
但是还有一个问题
有时候合并操作并不会如此顺利,如果在两个不同的分支中,对同一个文件的同一个部分进行了不同的修改,Git就没办法合并他们,同时会提示文件的冲突,此时,需要打开冲突的文件,并且修复冲突内容,最后执行
git add
命令来表示冲突问题已经解决
add命令除了将文件加入Staged状态还可以解决冲突
将分支切换到master中
在文件夹中修改User.java
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master)
$ git add User.java
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master)
$ git add User.java.bak
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master)
$ git commit
[master e96b1d5] $ git add User.java
2 files changed, 6 insertions(+)
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master)
$ git checkout b1
Switched to branch 'b1'
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (b1)
$
打开User.java文件会发现之前的修改消失
因为之前在master中修改,而现在是在b1中
在User.java 中再次进行修改,内容和master中不同
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (b1)
$ git add User.java
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (b1)
$ git add User.java.bak
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (b1)
$ git commit -m "update User.java in b1"
[b1 4d93464] update User.java in b1 branch
2 files changed, 6 insertions(+)
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (b1)
$ git checkout master
Switched to branch 'master'
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master)
$ git merge b1
Auto-merging User.java
CONFLICT (content): Merge conflict in User.java
Automatic merge failed; fix conflicts and then commit the result.
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master|MERGING)
$
CONFLICT:冲突
在合并过程中会发现出错
打开User.java文件会发现有一点乱
不同好在之前后面加了注释
手动修改冲突内容:
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master|MERGING)
$ git add User.java
表示命令修改完成
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master|MERGING)
$ git commit
:wq直接退出
git 只会提示你冲突,至于保留哪些,是需要自己来解决
这些都是在本地仓库进行的,在远程仓库中并没有
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master)
$ git push origin master
Enumerating objects: 14, done.
Counting objects: 100% (14/14), done.
Delta compression using up to 12 threads
Compressing objects: 100% (12/12), done.
Writing objects: 100% (13/13), 1.47 KiB | 500.00 KiB/s, done.
Total 13 (delta 4), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.4]
To https://gitee.com/doreamen-ac/test01.git
1e63530..471b85d master -> master
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master)
push到远程仓库
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master)
$ git push origin b1
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.4]
To https://gitee.com/doreamen-ac/test01.git
1e63530..4d93464 b1 -> b1
Andrewer@CaesarGattuso MINGW64 /d/BaiduNetdiskDownload/gitRepository/test01 (master)
$
将b1分支推送到远程仓库