Git 命令

感谢大佬:本文引用该大佬文章,点击到原文

基础知识入门点击进入

十分钟入门手册

 Git迁移新仓库并保存历史提交记录

1.Git 和 Svn:分布式VS集中式

   svn是集中式版本管理,效果图如下:

git属于分布式版本管理,效果图如下:

git 的直接版本控制在于自己的主机,它拥有自己的本地仓库,因此他可以在不联网的情况下进行版本控制;对于git来说中央主机的存在只不过是提供一个众所周知的更新地址。但是svn的中央主机就是其工作命脉,在svn中假如中央主机瘫痪了,那么恭喜你今天你可以放假了。。。

2.git强大的分支管理

当你使用svn进行版本控制想进行“后悔”(版本回退)操作的时候是一件很痛苦的事情,你只能通过自己的印象去把代码修改回来;或许这并不能说服你,但是如果你的产品经理叫你修改之后又叫你修改回来呢。。。如果你使用的是git的话你可以很简单的使用它的分支来进行控制,当然有的人还是会说svn也是有分支的,博学的你当然不会有错,只不过svn是通过建立文件夹然后复制来实现的,在大项目的时候这点就有点日狗了。

二.使用命令行(windows)

Git安装完成后,在文件夹目录下点击鼠标右键中出现 Git GUI Here 和 Git Bash Here,点击Git Bash Here出现如下窗口:

三.Git的思想和基本工作原理

Git 和其他版本控制系统的主要差别在于,Git 只关心文件数据的整体是否发生变化,而大多数其他系统则只关心文件内容的具体差异:

Git 并不保存这些前后变化的差异数据。实际上,Git 更像是把变化的文件作快照后,记录在一个微型的文件系统中。每次提交更新时,它会纵览一遍所有文件的指纹信息并对文件作一快照,然后保存一个指向这次快照的索引。为提高性能,若文件没有变化,Git 不会再次保存,而只对上次保存的快照作一链接。Git 的工作方式就如下图所示。

git文件经过了Git工作目录,暂存区域,Git本地仓库三个工作区域,在脑海里一定要有这个概念。

四.Git的简单使用

1.初始化操作

设置签名:

—> 使用 git config --global user.name "Name"         例如:git config  --global user.name "zhangsan"

—>使用 git config --global user.email "Email"    例如:git config -- global user.email "11112222@qq.com" 来配置自己的信息

初始化:

使用 git init 初始化,出现如下效果表示初始化成功,在你的文件夹下会创建一个隐藏的 .git 文件

2.Git本地提交

通过  git  add  .  将该工作目录下的所有文件添加到暂存区,或者使用 git  add  文件名 添加单个文件到暂存区;在此过程中你可以使用  git status

命令来查看当前文件的状态。效果图如下:

通过 git status 在最后一行看到 新建了一个文件 叫test.txt 并且此时文件是绿色的。

通过 git commit -m "firstcommit" 来将暂存区的文件提交到本地仓库,-m 表示注释,后面的内容是注释内容;同样可以使用git  commit  文件名  来提交单个文件;

或:git commit -m "提交说明" --no-nerify (--no-verify 意思是不检测语法直接提交)

在此过程中你可以使用 git status 命令来查看当前文件的状态。效果图如下:

通过 git status 看到 1 file changed,1 insertion(+), 此时文件为白色。

3.远程提交(这里演示提交到github)

第一步:先注册github 账号,添加一个新仓库

第二步:使用 ssh-keygen -t rsa -C"Email" 例如 ssh-keygen -t rsa -C"111222333@qq.com",一路回车,效果如下

然后去它提示的路径编辑id_rsa.pub文件,将文件内容复制下来,在进入github的setting 下的SSH and GPG Key目录下将复制的内容添加中,如图:

第三步:使用 git remote add origin [ssh地址] ,将本地和github进行关联 例如:git remote add origin git@github.com:Venus-Software/android_recyclerview.git (ssh地址从github的clone or download中获取),使用 git push -u origin master 来进行上传:

同样有可能出现如上的问题原因是因为你的github的该目录下和本地的仓库存在冲突,你需要处理,这个使用你应该使用 git pull --rebase origin master  来进行处理,然后重新使用 git push -u origin master

在 github上查看效果如下:

完美提交

4.创建分支

可以使用 git branch [name] 来创建分支,使用 git checkout [name] 来切换分支,当然可以使用git checkout -b [name] 来创建新分支并且切换到该分支。

使用 git branch 来查看分支,使用git merge “注释” 合并的目标分支。

5.后悔操作


Git使用指导

一、创建新仓库

创建新文件夹,打开,然后执行 git init ,以创建新的git仓库。

git init

二、检出仓库

执行如下命令以创建一个本地仓库的克隆版本:

git clone /path/to/repository

如果是远端服务器上的仓库,你的命令会是这个样子:

git clone username@host:/path/to/repository

你的本地仓库由 git 维护的三棵组成。

  1. 第一个是你的 工作目录,它持有实际文件;
  2. 第二个是 暂存区(Index),它像个缓存区域,临时保存你的改动;
  3. 最后是 HEAD,它指向你最后一次提交的结果。

三、添加和提交(idea,webSocket中的快捷键是 Ctrl + K)

你可以提出更改(把它们添加到暂存区),使用如下命令:
git  add  <filename>                :添加一个文件
git  add  *                                :添加所有文件
这是 git 基本工作流程的第一步;

使用如下命令以实际提交改动:
git  commit  -m  "代码提交信息"   (--no-verify  (表示不检测语法直接提交))

现在,你的改动已经提交到了 HEAD,但是还没到你的远端仓库。

