git常用命令

1. 在Linux上安装Git
ubuntu系统  sudo apt-get install git     通过git --version 查看安装版本
2.创建版本库
(1)选择一个合适的地方,创建一个空目录:
$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit
(2)通过git init命令把这个目录变成Git可以管理的仓库:
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/
如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见
(3)现在我们编写一个readme.txt文件,内容如下
Git is a version control system.
Git is free software.

第一步,用命令git add告诉Git,把文件添加到仓库:
$ git add readme.txt
第二步,用命令git commit告诉Git,把文件提交到仓库
$ git commit -m "wrote a readme file"
为什么Git添加文件需要add,commit一共两步呢?因为commit可以一次提交很多文件,所以你可以多次add不同的文件
3.时光穿梭机
我们继续修改readme.txt文件

运行git status命令看看结果
$ git status         no changes added to commit (use "git add" and/or "git commit -a")

需要用git diff这个命令看看
$ git diff readme.txt 

知道了对readme.txt作了什么修改后,再把它提交到仓库就放心多了,提交修改和提交新文件是一样的两步
第一步是git add
$ git add readme.txt

在执行第二步git commit之前,我们再运行git status看看当前仓库的状态
$ git status

$ git commit -m "add distributed"

版本控制系统肯定有某个命令可以告诉我们历史记录,在Git中,我们用git log命令查看
$ git log

如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数:
$ git log --pretty=oneline

Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

我们要把当前版本“append GPL”回退到上一个版本“add distributed”,就可以使用git reset命令
$ git reset --hard HEAD^

使用cat命令来查看文档内容
$ cat readme.txt

从21世纪坐时光穿梭机来到了19世纪,想再回去已经回不去了,肿么办
只要上面的命令行窗口还没有被关掉,你就可以顺着往上找
$ git reset --hard 3628164    版本号没必要写全,前几位就可以

你回退到了某个版本,关掉了电脑,第二天早上就后悔了,想恢复到新版本怎么办
Git提供了一个命令git reflog用来记录你的每一次命令

现在总结一下:


HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,
使用命令git reset --hard commit_id。


穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。


要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

撤销修改
git checkout -- file可以丢弃工作区的修改
$ git checkout -- readme.txt

git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令

用命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区
$ git reset HEAD readme.txt

命令git rm用于删除一个文件


远程仓库
把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。
$ git push -u origin master

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

小结


要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;


关联后,使用命令git push -u origin master第一次推送master分支的所有内容;


此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;


要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。
$ git clone git@github.com:michaelliao/gitskills.git


Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快

分支管理
我们创建dev分支,然后切换到dev分支:
$ git checkout -b dev
git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:
$ git branch dev
$ git checkout dev

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

我们把dev分支的工作成果合并到master分支上
$ git merge dev
git merge命令用于合并指定分支到当前分支

小结


Git鼓励大量使用分支:


查看分支:git branch


创建分支:git branch <name>


切换分支:git checkout <name>


创建+切换分支:git checkout -b <name>


合并某分支到当前分支:git merge <name>


删除分支:git branch -d <name>

当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。


用git log --graph命令可以看到分支合并图。

合并分支时,加上--no-ff参数就可以用普通模式合并

分支策略


在实际开发中,我们应该按照几个基本原则进行分支管理:


首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。

Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作
$ git stash

小结

修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;


当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。

开发一个新feature,最好新建一个分支;


如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除。


推送分支
$ git push origin master
$ git push origin dev

小结


查看远程库信息,使用git remote -v;


本地新建的分支如果不推送到远程,对其他人就是不可见的;


从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;


在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;


建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;


从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值