git常用操作 (读廖雪峰git笔记)

1.环境搭建(linux,windows 请自行百度):

搭建成功后,通过 git --version 查看git 版本


2.git 配置:

用户名     git config --global user.name “username”

邮箱         git config --global user.eamil "[email protected]"

编辑器     git config --global core.editor vim

颜色        git config --global color.ui true

别名       git config --global alias.st status
              git config --global alias.co checkout
              git config --global alias.ci commit
              git config --global alias.br branch

              git config --global alias.unstage 'reset HEAD'

             git config --global alias.last 'log -1'

             git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%C(bold blue)<%an>%Creset' --abbrev-commit"

其他等等......

git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置


忽略特殊文件: 创建.gitignore文件,添加添加不想加入git管理中的文件名(带项目工程路径)

忽略文件的原则是:
1).忽略操作系统自动生成的文件,比如缩略图等;
2).忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
3). 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。
最后一步就是把.gitignore也提交到Git,就完成了!当然检验.gitignore的标准是 git status命令是不是说“working directory clean”。

所有配置文件可以直接在线浏览:https://github.com/github/gitignore


3.概念:

工作区:在电脑里能看到的目录

暂存区stage(或者叫index):add操作后的修改存放位置

版本库:工作区有一个隐藏目录“.git”,这个不算工作区,而是Git的版本库。


HEAD:表示当前版本,也就是当前分支的最新的提交

上一个版本就是HEAD^,上上一个版本就是HEAD^^,
当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。


4.常用操作:

git add filename1 filename2

git add .

git commit

git commit -m "comment"

git checkout -- file  丢弃file 最近一次的add修改(没有--就是切换分支的命令了)

git rm test.txt

git init   初始化仓库,生成.git目录

git log -2  查看最近两次提交记录

git log --pretty=oneline

git log --graph

git diff

git diff HEAD --  file   查看工作区和版本库里面最新版本的区别

git reset --hard commitID  回到commitID  前的版本


git reflog   记录每次git操作命令

使用git reset --hard commitID之后,再想恢复到原先的提交的话,只要找到对应的commitID,可以通过git reset --hard commitID 回到对应的版本


git stash    本地代码不成熟,暂时不打算提交,又需要在这部分修改之前的代码基础上做其他事,可以先将这部分修改储存起来,将来继续做这部分修改的时候再取出来

git stash list    查看目前被存储起来的修改项列表


git stash pop   从储存列表的最顶部一次记录恢复,但是最顶部的一次存储记录会被删除

git stash apply    从储存列表的最顶部一次记录恢复,但是最顶部的一次存储记录依然保存

git stash drop   删除最顶部的一次存储记录


5.生成公钥和秘钥(创建SSH Key):

生成home目录下.ssh目录下的公钥和秘钥

$ ssh-keygen -t rsa -C "[email protected]"

生成id_rsa和id_rsa.pub这两个文件,其中id_rsa.pub是公钥,id_rsa是秘钥


6.分支:

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

相当于以下两条命令:
git branch dev
git checkout dev

git merge dev  在当前分支合并dev分支的提交

git branch -d dev   删除分支

git branch -D dev  强制删除分支

通常,合并分支支时,如果可能,Git会用“Fast forward”模式,但这种模式下,删除分支后,会丢掉分支信息。

git branch -vv 查看分支具体信息(包括与远程分支的关系)
git merge --no-ff -m "merge with no-ff" other-branch-name     合并分支时,加上 --no-ff 参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

git branch -a   查看所有分支

git push origin master   推送分支,master为本地分支,origin为远程分支的简称(origin为git remote add的时候指定)

git pull   将远程分支代码拉下来并合入本地分支

git checkout -b dev origin/dev     创建本地分支dev,并关联远程分支origin/dev   (origin为git remote add的时候指定)

git branch --set-upstream dev origin/dev    设置本地分支dev关联远程分支origin/dev 


7.分支注意点:

master分支:稳定分支,发布使用

dev,feature分支: 添加新功能,新特性,在测试稳定后,合入到master分支


当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin。

.git/config 文件部分内容如下:  cat .git/config

[branch "master"]
remote = origin
merge = refs/heads/master


8.远程仓库:

git remote add remote_depository_shortName https://github.com/xxxxx/learngit.git    添加远程仓库(以个人github为例),remote_depository_shortName 如origin

git remote   查看远程分支

git remote -r   查看远程分支

git remote -v 显示更详细的信息,如果没有推送权限,就看不到push的地址。

git clone https://github.com/xxxxx/gitskills.git   从远程库克隆, Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。


9.标签管理:

git tag v1.0    在本地commitID基础上创建tag,取名v1,0

git tag   查看所有tag,标签不是按时间顺序列出,而是按字母排序的。

git show tagname 查看标签信息:(即tag对应commitID的信息)


git tag v2.0 commitID  在源码对应的commitID提交基础上创建tag 

git tag -d v1.0   删除标签


git tag -a 1.0 -m "version 0.1 released" commitID    创建带有说明的标签,用-a指定标签名,-m指定说明


git push origin v1.0    推送某个标签v1.0到远程origin

git push origin --tags   一次性推送全部尚未推送到远程的本地标签:


删除远程标签:(1)  git tag -d v1.0  从本地删除 (2) git push origin :refs/tags/v1.0  从远程删除  


10.github使用:

(1)注册

(2)添加本地公钥到github的ssh key中

(3)创建项目,开始工作

fork其他人的项目到自己的github中,然后从自己的github上clone代码,那么客户端就可以推送代码到github上了

(4)如果你希望类似bootstrap的官方库能接受你的修改,你就可以在GitHub上发起一个pull request。当然,对方是否接受你的pull request就不一定了。


11.搭建自己的git服务器:

(1)linux机器, 如ubuntu,debian系统
(2)安装git:    $ sudo apt-get install git
(3)创建一个git用户,用来运行git服务:    $ sudo adduser git
(4)创建证书登录:    收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里里,一行一个。
(5)初始化Git仓库:   选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令:
$ sudo git init --bare sample.git
把owner改为git:   $ sudo chown -R git:git sample.git
(6)禁用shell登录:  出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。
找到类似下面的一行:
git:x:1001:1001:,,,:/home/git:/bin/bash
改为:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
(7)克隆远程仓库:
$ git clone git@server:/srv/sample.git
(8)管理公钥:可以用Gitosis来管理公钥。
(9)管理权限:Git也继承了开源社区的精神,不支持权限控制。
因为Git支持钩子(hook),所以, 可以在服务器端编写一系列脚本来控制提交等操作,达到权限控制的目的。Gitolite就是这个工具。

猜你喜欢

转载自blog.csdn.net/u012989337/article/details/74012489