千家信息网

如何实现Linux操作Git远程仓库与本地仓库同步

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍"如何实现Linux操作Git远程仓库与本地仓库同步",在日常操作中,相信很多人在如何实现Linux操作Git远程仓库与本地仓库同步问题上存在疑惑,小编查阅了各式资料,整理出简单好用的
千家信息网最后更新 2026年11月02日如何实现Linux操作Git远程仓库与本地仓库同步

这篇文章主要介绍"如何实现Linux操作Git远程仓库与本地仓库同步",在日常操作中,相信很多人在如何实现Linux操作Git远程仓库与本地仓库同步问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何实现Linux操作Git远程仓库与本地仓库同步"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

创建本地仓库并同步到远程
git是非常强大的版本管理工具。接下来的时间里,我就和大家絮叨絮叨git的入门:如何在本地创建一个git仓库,并把自己的本地代码同步到远程。此教程是在mac上操作的,如果您的系统是Linux,那么操作方法相同;如果您的系统是windows,那么,只需要把git的bash窗口调出来,以后的过程也都与Linux相同。
一、首先,您需要安装git,此步就忽略了,自行安装即可。

二、假设你目前还没有创建一个工作目录,那么,先创建一个目录吧,就叫StudyGit。

三、现在的StudyGit目录还只是一个本地目录,和git没有任何关联,那么,我们怎么样才能把这个目录和git关联起来呢?只需要进入StudyGit目录,运行如下命令:

代码如下:


yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git init
Initialized empty Git repository in /Users/yanyaozhen/Coding/Practice/StudyGit/.git/


提示已经说明我们初始化了一个空的本地git仓库。如果你查看StudyGit下的所有文件时,会发现一个.git 的隐藏文件,这个文件非常重要,版本的控制就靠它了。同时,如果你要部署应用程序到生产环境时,切记不要把该目录部署到服务器,因为这可是黑客的最爱啊!

四、接下来我们来看一个基本可以说是用的最频繁的一个命令:

代码如下:


yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git status


On branch master

Initial commit

nothing to commit (create/copy files and use "git add" to track)
没错,就是"git status"。这个命令用于查看当前git的状态,比如,上面的例子中,我们刚创建了一个空的git仓库,那么运行该指令时,git会提示我们,当前没有任何东西要提交,同时提示我们,可以创建或者复制文件后使用"git add"命令来跟踪文件的变化。

五、现在让我们来创建一个文件吧。我们创建一个叫"a.txt"的文本文件,并且内容如下:

代码如下:


yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ cat a.txt


aaa
这个时候,让我们再来运行下git status吧。运行如下:

代码如下:


yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git status


On branch master

Initial commit

Untracked files:
(use "git add ..." to include in what will be committed)

a.txt

nothing added to commit but untracked files present (use "git add" to track)
这时会提示我们有一个未追踪的文件,叫a.txt。我们要把这个文件加入到版本控制中,于是,我们运行如下命令:

代码如下:


git add a.txt


这个命令表示把我们指定的a.txt加入到git控制之下。add命令可以没有参数(在windows下可以没有参数,在mac下需要指定当前目录即"."),如果没有参数,则表示把目录下的所有文件都加入到git仓库中。这个时候,我们再运行下"git status":

代码如下:


yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git status


On branch master

Initial commit

Changes to be committed:
(use "git rm --cached ..." to unstage)

new file: a.txt
提示我们有改变需要被提交。这个时候,a.txt这个文件就存在于所谓的"暂存区"中,暂存区中的文件可以被真正提交到git仓库。有同学可能说,如果我不想提交这个文件了,那怎么把刚才的文件从暂存区移除呢?其实答案就在刚才的提示中:
use "git rm --cached ..." to unstage。
那么,我们运行下这个命令:

代码如下:


yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git rm --cached a.txt


rm 'a.txt'
再运行git status时就可以发现,又回到文件没有被提交时的状态了。

六、当我们的文件已经通过"git add"加入到暂存区后,就可以把文件真正提交到git仓库了。如下:

代码如下:


yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git commit -m "提交a.txt"


*** Please tell me who you are.

Run

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: unable to auto-detect email address (got 'yanyaozhen@macbookpro.(none)')
阿欧,报错了,查看给出的错误原因,发现是因为没有设置email和用户名,所以git不让我提交。git为什么要强制要求设置了这两个配置才能提交呢?因为git必须得知道是谁提交的,如果连谁提交的都不知道,那还怎么做版本管理啊,是不。所以我们根据提示设置下:

