基本命令

git init ---把当前目录变成git可以管理的仓库
git add <file> ---把文件添加到仓库
git add --all  ---把当前目录所有内容添加到仓库
git commit -m <message>  ---把文件提交到仓库
git status  ---输出当前掌握的仓库状态
git diff <file>   ---输出当前改文件与已提交的文件的对比
git log  ---输出commit历史记录
git log --pretty=oneline  ---输出commit历史记录精简版
git log --graph          ---命令可以看到分支合并图。
git reset --hard HEAD^   ---回滚上一个版本,如果想回滚上上版本,需要使用HEAD^^,以此类推
git reset --hard <commit id> ---回滚到某一个版本,需要commit id
git reflog        ---记录了你的每一次命令
git checkout -- <file>   ---让这个文件回到最近一次git commit或git add时的状态
git rm <file>       ---用于删除一个文件
git rebase            ---将多次commit合并为一个

远程控制

git init
git add --all
git commit -m "first commit"
git remote add origin https://github.com/AJDecade/xxx.git
git push -u origin master

分支管理

git branch <name>  ----创建分支
git checkout <name>  ----切换分支
git branch       ----git branch命令会列出所有分支,当前分支前面会标一个*号。
git merge <name>    ----合并分支,与master分支合并
git merge --no-ff -m <message> <name>     ----这样分支历史上就可以看出分支信息
git branch -d <name>    ----删除分支

基本的工作模型

首先看三个基本概念:

  1. 工作区: 代码存储的目录就是工作区。
  2. 版本库: 工作区有一个隐藏目录.git,这个不算工作区,而是Git的本地版本库,你的所有版本信息都会存在这里
  3. 暂存区: 英文为 stack 或 index,用来暂时存放修改过的文件。一般存放在 ".git目录下" 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)

0.jpg
1.jpg
2.jpg

团队工作的基本模型

  1. 首先,可以试图用 git push origin <branch-name> 推送自己的修改;
  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用 git pull 试图合并;
  3. 如果合并有冲突,则解决冲突,并在本地提交;
  4. 没有冲突或者解决掉冲突后,再用 git push origin <branch-name> 推送就能成功!

一些命令的使用笔记

git rebase

一个 repo 通常是由一个 team 中的多个人共同维护,如果需要增加新 feature ,那么就是一个 feature 分支了。由于开发中各种修改,对 feature 分支进行了多次 commit 。最后提交 master 后,会看到乱七八糟的所有增量修改历史。其实对别人来说,我们的改动应该就是增加或者删除,给别人看开发过程的增量反而太乱。于是我们可以将 feature 分支的提交合并后然后再 merge 到主干这样看起来就清爽多了。

rebase 简介

git rebase 的作用就是将多个 commit 合并为一个,这样就使得我们的提交历史变得干净,简洁。

不要通过rebase对任何已经提交到公共仓库中的commit进行修改!

rebase 具体操作

现在假设我们已经开发完了一个功能,但是在本地仓库的记录中有多次提交。在我们把本地提交push到公共仓库中之前,为了让提交记录更简洁明了,我们希望把最后三次提交合并为一个提交,然后再push到公共仓库。

这里我们使用命令:

git rebase -i  [startpoint]  [endpoint]

其中-i的意思是--interactive,即弹出交互式的界面让用户编辑完成合并操作,[startpoint] [endpoint]则指定了一个编辑区间,如果不指定[endpoint],则该区间的终点默认是当前分支HEAD所指向的 commit (P.S. 该区间指定的是一个前开后闭的区间)。 在查看到了log日志后,我们运行以下命令:

git rebase -i e88dbd1

或者

git rebase -i HEAD~3 

然后我们会看到如下界面:

rebase.png

(因为截图时我的 PHPStorm 的 shell 似乎中文编码出了点问题,所以出现了乱码)

上面未被注释的部分列出的是我们本次rebase操作包含的所有提交,下面注释部分是git为我们提供的命令说明。每一个commit id 前面的pick表示指令类型,git 为我们提供了以下几个命令:

pick:保留该commit(缩写:p)

reword:保留该commit,但我需要修改该commit的注释(缩写:r)

edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)

squash:将该commit和前一个commit合并(缩写:s)

fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f)

exec:执行shell命令(缩写:x)

drop:我要丢弃该commit(缩写:d)

根据我们的需求,我们可以将其更改为:

pick 3b53eee □□^}□□^d□^h^w表临□^w□□□^`□^t□□□^d□^p^f□^j^=□^c□
s 0d58be6 □□^}□□^d□^h^w表□□^x□^l^v
s deea7a1 □^i□□^g^o导□^e□□□^}□□^d记□□^u

意思就是将第二次和第三次的提交都合并到第一次的提交上去。

后面就是注释修改界面,直接修改就可以了。

撤销 rebase

如果不小心填错了合并文件,我们可以通过 git rebase --abort 来撤销我们的 rebase。

Referrer

https://wulidecade.cn/2019/08/09/Git%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/

https://www.jianshu.com/p/4a8f4af4e803

最后修改:2019 年 11 月 18 日
如果觉得我的文章对你有用,请随意赞赏