##一、远程仓库与多人协作

####1、从远程仓库clone项目到本地仓库

​​

注册登陆后,创建新的仓库:

然后 Create repository

在任意位置创建一个git本地仓库

进入本地仓库,右键空白处,选择Git Bash Here(Git 命令行)

然后进行设置:在命令行输入:

$ git config --global user.name “Your Name”

$ git config --global user.email “email@example.com”

因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址

注意git config命令的–global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址

然后使用 git init 命令,将此文件夹变成一个git仓库。

会发现刚才的文件夹内多了个.git 文件夹

如果没有看到.git文件夹,因为它是隐藏的文件夹,可能没有打开查看隐藏的文件夹,在文件夹设置中选择查看隐藏的文件就ok了

接下来我们要将本地仓库和远程仓库进行关联。

$ git remote add origin https://github.com/MZ8023/GitTest.git

接下来我们要把远程仓库(git网站刚才创建的或者别人创建好的)上的项目克隆下来

$ git clone https://github.com/MZ8023/GitTest.git

显示类似如下内容即成功,如若出现fatal;error字样则表示未成功,并会提示你原因。

*小提示:git clone 直接加网址就好(此网址可以在远程仓库中找到)

此时我们查看本地仓库,发现多了一个文件夹,这个文件夹就是远程仓库上的项目总文件夹,进入该文件夹,可以看到所有的文件(本项目目前只有一个README文件)

上面完成了从远程仓库clone项目到本地仓库(一般只有第一次加入项目需要用到这个命令,之后的命令都是进行代码的上传、下载,分支的切换、合并等)

####2、项目的更新及下载

上面我们将项目clone下来后,一般需要在本地继续编写代码,修改项目,我们来做一个模拟:

首先修改我们本地的README文件,并且新建一个test.txt文件,模拟在本地仓库修改了项目。

接下来我们代码写好后,要上传到远程仓库,进行代码的更新同步。

进入到项目根目录

cd GitTest

首先学习一个命令

$ git status

git status命令可以让我们时刻掌握仓库当前的状态,上面的命令输出告诉我们,READEME被修改过了,并且新增了一个test.txt文件,但还没有提交修改。

然后我们正式开始上传

首先第一个命令:

$ git add .

它会把工作时的所有变化提交到暂存区(暂存仓库),包括文件内容修改以及新文件,但不包括被删除的文件。

此时我们查看下状态:

$ git status

提示我们修改了READEME,添加了新的文件,可以提交了

接下来我们需要更新同步到远程仓库

第一步:提交

$ git commit -m “本次提交描述”

该命令会将git add .存入暂存区修改内容提交至本地仓库中,若文件未添加至暂存区,则提交时不会提交任何修改。

此时我们查看下状态:

$ git status

Git告诉我们当前没有需要提交的修改,并且工作区是干净的。

第二步:推到远程仓库

$ git push origin master

其中origin代表的是远程仓库(固定不变),master位置放的是分支的名字,master是主分支。

成功,远程仓库也看到了

=======================================================================

####3、多人合作

牢记四句代码

git pull origin master

git add .

git commit -m “xxx”

git push origin master

当你想上传时 先pull 就是拉下来远程仓库的代码, 然后再提交自己的代码

例如:我们要删除test.txt文件

在本地删除后 进入命令行

四步

远程仓库也没了

##二、分支相关

当你写一个模块的代码的时候,为了避免将其他所有模块打乱,或者误操作对代码造成影响等情况。

分支的代码可以和主分支(master)代码相同,一般是先把主分支代码复制到其他分支,然后在其他分支上进行开发新模块,等到其他分支上的代码模块都没有问题的时候,再合并到主分支中,主分支相当于代码的备份。可以有多个分支,多人同时开发不同的模块。

####1、创建分支

先在本地创建一个名叫 xsx 的分支

$ git branch xsx

然后我们可以查看所有的分支

$ git branch

前面带*的就是你当前所使用的分支,接下来我们切换到xsx分支进行开发

$ git checkout xsx

当前我们就进入了xsx分支,此时我们本地仓库代表的就是xsx分支,然后我们在xsx分支中开发,比如新建个ttt.html文件

然后提交代码到远程仓库

注意一定要推送到xsx分支

可以发现远程仓库中master分支下并没有 ttt.html

切换到xsx分支发现里面含有 ttt.html

当我们在xsx分支编写完此模块所有的代码并测试功能后,我们需要将此分支合并到master主分支中,进行代码整合。

首先切换到 master分支

$ git checkout master

然后将 xsx分支 合并到此时的master分支

$ git merge xsx

合并成功!此时xsx分支的任务完成了,我们可以将其删除,删除分支:

$ git branch -d xsx ------ -d 代表 delete

##三、版本回退与日志查看

####1、日志查看

有的时候我们需要查看下最近都有谁提交了什么,或者忘记自己之前写了什么,去查看下历史提交记录之类的。

$ git log

在这里我们能看到最近提交的信息(时间,message,版本号等),其中commit 后面的就是版本号。

####2、版本回退

当代码一团糟,想要重写的时候,可以使用版本回退,先用git log查看最近提交的版本,找到一个你想回退的版本,复制它的版本号,然后输入命令。

$ git reset --hard 版本号

例如:我们先做几次提交

然后再来一次

修改了 新建文本文档 并没有新增文件的时候 可以简化命令

然后我们查看日志

我们现在想回滚到 新增新建文本文档12 那次

选择右键复制版本号(看准了 版本号在文字的上方)

输入命令

$ git reset --hard 5b252231c16141daf4cb8f41663cd10b08f0db98

在看我们的本地仓库

修改 新建文本文档 已经不见了 内容消失了 完全回到刚刚新建的时候了。

==============================================================