代码如下:


yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git config --global user.email "youremail@example.com"
yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git config --global user.name "yourusername"
yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$


好了,我们再提交下:

代码如下:


yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git commit -m "提交a.txt"


[master (root-commit) dab07d0] 提交a.txt
1 file changed, 1 insertion(+)
create mode 100644 a.txt
发现已经可以提交成功了,提示一个文件被修改(就是我们的a.txt),一行被插入(就是我们唯一的一行"aaa")。
我们再运行下git status:

代码如下:


yanyaozhen@macbookpro:~/Coding/Practice/StudyGit$ git status


On branch master
nothing to commit, working directory clean
提示我们当前没有东西要提交,当前工作目录是干净的,因为我们都提交到git了。
好了,到这步后,git就可以完全跟踪已经被提交的文件了,以后,这个文件的任何修改,它都可以记录下来。比如某个人对项目私自修改了一些东西,项目管理者根据git的版本记录是一定可以找到是谁修改了哪些文件的。
现在我们就可以把文件提交到远程服务器了。

七、当我们要提交git仓库中的内容到远程服务器时,我们必须得先成为远程服务器受信任的用户才行(服务器当然不允许所有人都可以推送内容,那样就乱套了)。这个时候,我们需要先在本地生成一个公钥,然后把公钥放到远程服务器的账户列表中。生成公钥的命令如下:

代码如下:


ssh-keygen -t rsa -C "youremail@example.com"


如果你是windows用户,那么公钥生成的目录是C:\Users\用户名.ssh下,里面有两个文件 id_rsa 和 id_rsa.pub ,其中id_rsa.pub中的内容就是我们需要的公钥。如果你是Linux或者mac用户,那么在用户主目录下也会有一个.ssh目录,里面放着的是私钥和公钥。假设我们现在要把github作为远程推送服务器地址,那么,我们首先把公钥放在github的settings->SSH keys列表中(点击新建一个ssh key,title随意,把公钥的全部内容复制进行保存即可)。

八、现在我们可以给StudyGit项目在github上添加一个远程仓库了。在github上add new repository,名字我在这里也用StudyGit了(起其他名字也可以),建好后显示如下:

可以看到有一个ssh地址是git@github.com:onlyanyz/StudyGit.git,这个就是我们的远程git仓库地址了,一会我们就会把文件推送到这里。
接下来,我们需要把本地git仓库关联到远程git仓库,操作如下:进入本地StudyGit根目录,执行如下命令:

代码如下:


git remote add origin git@github.com:onlyanyz/StudyGit.git


这个命令的意思是,我给远程仓库(就是git@github.com:onlyanyz/StudyGit.git)起了个别名,叫origin(其实叫别的名字也可以,你只要知道这是别名就行,以后就用别名来操作远程库)。操作后,我们可以使用"git remote"命令来查看当前本地仓库关联了哪些远程仓库(它会列出每个远程库的简短名字。如果您之前会使用git clone命令的话,在克隆完某个项目后,至少可以看到一个名为 origin 的远程库,Git默认使用这个名字来标识你所克隆的原始仓库)。

九、关联了远程仓库之后,我们就可以推送了。将本地仓库push到远程仓库的命令如下:

代码如下:


git push origin master


命令解释如下:
git push的语法为:git push <远程主机名> <本地分支名>:<远程分支名>
该语法表示把本地分支名push到远程主机名的远程分支。我们可以看到刚才执行的语句并没有远程分支名(被省略了),如果省略远程分支名,则表示将本地分支推送到与之存在"追踪关系"的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。所以刚才执行的语句的意思是,把本地的master分支推送到远程主机的master分支。
关于git push命令以后还需要注意的地方:
a.如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。例如:

代码如下:


$ git push origin :master


该命令等同于如下指令:$ git push origin --delete master,表示删除远程主机的master分支。
b.git push 有时候本地分支和远程分支名都可以省略,有时候连主机名也可以省略,这个现在就不细说了。
c.如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用git push:

代码如下:


$ git push -u origin master


好了,现在我们已经把StudyGit目录中的内容都推送到远程了,现在运行git status看下:

代码如下:


~/Coding/Practice/StudyGit$ git status


On branch master
nothing to commit, working directory clean
工作目录还是干净的,接下来您就可以继续在本地进行创建文件->提交到暂存区->提交到本地仓库->push到远程仓库的过程啦!

