`
aaron7524
  • 浏览: 64467 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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 <file>..." 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 <file>..." 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了(起其他名字也可以),建好后显示如下:
屏幕快照 2015-11-17 下午11.00.11.png
可以看到有一个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到远程仓库的过程啦!
分享到:
评论

相关推荐

    初学者必看,git同步本地代码到远程仓库

    如果要创建新的仓库或在本地创建新文件夹并同步到新的远程仓库,你可以重复以上步骤。了解这些基本的 Git 命令对于任何开发者来说都是必要的,它们构成了 Git 工作流程的基础。随着经验的积累,你将更加熟练地运用 ...

    git自动更新远程仓库工具

    通过这种方式,你可以设置定时任务,让`gitfetch`定期检查并更新所有镜像仓库,确保本地始终与远程保持同步。这在持续集成/持续部署(CI/CD)流程中尤其有用,因为它可以自动化代码更新,避免人工介入。 在实际应用中...

    git提交本地分支到远程分支 - springbarley - 博客园1

    【Git提交本地分支到远程分支】是Git版本控制系统中的常见操作,用于将本地开发的代码同步到远程仓库,以便团队成员共享代码或进行版本控制。本文将详细解释如何完成这个过程,以及涉及到的相关Git命令。 首先,...

    遍历本地git仓库拉取更新代码

    面对100多个git仓库,手工同步更新是一件麻烦而痛苦的事情!可使用git脚本+定时任务,实现自动同步。解放自己,做更有意义的事情。 调用方法: sh /opt/git-repo-sync-script.sh /opt/GitRepoClone/

    Git如何修改远程仓库地址

    同时,可以通过 `git fetch` 和 `git pull` 更新本地分支与远程分支的同步状态,而 `git push` 可以将本地更改推送到远程仓库。 理解并熟练掌握远程仓库的管理对于协同开发至关重要,它可以帮助你更有效地与其他...

    Git远程仓库使用方法

    要将本地项目与远程仓库关联,首先需要在本地创建Git仓库。打开命令行终端,如Git Bash,使用`cd`命令切换到你想要作为仓库根目录的文件夹,然后运行`git init`。这将在当前目录下初始化一个新的Git仓库。 **3. ...

    maven 自动发布更新本地和远程仓库

    在这个场景下,我们讨论的是如何利用 Maven 将项目自动发布到本地和远程Maven仓库,以便于团队成员共享和进一步的部署。 1. **Maven生命周期**: Maven 的生命周期包括清洁(clean)、构建(compile)、测试(test...

    git本地推送远程步骤

    Git不仅能够帮助我们管理代码版本,还能方便地将本地的更改同步到远程仓库中,实现团队协作。本文将详细介绍如何通过Git将本地的更改推送到远程仓库,并对每一步骤进行深入解析。 #### 二、准备工作 在正式推送...

    git 入门教程之本地仓库和远程仓库的本质介绍

    你可以通过 `git remote add` 命令添加远程仓库,并使用 `git push` 将本地的更新推送到远程仓库,以便他人获取最新进展。 在个人开发中,常用的 Git 命令包括: 1. `git add`:将工作区的更改添加到暂存区,准备...

    git push 本地项目推送到远程分支的方法(git命令版)

    总结而言,Git推送是一个将本地更改同步到远程仓库的过程,目的是让其他协作者可以获取到最新的代码更改。掌握git push命令对于团队协作是十分重要的,尤其是了解如何解决推送冲突,设置默认推送配置,可以提高工作...

    git放弃本地修复 拉取线上覆盖 添加 .gitignore文件不起作用

    - 使用`git fetch --all`命令,该命令用于下载远程仓库中的所有分支到本地,并不会自动合并。 2. **将本地指针重置到远程仓库的最新状态**: - 执行`git reset --hard origin/master`。这里假设你要与之同步的分支...

    git新建仓库.txt

    # 在服务器上创建目录并初始化为Git仓库 cd /home/git/ mkdir test cd test git init --bare ``` - `git init --bare`:此命令用于创建一个裸仓库(bare repository),这种仓库不包含工作目录,只包含`.git`目录,...

    Git操作自动化脚本:多远程仓库管理与分支同步工具

    使用场景及目标:该脚本旨在简化日常的 Git 操作,如提交代码、同步远程仓库等。特别适用于需要同时与多个远程仓库交互的场景,帮助用户节省时间,减少重复性操作。其他说明:用户可以通过命令行参数灵活地添加远程...

    git切换到指定远程分支的方法

    本文将详细讲解如何使用Git切换到指定的远程分支,并进行相关的操作,如创建、跟踪、推送和查看远程分支。 首先,要查看远程仓库的所有分支,可以使用`git branch -a`命令。这将列出本地的分支以及远程分支。远程...

    Git本地代码管控(Vscode编辑)

    ### Git本地代码管控(Vscode编辑) #### 一、引言 在软件开发过程中,代码的版本管理和变更追踪是一项至关重要的工作。...此外,如果需要将代码同步到远程仓库,还可以进一步学习如何使用Git进行远程仓库的操作。

    git常用命令.txt

    1:git init 进入到上传的文件的目录下,使用命令初始...把本地仓库中的文件同步到远程仓库中。其中master为远程仓库的分支名。 git push -u origin master;这一步需要输入github的账号和密码: 6:git status

    java代码同步,git命令使用和详细说明 常用的git命令都有,git工作区、暂存区、本地仓库、远程仓库

    java代码同步,git命令使用和详细说明。常用的git命令都有,git工作区、暂存区、本地仓库、远程仓库,git工作区、暂存区、本地仓库、远程仓库

    GIT代码同步可视化界面工具

    1. **克隆仓库**:SourceTree允许用户从GitHub、Bitbucket或其他Git托管平台克隆远程仓库到本地,便于本地开发。 2. **分支管理**:在SourceTree中,你可以轻松创建、切换和合并分支。这对于多人协作的项目尤其有用...

    linux-零配置Git仓库与SVN的同步用于发布WordPress插件

    2. **创建Git仓库并关联SVN**: 在你的WordPress插件项目目录下,初始化一个新的Git仓库,然后使用`git svn clone`命令将WordPress SVN仓库克隆为Git仓库。这一步会将SVN仓库的历史数据导入到Git中,并建立两者之间...

    git

    - 使用`git checkout -b [本地分支名] remotes/origin/[远程分支名]`将远程分支取到本地,并自动建立跟踪关系。 - 示例:`$ git checkout -b test remotes/origin/test` - 或者使用`-t`参数,它会在本地建立一个...

Global site tag (gtag.js) - Google Analytics