##Git常用命令

git add . # 将所有修改过的工作文件提交暂存区

git rm # 从版本库中删除文件

git reset --hard # 恢复最近一次提交过的状态,即放弃上次提交后的所有本次修改

git diff # 比较当前文件和暂存区文件差异

git diff # 比较两次提交之间的差异

git diff … # 在两个分支之间比较

git log #查看提交统计信息

git log # 查看该文件每次提交记录

git branch -d # 删除某个分支

git branch -D # 强制删除某个分支 (未被合并的分支被删除的时候需要强制)

git branch # 查看本地分支

git branch -r # 查看远程分支

git branch <new_branch> # 创建新的分支

git merge # 将branch分支合并到当前分支

git pull origin master

git stash

git stash pop

git stash list # 列所有stash

git commit -m “xxx”

git push origin master # 将本地主分支推到远程主分支

git remote -v # 查看远程服务器地址和仓库名称

git remote show origin # 查看远程服务器仓库状态

git remote add origin git@ github:robbin/robbin_site.git # 添加远程仓库地址

git remote set-url origin git@ github.com:robbin/robbin_site.git # 设置远程仓库地址(用于修改远程仓库地址)

git remote rm # 删除远程仓库

查看、添加、提交、删除、找回,重置修改文件

git help # 显示command的help

git show # 显示某次提交的内容 git show KaTeX parse error: Expected 'EOF', got '#' at position 21: …t co -- <file> #̲ 抛弃工作区修改 git co…id> # 恢复某次提交的状态,恢复动作本身也创建次提交对象

git revert HEAD # 恢复最后一次提交的状态

查看文件diff

git diff # 比较当前文件和暂存区文件差异 git diff

git diff # 比较两次提交之间的差异

git diff … # 在两个分支之间比较

git diff --staged # 比较暂存区和版本库差异

git diff --cached # 比较暂存区和版本库差异

git diff --stat # 仅仅比较统计信息

查看提交记录

git log git log # 查看该文件每次提交记录

git log -p # 查看每次详细修改内容的diff

git log -p -2 # 查看最近两次详细修改内容的diff

git log --stat #查看提交统计信息

tig

Mac上可以使用tig代替diff和log,brew install tig

Git 本地分支管理

查看、切换、创建和删除分支

git br -r # 查看远程分支

git br <new_branch> # 创建新的分支

git br -v # 查看各个分支最后提交信息

git br --merged # 查看已经被合并到当前分支的分支

git br --no-merged # 查看尚未被合并到当前分支的分支

git co # 切换到某个分支

git co -b <new_branch> # 创建新的分支,并且切换过去

git co -b <new_branch> # 基于branch创建新的new_branch

git co $id # 把某次历史提交记录checkout出来,但无分支信息,切换到其他分支会自动删除

git co $id -b <new_branch> # 把某次历史提交记录checkout出来,创建成一个分支

git br -d # 删除某个分支

git br -D # 强制删除某个分支 (未被合并的分支被删除的时候需要强制)

分支合并和rebase

git merge # 将branch分支合并到当前分支

git merge origin/master --no-ff # 不要Fast-Foward合并,这样可以生成merge提交

git rebase master # 将master rebase到branch,相当于: git co && git rebase master && git co master && git merge

Git补丁管理(方便在多台机器上开发同步时用)

git diff > …/sync.patch # 生成补丁

git apply …/sync.patch # 打补丁

git apply --check …/sync.patch #测试补丁能否成功

Git暂存管理

git stash # 暂存

git stash list # 列所有stash

git stash apply # 恢复暂存的内容

git stash drop # 删除暂存区

Git远程分支管理

git pull # 抓取远程仓库所有分支更新并合并到本地

git pull --no-ff # 抓取远程仓库所有分支更新并合并到本地,不要快进合并

git fetch origin # 抓取远程仓库更新

git merge origin/master # 将远程主分支合并到本地当前分支

git co --track origin/branch # 跟踪某个远程分支创建相应的本地分支

git co -b <local_branch> origin/<remote_branch> # 基于远程分支创建本地分支,功能同上

git push # push所有分支

git push origin master # 将本地主分支推到远程主分支

git push -u origin master # 将本地主分支推到远程(如无远程主分支则创建,用于初始化远程仓库)

git push origin <local_branch> # 创建远程分支, origin是远程仓库名

git push origin <local_branch>:<remote_branch> # 创建远程分支

git push origin :<remote_branch> #先删除本地分支(git br -d ),然后再push删除远程分支

Git远程仓库管理

git remote -v # 查看远程服务器地址和仓库名称

git remote show origin # 查看远程服务器仓库状态

git remote add origin git@ github:robbin/robbin_site.git # 添加远程仓库地址

git remote set-url origin git@ github.com:robbin/robbin_site.git # 设置远程仓库地址(用于修改远程仓库地址)

git remote rm # 删除远程仓库

创建远程仓库

git clone --bare robbin_site robbin_site.git # 用带版本的项目创建纯版本仓库

scp -r my_project.git git@ git.csdn.net:~ # 将纯仓库上传到服务器上

mkdir robbin_site.git && cd robbin_site.git && git --bare init # 在服务器创建纯仓库

git remote add origin git@ github.com:robbin/robbin_site.git # 设置远程仓库地址

git push -u origin master # 客户端首次提交

git push -u origin develop # 首次将本地develop分支提交到远程develop分支,并且track

git remote set-head origin master # 设置远程仓库的HEAD指向master分支

也可以命令设置跟踪远程库和本地库

git branch --set-upstream master origin/master

git branch --set-upstream develop origin/develop


觉得有帮助的小伙伴右上角点个赞~

菜鸟入门级Git简单教程_新手

扫描上方二维码关注我的订阅号~