将远程仓库克隆到本地
下面我们来讲一个新的玩法,就是先有远程仓库,后有本地仓库,即把远程仓库"克隆(clone)"到本地。
假设现在你的团队其他成员已经在git上建好了仓库,并且也push过代码,这个远程git仓库还叫"StudyGit",有两个文件:a.txt和README.md,现在,您也要开始贡献代码了,那么,您首先需要把团队其他成员提交的所有东西都拉取到你的本地目录,这个时候就会用到"clone"命令了:

代码如下:


git clone git@github.com:onlyanyz/StudyGit.git


只要执行这句指令,就可以把远程仓库的所有东西都拉取到本地工作目录了,当然生成的本地目录名和远程仓库名字是一样的。
如果您现在查看下当前本地git仓库的状态,如下:

代码如下:


yanyaozhen@macbookpro:~/Coding/StudyGit$ git status


On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean
命令回显表示,我的本地分支已经更新为最新的远程master分支了。此后,我们就可以按照"git快速入门之一"这篇文章所述进行添加代码并提交了。
现在,让我们再看下刚才clone到本地的git项目,现在有两个文件,如下:

代码如下:


yanyaozhen@macbookpro:~/Coding/StudyGit$ ll


total 16
-rw-r--r-- 1 yanyaozhen staff 21B 11 19 00:04 README.md
-rw-r--r-- 1 yanyaozhen staff 4B 11 19 00:04 a.txt
接下来,假如A同学在github上的这个仓库中又新增了一个文件b.txt,那现在github远程仓库中就有三个文件(注意,现在本地仓库中的文件就已经与远程仓库不同了)。
接下来,我们在本地继续我们的开发工作,假如新建了一个文件"c.txt",现在,让我们来把"c.txt"文件加入暂存区,然后commit到本地仓库,这时,我们想把刚才的工作成果再push到远程,执行如下:

代码如下:


yanyaozhen@macbookpro:~/Coding/StudyGit$ git push origin master


To git@github.com:onlyanyz/StudyGit.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'git@github.com:onlyanyz/StudyGit.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first 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.
阿欧,报错了,懂点英文的同学可以从提示信息看出问题所在,因为我们的远程已经有更新了,我们在push到远程的时候,必须先把远程的改动拉到本地合并起来,才能再次提交我的修改。所以,以下的命令就出场了:

代码如下:


$ git fetch origin master


该指令意思是从远程origin仓库的master主分支更新最新的版本到origin/master分支上。
然后我们比对下当前本地master分支和origin/master分支的区别:

代码如下:


$ git log -p master..origin/master


执行的回显结果会详细列出这两个分支的差异。
然后,我们需要把origin/master分支上的内容合并到本地master分支:

代码如下:


git merge origin/master


执行该指令后,可能会要求输入合并的理由,填写后,我们就合并成功了。这个时候,我们就可以再次push了:

代码如下:


yanyaozhen@macbookpro:~/Coding/StudyGit$ git push origin master


Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (5/5), 543 bytes | 0 bytes/s, done.
Total 5 (delta 2), reused 0 (delta 0)
To git@github.com:onlyanyz/StudyGit.git
6b3662f..6036a05 master -> master
表示push成功,现在你可以去github上看到我们在本地新建的b.txt文件啦!

到此,关于"如何实现Linux操作Git远程仓库与本地仓库同步"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

仓库 文件 代码 分支 命令 目录 提示 运行 公钥 接下来 内容 就是 时候 服务器 服务 同步 主机 名字 版本 存区 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技名片 广州大一互联网络科技有限公司 河南云网互联网络科技有限公司 涨乐互联网科技 互联网科技卖菜 互联网科技革命 互联网科技视频 互联网高科技企业 长亮科技 互联网金融 互联网科技英文翻译 华中科技有哪些互联网大佬 深圳国际航运科技和互联网 银川新华互联网科技职业技术培训学校图片 河南住房之家互联网科技 中天科技中国工业互联网 四川互联网展示科技馆设计 厦门江牛科技互联网 珠海东科互联网科技有限公司 马化腾互联网科技教学 数字互联网科技有限公司 互联网和科技技术 互联网巨头反垄断金融科技 互联网科技媒体 沃里互联网科技 长亮科技 互联网金融 成都玖崟互联网科技有限公司乐商圈怎么样 南平创想时代互联网科技有限公司 国大互联网教育科技有限公司薪资 图游互联网科技 上海万顺科技互联网有限公司招聘
0