git 的基本命令(手把手)

写在前面: 为什么要使用GIT?

 

《Git权威指南》给出了答案

● 异地协同工作
 
● 现场版本控制
 
● 重写提交说明
 
● 无尽的后悔药
 
● 更好用的提交列表
 
● 更好的差异比较
 
● 工作进度保存
 
● 作为SVN前端实现移动办公
 
● 无处不在的分页器
 
● 快

一.安装与配置

以Ubuntu为例。安装只需在命令行输入:

sudo apt-get install git

安装完成后进行git配置,

输入指令git config --global user.name "xxx"

git config --global user.email "你的邮箱地址"

这里还需要配置SSH(它的好处是你每次提交都不需要输入用户名和密码。安全性也更高)

1.在命令行输入:



ssh-keygen -t rsa -C "GitHub注册时的邮箱"

2、进入.ssh目录,复制 id_rsa.pub 内容到 github-->SSH and GPG keys 上面。

//在命令行进入.ssh目录
 ~/.ssh
//获取 id_rsa.pub
cat  id_rsa.pub

 复制到github-->SSH and GPG keys 即可。

3、配置完成以后 测试ssh key是否成功,使用命令ssh -T git@github.com。验证是否成功。

出现下图即为成功。

二.创建repository

创建一个自己的版本库。这个版本库可以理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的增删查改,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻还可以将文件还原。

怎么创建呢?

mkdir testgit   //创建一个目录

 再通过

git init 

将这个目录变成可以被git管理的仓库。

最后在刚创建的目录下通过

git clone 你的仓库地址(类似git@github.com:chenzhenxxx/czx_first.git)

将你github上克隆一个本地库到你电脑。

三. 怎么将代码上传到GitHub上。

     1.git add

 首先我们先在当前目录下新建一个 1.txt  内容为:1234

git add 1.txt

将修改的1.txt.放入缓存区

    如果要将所有修改的文件都放入缓存区

git add .

  2.git  commit -m "注释”

  

git commit -m "注释” 

用命令 git commit告诉Git,把文件提交到仓库(本地的仓库)。

3. git status

提交以后,可通过

git status

查看是否还有文件未提交。

4. git diff

 如果在git status 命令后文件未提交但被修改,可通过

git diff 1.txt(自己的文件名)

查看具体差异。

5.git push

最后通过

git push

将本地代码上传到 之前GitHub克隆的仓库中。

四.版本回退

我们先增加几行数字在1.txt中。

那么我现在想查看下历史记录,如何查看呢?

git log

1.)通过git log 显示从最近到最远的显示日志.

  如果觉得麻烦,可以通过

 git log –-pretty=oneline

简化。

2.)现在我想回退版本怎么办呢?有两种方法:

      1  git reset --hard HEAD^

即可回退到上个版本,

要想回退到上上个版本通过 git reset --hard HEAD^^ .

但想要回退到前100个版本那不得累死?非也。

可通过:

    

git reset --hard HEAD~100

      2.git reset --hard 加你想要回退的版本号

但是假如我已经关掉过一次命令行或者版本号我并不知道呢?要如何知道你想回退的版本号呢?可以通过如下命令即可获取到版本号:

git reflog

五.了解工作区和版本库的区别。

工作区:就是你在电脑上看到的目录,比如目录下testgit里的文件(.git隐藏目录版本库除外)。

 版本库(Repository)工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。其中版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有Git为我们自动创建了第一个分支master(),以及指向master的一个指针HEAD。

我们前面说过使用Git提交文件到版本库有两步:

  第一步:是使用 git add 把文件添加进去,实际上就是把文件添加到暂存区。

  第二步:使用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支上。

六.撤销修改   and   删除文件

想恢复以前的版本,现在我可以有如下几种方法可以做修改:

第一:如果我知道要删掉那些内容的话,直接手动更改去掉那些需要的文件,然后add添加到暂存区,最后commit掉。(最low的哈哈)

第二:我可以按以前的方法直接恢复到上一个版本。使用 git reset  --hard HEAD^(可看三.回退版本)

