美文网首页
任务2-Git常用命令

任务2-Git常用命令

作者: 大胡子歌歌 | 来源:发表于2016-12-31 16:49 被阅读0次

本文基于廖雪峰Git 教程摘录,供自己学习使用,只简述了基本操作,高级操作以后再更新。

本地仓库操作

配置用户信息
git config --global user.name "username"
git config --global user.email "email"
初始化一个Git仓库,使用git init命令。(谨慎使用,只有新建本地库时会用到。)

使用命令 ** git add <file>,将修改的文件添加的暂存区,可反复多次使用,后面写多个文件名,可使用git add . **添加所有文件。

使用命令git commit,添加到本地仓库。
** git commit -a 表示将所有修改和删除的文件放入暂存区,并commit,但新建文件不受影响。相当于执行了git add .(排除新建文件) +git commit**。
** git commit -m "xxx" ** xxx是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

git status命令可以让我们时刻掌握仓库当前的状态。
git diff xx.xx 可查看xx.xx文件修改了什么内容。

版本回退

**git log **命令查看历史版本,每次commit的描述信息及时间和版本ID会列出。
Git 用HEAD表示当前版本,上一个版本就是HEAD,上上一个版本就是HEAD,当然往上100个版本写100个比较容易数不过来,所以写成HEAD~100。
回到某个版本有两种方法
**git reset --hard HEAD^ ** 表示返回当前版本的上个版本。
**git reset --hard commitID ** 指向commitID对应的版本。

如果回退到了某旧个版本,关掉了电脑,第二天早上就后悔了,想恢复到新版本怎么办?找不到新版本的commit id怎么办?
Git提供了一个命令git reflog用来记录你的每一次命令,可根据命令历史记录找到新版本的commit id。

撤消修改

命令git checkout -- filename意思就是,git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。这里有两种情况:

一种是filename自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是filename已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commitgit add时的状态。

如果已经把修改后的文件git mommit到了暂存区,就要用命令git reset HEAD filename把暂存区的修改撤销掉(unstage),重新放回工作区。

删除文件

用** git rm **来删除文件,同时还会将这个删除操作记录下来;
用 rm 来删除文件,仅仅是删除了物理文件,没有将其从 git 的记录中剔除。

直观的来讲,git rm 删除过的文件,执行** git commit -m "abc" **提交时,会自动将删除该文件的操作提交上去。

而对于用 rm 命令直接删除的文件,执行** git commit -m "abc" 提交时,
则不会将删除该文件的操作提交上去。
不过不要紧,即使你已经通过 rm 将某个文件删除掉了,
也可以再通过
git rm 命令重新将该文件从 git 的记录中删除掉,
这样的话,在执行
git commit -m "abc" **以后,也能将这个删除操作提交上去。

如果之前不小心用 rm 命令删除了一大批文件呢?
是的,此时用** git rm 逐个地再删除一次就显得相当蛋疼了。
所幸还有更方便的处理方案,用如下的方式做提交就没有问题了:
git commit -am "abc"
所以在在被 git 管理的目录中删除文件时,可以选择如下两种方式来记录删除动作:
一、
rm + git commit -am "abc"**
二、git rm + git commit -m "abc"
另外,git add . 仅能记录添加、改动的动作,删除的动作需靠 git rm来完成。

远程仓库

第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash)。
创建SSH Key:** ssh-keygen -t rsa -C "youremail@example.com"**

你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。
如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:
然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub
文件的内容。点“Add Key”,你就应该看到已经添加的Key。

GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。

推送远程

在Git新建一个仓库,比如名字叫blog.
在本地的仓库下运行命令:
** git remote add origin git@github.com:我的用户名/blog.git**
添加后,远程库的名字就是origin,这是Git默认的叫法。
下一步,就可以把本地库的所有内容推送到远程库上:
** git push -u origin master**
把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
从现在起,只要本地作了提交,就可以通过命令:
** git push origin master**

从远程库克隆

现在,假设我们从零开发,那么最好的方式是先创建远程库,然后,从远程库克隆。

首先,登陆GitHub,创建一个新的仓库,名字叫blog,我们勾选Initialize this repository with a README,这样GitHub会自动为我们创建一个README.md文件。

现在,远程库已经准备好了,下一步是用命令git clone克隆一个本地库:
** git clone git@github.com:我的用户名/blog.git**

注意把Git库的地址换成你自己的,然后进入blog目录看看,已经有README.md文件了。

操作分支

创建dev分支,然后切换到dev分支:
** git checkout -b dev**

git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:
** git branch dev**
** git checkout dev**

然后,用git branch命令查看当前分支:
$ git branch
* dev
master
git branch命令会列出所有分支,当前分支前面会标一个*号。

然后,我们就可以在dev分支上正常修改提交。
dev分支的工作完成,我们就可以切换回master分支:
** git checkout master**
切换回master分支后,再查看修改的文件,刚才修改的内容不见了!因为那个提交是在dev分支上,而master分支此刻的提交点并没有变。

现在,我们把dev分支的工作成果合并到master分支上:
** git merge dev**
git merge命令用于合并指定分支到当前分支。合并后,再查看修改的内容,就可以看到,和dev分支的最新提交是完全一样的。

合并完成后,就可以放心地删除dev分支了:
** git branch -d dev**

删除后,查看branch,就只剩下master分支了:
** git branch**
* master

因为创建、合并和删除分支非常快,所以Git鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。

查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>

分支策略

在实际开发中,我们应该按照几个基本原则进行分支管理:
首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。
所以,团队合作的分支看起来就像这样:


git-br-policy

相关文章

  • 任务2-Git常用命令

    本文基于廖雪峰Git 教程摘录,供自己学习使用,只简述了基本操作,高级操作以后再更新。 本地仓库操作 配置用户信息...

  • MySql 常用命令

    常用命令 当前mysql任务列表 max_allowed_packet 限制

  • 项目合并踩得坑

    遇到这个任务 请务必静下心 遇到这个任务 请务必静下心 遇到这个任务 请务必静下心 先介绍几条常用命令,命令行查看...

  • 2021-07-22

    常用命令 看文件大小 du -h --max-depth=1 定时任务:*/1 * * * * cp -r /ho...

  • 其他

    Git常用命令mac常用命令Linux 常用命令汇总Linux 常用命令0Linux 常用命令1--ls命令

  • Linux进程与资源管理

    Linux最棒的地方在于它的多用户多任务环境,记录下多用户多任务相关的几个常用命令。 前后台进程及切换 有时候我们...

  • Docker

    目录 常用命令 常用命令

  • Linux 定时任务-crontab

    1.涉及到的常用命令 2.编辑定时任务规范编辑定时任务主要分成 6 项:具体代表的含义如下图: 3.实例如下(ps...

  • Linux CentOS基础知识和常用命令

    常用命令1 常用命令2 常用命令3 常用命令4 Linux 目录配置 1、根目录(/)根目录(/)所在分区应该越小...

  • 1.Linux操作系统基础

    1.Linux基础 操作系统:OS Linux是多任务多用户的操作系统. Linux常用命令: 命令框字体调整--...

网友评论

      本文标题:任务2-Git常用命令

      本文链接:https://www.haomeiwen.com/subject/qdavvttx.html