Git远程仓库基本操作



一. 与远程仓库建立联系

1. 在本地添加远程仓库

  • 首先,可以查看当前项目目录下关联的远程仓库服务器。若是克隆下来的会看到默认名字origin。我的这个项目目录没有做任何关联,所以结果为空
$ git remote
  • 执行如下命令为该项目目录添加远程仓库
# git remote add [shortname] <url>
$ git remote add origin https://github.com/yaokuku123/git-remote
  • 添加完远程仓库后,再次执行 git remote 命令,可以发现已经有了之前定义的origin仓库服务器
$ git remote
origin
  • 查看origin指代的具体url地址
$ git remote -v 
origin  https://github.com/yaokuku123/git-remote (fetch)
origin  https://github.com/yaokuku123/git-remote (push)
  • 从远程仓库拉取某个分支的数据,这里拉取master分支的数据。通过日志可以发现该操作仅会拉取master分支的数据,其他分支的不会拉取。(与clone的区别)
$ git pull origin master
remote: Enumerating objects: 23, done.
remote: Counting objects: 100% (23/23), done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 23 (delta 1), reused 21 (delta 1), pack-reused 0
Unpacking objects: 100% (23/23), 2.47 KiB | 27.00 KiB/s, done.
From https://github.com/yaokuku123/git-remote
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> origin/master
 
 $ git log --oneline --graph --all
*   837e140 (HEAD -> master, origin/master) Merge branch 'master' of https://github.com/yaokuku123/git-remote
|\
| * 27bf482 Create README.md
* | 52de187 create new.txt
|/
* f761c45 return to history
* bfe5810 delete heihei.txt in master branch
* f61fe67 create heihei.txt in master branch
* 736a397 heihei
* 6ceef91 second file
* 5510769 first file

至此,通过本地建立与远程仓库的连接完成,并且成功拉取数据到本地

2. 从远程仓库克隆到本地

相比于上述方法,使用克隆可以更为简单的建立与远程仓库的联系。执行下述操作可以成功下载远程仓库的数据。可以发现该操作会下载所有分支的数据

$ git clone https://github.com/yaokuku123/git-remote
Cloning into 'git-remote'...
remote: Enumerating objects: 25, done.
remote: Counting objects: 100% (25/25), done.
remote: Compressing objects: 100% (15/15), done.
remote: Total 25 (delta 2), reused 22 (delta 1), pack-reused 0
Receiving objects: 100% (25/25), done.
Resolving deltas: 100% (2/2), done.

$ git log --oneline --graph --all
*   837e140 (HEAD -> master, origin/master, origin/HEAD) Merge branch 'master' of https://github.com/yaokuku123/git-remote
|\
| * 27bf482 Create README.md
* | 52de187 create new.txt
|/
* f761c45 return to history
* bfe5810 delete heihei.txt in master branch
* f61fe67 create heihei.txt in master branch
| * 4399212 (origin/dev) create hello.txt in dev
|/
* 736a397 heihei
* 6ceef91 (origin/test) second file
* 5510769 first file

二. 提交数据到远程仓库

1. 正常操作流程

  • 首先,通过上述操作将远程仓库的内容克隆到本地
$ git clone https://github.com/yaokuku123/git-remote
  • 修改其中的某个文件并提交到本地仓库
$ echo "Hello World" >> test.txt
$ git add test.txt
$ git commit -m "add one line in test.txt"
  • 将本地仓库的数据推送到远程仓库的master分支
$ git push origin master

2. 遇到远程仓库不一致的情况

在尝试运行 git push 命令的时候,若远端仓库已经与开始时不一致,远端仓库的版本已发生迭代,则会导致此时的push操作失败。

  • 当push操作失败时,需要首先抓取远程仓库的最新版本数据。执行完该操作通过查看日志,可以发现此时发生分叉
$ git fetch
  • 查看抓取到的新版修改的最先代码,若不存在问题。则执行下列操作合并远端的分支到master分支。若没有冲突则成为最新变更;若存在冲突则解决冲突的部分数据即可
$ git merge origin/master
  • 合并分支后,再次执行推送操作即可
$ git push origin master

另外,也可以强制推送。强制推送会覆盖远程仓库的更改,并且可以把旧版本的数据强行覆盖远程仓库中的数据。(不推荐使用)

$ git push -f origin master