四、提交到远端仓库  (idea,webSocket中的快捷键是 Ctrl + Shift + K)

执行如下命令以将这些改动提交到远端仓库:

git  push  origin  master

可以把 master 换成你想要推送的任何分支。

如果你还没有克隆现有仓库,并欲将你的仓库连接到某个远程服务器,你可以使用如下命令添加:

git  remote  add  origin  <server>

如此你就能够将你的改动推送到所添加的服务器上去了。

分支

分支是用来将特性开发绝缘开来的。在你创建仓库的时候,master 默认的分支。在其他分支上进行开发,完成后再将它们合并到主分支上。

创建一个叫做“feature_x”的分支,并切换过去:

git checkout -b feature_x

切换回主分支:

git checkout master

再把新建的分支删掉:

git branch -d feature_x

除非你将分支推送到远端仓库,不然该分支就是 不为他人所见的

git push origin <branch>

更新与合并(idea,webSocket中的快捷键是:Ctrl + T)

要更新你的本地仓库至最新改动,执行:

git pull

以在你的工作目录中 获取(fetch  合并(merge 远端的改动。

要合并其他分支到你的当前分支(例如 master),执行:

git merge <branch>

在这两种情况下,git 都会尝试去自动合并改动。遗憾的是,这可能并非每次都成功,并可能出现冲突(conflicts这时候就需要你修改这些文件来手动合并这些冲突(conflicts)。

改完之后,你需要执行如下命令以将它们标记为合并成功:

git add <filename>

在合并改动之前,你可以使用如下命令预览差异:

git diff <source_branch> <target_branch>

关于查看提交历史记录的命令,有些常用的选项介绍一下:

  • git log [分支名] 查看某分支的提交历史,不写分支名查看当前所在分支
  • git log --oneline 一行显示提交历史
  • git log -n 其中 n 是数字,查看最近 n 个提交
  • git log --author [贡献者名字] 查看指定贡献者的提交记录
  • git log --graph 图示法显示提交历史

Git基础精简版

设置签名:

git  config  --global  user.name  "big old"

git  config  --global  user.email  "1234@..."

git  init ;    // 初始化为git 仓库

git  clone  [远程仓库的地址] ;    // 克隆:将远程库下载到本地 

1、git  add  demo.txt ;    // 添加到暂存区

2、git  commit  -m  "备注说明"  demo.txt ;    // 添加到本地库

 git  push  [远程库地址 / 别名]  [要推送的分支] ;    // 将本地库推送到远程仓库

例如:git  push  remote_repository_address   master ;   

 git  pull  [远程仓库的地址]  [分支] ;    // 拉取远程仓库的最新代码内容  pull = fetch + merge

--查看工作区和暂存区的状态:
git  status

--查看已提交的,显示最近到最远的日志:

git  log

  • 当历史记录过多时,查看日志有分页:

下一页:空格键

上一页:b

退出:q

  • 日志格式化:

git  log  ---pretty=oneline

git  log  --oneline

git  reflog

-- 前进 / 后退历史版本

1、git  reset  --hard  [文件对应索引 id] ;    //  本地库的指针移动的同时,重置暂存区,重置工作区。

2、git  reset  --mixed  [文件对应索引 id] ;   // 本地库指针移动的同时,重置暂存区,工作区不变。

 -- 删除文件

rm  [file_name]

  • rm  test.txt ;   //删除工作区中的test.txt文件
  • git  add  test.txt ;   // 将删除操作同步到暂存区
  • git  commit  -m  "删除文件"  test.txt ;   // 将删除操作同步到本地库

-- 恢复文件

  • git  reset  --hard  [文件对应索引 id] ;   // 恢复文件

-- 文件校对

git  diff  [file_name] ;   // 比较工作区和暂存区的指定文件的差异

git  diff ;   // 比较工作区和暂存区中所有文件的差异

git  diff  [历史版本索引 id]  [file_name]; 或  git  diff  HEAD  [file_name] ;   // 比较暂存区和本地库中的差异

-- 分支

git  branch  -v ;    // 查看分支

git  branch  [分支名] ;   // 创建分支

git  checkout  [分支名] ;   // 切换到分支

-- 合并分支 / 解决冲突 (本地库)

例如: 将分支branch01 合并到 master

  1. git  checkout  [master] ;    // 进入到主分支
  2. git  merge  [branch01] ;    // 合并
  3. 修改文件冲突内容
  4. git  add  [file_name] ;     // 将工作区内容添加到暂存区
  5. git  commit  -m  "解决冲突" ;     // 提交到本地库

-- 别名

git  remote  -v ;     // 查看别名

git  remote  add  [别名]  [远程仓库地址] ;    // 起别名


Git迁移新仓库并保存历史提交记录

 该操作可应用于:从gitee仓库clone开源项目到本地,在本地修改项目并提交到本地仓库,之后保留提交记录上传到gitee(上传到新的仓库中)

第一步,从远程仓库克隆到本地

git clone https://gitee.com/oldxxx/oldxxx.git

 第二步,删除需要迁移的本地项目所关联的远程仓库地址

 git remote remove origin

 第三步,关联新仓库的地址

 git remote add origin https://gitee.com/newxxx/newxxx.git

 第四步,把项目推送到新的远程仓库,如果新仓库是个空项目,执行下面那句

 git push

git push --set-upstream origin master

 第五步,从原仓库地址克隆一份裸版本库

 git clone --bare https://gitee.com/oldxxx/oldxxx.git

 第六步,原仓库所有分支同步新仓库

 git push --mirro https://gitee.com/newxxx/newxxx.git

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值