git安装
git安装很简单,可以直接命令安装,但是我喜欢源码安装。
直接下载git源码,解压git压缩包,进入压缩包,./configure --prefix=pwd & make & make install。
配置git
git config --global user.name "名字" 配置名字,告诉git你是谁
$ git config --global user.email "邮箱" 设置你的邮箱
初始化git仓库 git init
初始化了一个空git,并且目录下面有一个.git目录。
我们平时写git checkout\git commit\git status等等,是不是很麻烦,我们可以配置别名。在根目录下面新建.gitconfig写入,例如:st = status
后面我就可以使用git st,git co等。
git的基本操作
首先在目录下面新建一个文件test.txt
查看文件git st,看到test.txt文件。在那个分支,commit状态等。
然后git add ./git ci -m '注释'
已经提交并且生成了标识,这个后面再讲。
如果我们连接了远程仓库git pull拉取远程仓库新添加文件,git push origin branch提交本地提交。
我们来看看git add的命令
新建test2.txt,文件,我们可以看到两个修改的文件,一个新增文件。
现在我们删除一个文件,rm -rf text.txt。
git add .和git add -A(因为现在基本都是新版本,命令效果是一样的)监控工作区的状态,把工作时的所有变化提交到暂存区。包括文件内容修改(modified)以及新文件(new)。
git add -u (git add -update 的缩写)仅监控已经被add的文件(即tracked file),将被修改的文件提交到暂存区。不会提交新文件(untracked file)。
可以看到新增的test2.txt文件没有没监控和提交。
git add file file1 …… 也可以单独提交一个文件,或者多个文件
如果add之后发现不想提交了怎么办?
每次我们add后有段文字提示 (use "git reset HEAD ……" to unstage)
直接git reset HEAD file恢复add之前的状态
git commit命令
git commit -m 'message' 最常用的提交命令。
git commit -a -m 'message' 加-a参数可以将所有已跟踪文件中的执行修改或删除操作的文件都提交到本地仓库,即使它们没有经过git add添加到暂存区;注意,新加的文件(既没有被git系统管理的文件)是不能被提交到本地仓库的。建议一般不要使用-a参数,正常的提交还是使用git add先将要改动的文件添加到暂存区,再用git commit 提交到本地版本库。
git commit -amend 追加提交,它可以在不增加一个新的commit-id的情况下将新修改的代码追加到前一次的commit-id中。
git pull命令
git pull 从远程主机名拉取分支并合并到本地。
git pull : 从远程主机名拉取分支合并到本地指定的分支名
git pull --rebase 如果有冲突, 解决冲突git add . 不需要commit,git rebase --continue,git push 到远端。这个命令会让git分支树更好看。
git fetch命令
git fetch 从远程主机拉取最新的分支名到本地,不会自动合并。
git diff 查看分支有什么不同
git merge 合并到本地
感觉有点啰嗦了,直接看最重要的。
git log应用
git log 查看commit提交的历史数据,git log默认会输出commit hash, author, date, commit message。
1、--oneline 这个命令简化git log的默认的输出,仅仅输出commit hash 前7个字符串和commit message.
2、--stat 是在git log 的基础上输出文件增删改的统计数据。
3、-p/show 控制输出每个commit具体修改的内容,输出的形式以diff的形式给出。
4、git shortlog 这个命令用来输出汇总信息,以作者进行分类。
git shortlog -s 可以用来统计每个作者的commit数量
git shortlog -n 可以用来对统计的量进行倒序排列
5、git log --pretty="%cn committed %h on %cd 自定义输出信息
6、--author 指定作者输出 git log --author="name"
git log -2 输出最新两条history信息
7、限定指定日期范围的log git log --after '09-1-2019'
8、--decorate 该参数用来控制log输出时,显示对应commit所属的branch和tag信息
git log --decorate --oneline