git使用(3)
远程仓库
1.本文使用gitee作为远程仓库,首先创建仓库

2.将本地仓库与远程的空仓库进行关联,并将本地仓库的提交内容推送到远程仓库(由于之前已经设置过账号密码,以下内容中并没有输入账号密码的提示,如果未设置过账号密码,在推送时可能会提示输入gitee账号和密码)
[root@baseserver gittest]# touch README.md ##创建readme.md
[root@baseserver gittest]# git status ##查看仓库状态
位于分支 master
未跟踪的文件:
(使用 "git add <文件>..." 以包含要提交的内容)
README.md
提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
[root@baseserver gittest]# git add README.md ##加入提交
[root@baseserver gittest]# git commit -m "readme.md" ##提交新建文件
[master e9639ce] readme.md
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 README.md
[root@baseserver gittest]# git remote add origin https://gitee.com/xxxxxx/gittest.git ##与远程仓库进行关联,后面的地址是创建好的远程仓库的地址
[root@baseserver gittest]# git push -u origin "master" ##将本地仓库内容推送至远程仓库
对象计数中: 21, 完成.
压缩对象中: 100% (12/12), 完成.
写入对象中: 100% (21/21), 1.62 KiB | 0 bytes/s, 完成.
Total 21 (delta 2), reused 0 (delta 0)
remote: Powered by GITEE.COM [1.1.5]
remote: Set trace flag 294def95
To https://gitee.com/xxxxxx/gittest.git
* [new branch] master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master。
3.刷新gitee页面,发现本地内容已提交到远程仓库

删除远程仓库(解除与远程仓库的关联,并没有物理删除远程仓库)
[root@baseserver gittest]# git remote -v ##查看远程仓库信息
origin https://gitee.com/xxxxxx/gittest.git (fetch)
origin https://gitee.com/xxxxxx/gittest.git (push)
[root@baseserver gittest]# git remote rm origin ##删除与origin的关联
[root@baseserver gittest]# git push -u origin master ##尝试推送,未成功
fatal: 'origin' does not appear to be a git repository
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
从远程仓库中克隆
[root@baseserver git3]# git clone https://gitee.com/xxxxxx/gittest.git ##克隆命令
正克隆到 'gittest'...
remote: Enumerating objects: 27, done.
remote: Counting objects: 100% (27/27), done.
remote: Compressing objects: 100% (17/17), done.
remote: Total 27 (delta 4), reused 0 (delta 0), pack-reused 0
展开对象中: 100% (27/27), 完成.
检查连接... 完成。
[root@baseserver git3]# ll
总用量 0
drwxr-xr-x. 3 root root 68 12月 26 15:18 gittest
[root@baseserver git3]# cd gittest/
[root@baseserver gittest]# ll
总用量 8
-rw-r--r--. 1 root root 0 12月 26 15:18 README.md
-rw-r--r--. 1 root root 22 12月 26 15:18 test2.txt
-rw-r--r--. 1 root root 149 12月 26 15:18 test.txt
分支管理
1.创建分支
[root@baseserver gittest]# git branch ##查看分支
* master
[root@baseserver gittest]# git checkout -b dev ##创建并切换到dev分支,-b表示创建并切换
切换到一个新分支 'dev'
[root@baseserver gittest]# git branch ##*表示当前指针指向的分支
* dev
master
2.合并分支
[root@baseserver gittest]# vi test.txt ##使用vi打开test.txt,修改文件内容并保存
[root@baseserver gittest]# git status ##查看仓库状态
位于分支 dev
尚未暂存以备提交的变更:
(使用 "git add <文件>..." 更新要提交的内容)
(使用 "git checkout -- <文件>..." 丢弃工作区的改动)
修改: test.txt
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
[root@baseserver gittest]# git add test.txt ##加入提交
[root@baseserver gittest]# git commit -m "update test dev" ##提交更新
[dev 6c5c043] update test dev
1 file changed, 1 insertion(+)
[root@baseserver gittest]# git checkout master ##切换分支到master
切换到分支 'master'
您的分支与上游分支 'origin/master' 一致。
[root@baseserver gittest]# git merge dev ##将dev分支上的内容合并到master
更新 9b7a206..6c5c043
Fast-forward
test.txt | 1 +
1 file changed, 1 insertion(+)
[root@baseserver gittest]# git status
位于分支 master
您的分支领先 'origin/master' 共 1 个提交。
(使用 "git push" 来发布您的本地提交)
nothing to commit, working tree clean
[root@baseserver gittest]# git push -u origin master ##将合并后的分支推送到远程仓库
对象计数中: 3, 完成.
压缩对象中: 100% (3/3), 完成.
写入对象中: 100% (3/3), 332 bytes | 0 bytes/s, 完成.
Total 3 (delta 1), reused 0 (delta 0)
remote: Powered by GITEE.COM [1.1.5]
remote: Set trace flag 3747aeb4
To https://gitee.com/xxxxxx/gittest.git
9b7a206..6c5c043 master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master。
3.删除分支
[root@baseserver gittest]# git branch -d dev ##删除dev分支
已删除分支 dev(曾为 6c5c043)。
[root@baseserver gittest]# git branch
* master
4.解决冲突
[root@baseserver gittest]# git merge dev ##执行merge命令,产生冲突
自动合并 test.txt
冲突(内容):合并冲突于 test.txt
自动合并失败,修正冲突然后提交修正的结果。
[root@baseserver gittest]# git status ##查看具体冲突文件
位于分支 master
您的分支领先 'origin/master' 共 1 个提交。
(使用 "git push" 来发布您的本地提交)
您有尚未合并的路径。
(解决冲突并运行 "git commit")
(use "git merge --abort" to abort the merge)
未合并的路径:
(使用 "git add <文件>..." 标记解决方案)
双方修改: test.txt
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
[root@baseserver gittest]# git add test.txt ##解决冲突内容后,加入提交
[root@baseserver gittest]# git commit -m "merge conflict" ##提交修改内容
[master 0635a6c] merge conflict
[root@baseserver gittest]# git push -u origin ##推送至远程仓库
对象计数中: 9, 完成.
压缩对象中: 100% (9/9), 完成.
写入对象中: 100% (9/9), 864 bytes | 0 bytes/s, 完成.
Total 9 (delta 4), reused 0 (delta 0)
remote: Powered by GITEE.COM [1.1.5]
remote: Set trace flag 8d4f60af
To https://gitee.com/xxxxxx/gittest.git
6c5c043..0635a6c master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master。
5.冲突文件,Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容
<<<<<<< HEAD ##指当前分支
7744
=======
44
66
>>>>>>> dev
6.git log查看实际提交及解决冲突过程
[root@baseserver gittest]# git log --graph --pretty=oneline --abbrev-commit
* ea111f7 commit any
|\
| * 498f711 update dev2
* | 859506f update master2
|/
* 0635a6c merge conflict
|\
| * fea0604 commit dev
* | 35c4267 commit 2
|/
* 6c5c043 update test dev
* 9b7a206 test2
* acc96de 22
* e9639ce readme.md
* 286201d add test2:
* a91f086 update next
* f213330 udpate2
* f8f70ba another update
* 42508c1 修改test.txt
* d6c1695 添加test.txt
浙公网安备 33010602011771号