Git学习总结(一)

一、git知识分享

1.git clone与git pull的区别:

       git clone即克隆代码,从远程服务器克隆一个一模一样的版本库到本地,是一个本地从无到有的过程。

       git pull 即拉取代码,从远程仓库获取一个branch分支的更新到本地,并更新到本地库(pull是指同步一个在本地有版本的库内容更新的部分到本地库),相当于从远程获取最新版本并merge到本地,git pull = git fetch+git merge

       git clone是远程操作的第一步,本地修改完代码后,在从本地仓库push到远程仓库前要先git pull,保证push 到远程下仓库时代码没有版本冲突。

2.集中式版本控制系统和分布式版本控制系统:

       集中式版本控制系统,版本库集中存放在中央服务器,每次需要的时候都要从中央服务器上获取最新版本,用完后在将自己的版本库推送的中央服务器。集中版本控制系统需要联网才能工作。

       分布式版本控制系统,不存在“中央服务器”,每个人的电脑都是一个完整的版本库,因此,工作的时候不需要联网。:Git是用c语言开发的分布式版本控制系统。

3.工作区、暂存区、版本库:

  1. 工作区:就是所创建的文件目录;
  2. 暂存区:即stage或者index。一般存放在”.git”文件中的index文件,所以也可以叫暂存区为索引;
  3. 版本库:工作区有一个隐藏的文件夹(可通过设置取消隐藏).git,即为git的版本库。

下图表示了工作区、暂存区、版本库之间的区别:

Git学习总结(一)_第1张图片

 

图中最左侧为工作区,右侧为版本库。在版本库中标记为indec(stage)的部分为暂存区,标记为master的是master分支所代表的目录树;HEAD实际是指向master的一个游标。

当对工作区修改(或新增)的文件执行“git add”命令时,暂存区的目录树会被更新;当执行提交操作”git commit”时,暂存区中的目录树或被写到版本库中,master分支会做相应的更新。

4.工作目录中文件的三种状态:

  1. modified:对原文件修改
  2. deleted:已提交的版本库的文件被删除
  3. untracked:新添加的文件,未被提交的版本库

二、git命令实操

1.创建版本库

版本库即仓库 repository,可以理解为一个目录,这个目录中的所有文件都被git管理,每个文件的修改、删除git都能跟踪。

创建版本库:

************ MINGW64 /d/git学习 (master)
$ mkdirlearngit
************ MINGW64 /d/git学习 (master)
$ cd learngit
************ MINGW64 /d/git学习/learngit (master)
$ pwd
/d/git学习/learngit

pwd命令为显示当前目录;

2.通过git init命令将该目录变成git管理的仓库

********* MINGW64 /d/git学习/learngit (master)
$ git init
Initialized empty Git repository in D:/git学习/learngit/.git/

3.把文件添加到版本库

首先在learngit文件夹下创建一个readme.txt文件

第一步:使用git add告诉git,把文件添加到仓库

************** MINGW64 /d/git学习/learngit (master)
$ git add Readme.txt

第二步:使用git commit告诉git,把文件提交到仓库 

********** MINGW64 /d/git学习/learngit (master)
$ git commit -m "wrote a readme file"
[master (root-commit) 8d4c750] wrote a readme file
 1 file changed, 1 insertion(+)
 create mode 100644 Readme.txt

注意:git commit命令,-m后面输入的是本次提交的说明,可以是任何内容。

4.查看文件的状态

使用git status命令可以查看文件的状态,加上参数-s可以简要显示当前状态的内容: 

  1. git status -s
********** MINGW64 ~/Desktop/test (master)
$ git status
On branch master
Changes not staged for commit:
  (use "git add ..." to update what will be committed)
  (use "git checkout -- ..." to discard changes in working directory)

modified:   test.txt

no changes added to commit (use "git add" and/or "git commit -a")

************* MINGW64 ~/Desktop/test (master)
$ git status -s
M test.txt

5.将项目push到远程仓库

首先创建一个远程仓库,右击 给git bash,使用git init命令初始化本地git仓库配置;git add . 命令添加工作区代码到暂存区(.代表该文件夹下的所有文件);git commit -m “”命令添加暂存区代码到本地仓库;git remote add origin [远程仓库地址]命令添加远程仓库;在push文件之前先使用git pull origin master命令更新文件;git push -u origin master命令将文件push到远程仓库。

************* MINGW64 /d/projects/workspace
$ git init
Initialized empty Git repository in D:/projects/workspace/.git/

************* MINGW64 /d/projects/workspace (master)
$ git add .      (add . 代表添加文件夹下的所有文件)
************* MINGW64 /d/projects/workspace (master)
$ git commit -m "workspace"
************* MINGW64 /d/projects/workspace (master)
$ git remote add origin https://github.com/K***********
************* MINGW64 /d/projects/workspace (master)
$ git pull origin master
From https://github.com/K************
 * branch            master     -> FETCH_HEAD
Already up to date.
************* MINGW64 /d/projects/workspace (master)
$ git push -u origin master
Enumerating objects: 73, done.
Counting objects: 100% (73/73), done.
Delta compression using up to 6 threads
Compressing objects: 100% (62/62), done.
Writing objects: 100% (73/73), 58.15 KiB | 8.31 MiB/s, done.
Total 73 (delta 34), reused 0 (delta 0)
remote: Resolving deltas: 100% (34/34), done.
To https://github.com/KyleWong123/workspace.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

你可能感兴趣的:(Git学习总结(一))