但除了以上两种方法,能否直接使用撤销命令?

  git checkout --1.txt

意思就是,把1.txt文件在工作区做的修改全部撤销,这里有2种情况,如下:

  1. 1.txt自动修改后,还没有放到暂存区,使用 撤销修改就回到和版本库一模一样的状态。
  2. 另外一种是1.txt已经放入暂存区了,接着又作了修改,撤销修改就回到添加暂存区后的状态.

总而言之,就是回到离修改前最近的时候。

     删除文件:

   1.  在文件目录中把文件删除或者使用 rm 1.txt的命令将文件删除。

    2.再执行git commit 。

 假如误删了某文件(在未通过commit之前),可通过

git checkout -- 1.txt

恢复。

  七  合并与创建分支。

使用 git 不得不碰到 分支,深入细致的了解branch有助于我们更加深入地掌握git 。

在Git里,主分支叫master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。

   首先,我们来创建dev分支,然后切换到dev分支上。

   

git checkout -b dev  //创建并切换至新的分支

或者相当于

git branch dev //创建新的分支
git checkout dev //切换至dev分支

两条命令。

   可通过git branch 查看分支。

git branch

注意(在一个分支 上修改的内容并不会在其他分支查看)

 这里引用涂根华大佬https://www.cnblogs.com/tugenhua0707/p/4050072.html的两张图。

如何想要在master主分支获取dev分支的内容,可通过(要先切换至主分支):

git merge 被合并的分支名

   要删除 一个分支可通过:

git branch -d 分支名

若在合并过程中出现冲突(即在两分支中都对同一个文件做了不同的修改并提交):

1.首先我们查看状态 git status

 Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,

其中<<<HEAD是指主分支修改的内容.

>>>>>fenzhi1 是指fenzhi1上修改的内容.

  2.在其中一个分支修改内容修改和主干代码一样后提交再合并即可。

如果想具体查看合并过程可通过:

git log

3.分支管理策略。

      通常合并分支时,git一般使用”Fast forward”模式,在这种模式下,删除分支后,会丢掉分支信息,现在我们来使用带参数 –no-ff来禁用”Fast forward”模式。

  

git merge --no-ff -m "注释" 被合并的分支名

  分支策略:master主分支是非常稳定的,也就是用来发布新版本,一般情况下不允许在上面进行操作,进行操作一般情况下在新建的分支上干活,干完后,比如上要发布,或者说分支代码稳定后可以合并到主分支master上来。

八 Bug分支

    在开发中,会经常碰到bug问题需要修复,每个bug都可以通过一个临时分支来修复,修复完成后,合并分支,然后将临时的分支删除掉。

在开发中,假如我们碰到了BUG要修复,可是我们分支上的任务还没完成,我们又该如何实现BUG的修复呢?

   git 提供了stash 可以使当前的工作区被隐藏起来。

  

git stash

  确定需要修复的分支,并在分支下新建bug分支

  修改完成,切换分支,合并bug分支,并删除BUG分支。

 可先切换回工作的分支时,我们发现我们之前的工作区是干净的,我们该如何查看之前被stash隐藏的工作区呢?

git stash list

可查看。

可又如何恢复呢?

   有两种方法:

git stash apply //恢复后,stash内容并不删除,你需要使用命令git stash drop来删除。
git stash pop //恢复的同时把stash内容也删除。

   九 多人协作

  1. 查看远程库的信息 使用 git remote
  2. 查看远程库的详细信息 使用 git remote –v

 

远程仓库默认是origin.

git push origin master  //将分支推送到GitHub
git pull origin dev  // 从github 上拉取

十. 另外

  合并除了merge外,还可通过rebase

 与 merge不同,。Rebase 实际上就是取出一系列的提交记录,“复制”它们,然后在另外一个地方逐个的放下去。

  步骤大概是:

  • 新建并切换到 dev 分支
  • commit 一次
  • 切换回 main 分支再提交一次
  • 再次切换到dev 分支,rebase 到 main 上
  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值