本地仓库:
1:安装Git:sudo apt-get install git
2:把当前目录变成Git可以管理的仓库:git init
注意:不可手动修改.git目录下的文件,这个目录默认隐藏, .git是Git的版本库
3:告诉Git要添加文件到暂存区:git add 文件名(如果文件名是.则表示把当前目录下所有修改的文件全部提交)
4:提交文件到仓库:git commit -m “提交注释”,实际上就是把暂存区的所有内容提交到当前分支
注意:注释最好是有意义的,而且是必须的
5:查看工作区当前状态:git status
6:查看具体修改的内容:git diff
7:查看所有的提交日志:git log 时间默认从近到远
8:把一次提交的日志显示在一行:git log –pretty=oneline
9:回退版本:git reset –hard commit_id/HEAD(HEAD表示当前版本,HEAD^表示上个版本,HEAD^^表示上上个版本,以此类推)
10:查看之前执行过的命令:git reflog
11:git checkout – readme.txt,把readme.txt文件在工作区的修改全部撤销,有两种情况:
一:readme.txt修改后没有放入暂存区,这个情况下,撤销修改就回到和版本库一模一样的状态
二:readme.txt修改后已经放入暂存区,这个情况下,撤销修改就回到添加到暂存区后的状态
注意:git checkout – file 命令中的–很重要,如果没有–,就变成了切换到另一个分支的命令
12:删除文件:
情况一:
如果的确要从版本库中删除该文件,执行git rm和git commit即可。
情况二:
如果执行rm命令后,发现文件删除错误,执行git checkout – file把误删的文件恢复到最新版本
远程仓库:
1:在https://www.github.com官网申请账号和密码
2:创建SSH Key,执行命令ls ~/.ssh -al ,查看这个目录下有没有id_rse和id_rsa.pub这两个文件。
如果没有执行cd ~/.ssh, ssh-keygen -t rsa -C ‘邮件地址(建议是github的用户名)’
3:回车后,不用设置其他,可以一路回车,执行成功后,在~/.ssh中会自动创建两个文件:id_rsa和id_rsa.pub,
这两个文件时SSH Key的密钥对,
id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以告诉其他人
4:登录github网址,创建项目具体工程见:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013752340242354807e192f02a44359908df8a5643103a000
5:git init初始化本地仓库
6:git remote add origin git@github.com:892966404@qq.com/项目地址.git
注意:origin是远程库的名字
7:把本地库的所有内容推送到远程库i上:git push -u orgin master,由于远程库是空的,我们第一次推送master分支时,
加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master
分支关联起来,在以后的推送或者拉取时就可以简化命令。
8:从现在开始,只要本地提交,就可以通过命令:git push origin master
9:克隆版本库:git clone “git上的项目地址”
10:创建并切换新分支:git checkout -b ,创建分支:git branch
11:查看当前分支:git branch,此命令会显示所有分支,但是当前分支前会标一个*
12:切换分支:git checkout
13:合并指定分支到当前分支:git merge ,例如把dev分支合并到master分支上:git merge dev
14:删除分支:git branch -d dev
15:查看分支合并日志:git log –graph
16:禁用快速合并模式:git merge –no-ff -m “描述”
–no-ff表示禁用fast forward
17:暂时保存工作区:git stash
运用场景:项目做到一半时,有bug急需解决,保存当前工作区状态
18:查看暂存工作区保存的位置:git stash list
19:恢复工作区,有两种方式
方式一:使用git stash apply [id]恢复,但是恢复后,不删除stash内容,如果要删除需要用
git stash drop来删除
方式二:使用git stash pop,恢复的同时把stash内容删除
20:强行删除没有被合并过的分支:git branch -D
21:查看远程仓库信息:git remote [-v]
22:抓取文件:git pull
23:在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程
分支的名称最好一致
24:建立本地分支和远程分支的关联:git branch –set-upstream branch-name origin/branch-name
25:创建标签:git tag
26:查看所有标签:git tag
27:查看标签信息:git show
28:给历史commit打标签:
首先找到待打标签的commit_id: git log –pretty=oneline –abbrev-commit
然后使用:git tag 版本号 commit_id
29:创建带有说明的标签:git tag -a 版本号 -m 描述 commit_id
注意:-a是指定标签名, -m是指定说明文字
30:把标签推送到远程仓库:git push origin
31:删除本地标签:git tag -d 版本号
注意:创建的标签都只存储在本地,不会自动推送到远程,所以打错的标签可以在本地安全删除
31:一次性全部推送尚未推送到远程仓库的本地标签:git push origin –tags
32:删除远程标签分为两步:
第一步先删除本地标签:git tag -d 标签名
第二部再删除远程标签:git push origin :refs/tags/
33:删除本地库到远程库的链接:git remote rm origin
34:配置git显示颜色:git config –global color.ui true
在Ubuntu中搭建Git服务器
第一步:安装git:sudo apt-get install git
第二步:创建一个git用户,用来运行git服务:sudo adduser git
第三步:创建证书登录,手机所有需要登录的用户公钥,也就是其他用户的id_rsa.pub文件,
把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个
第四步:初始化Git仓库:
首先选中一个目录作为Git仓库,假如说/srv/sample.git,在/srv目录下输入:sudo git init –bare sample.git,
执行命令后,Git就会自动创建一个空白仓库,空白仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,
所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常以.git结尾。
最后把owner改为git:sudo chown -R git:git smaple.git
第五步:禁用shell登录,处于安全考虑,第二步创建的git用户不允许登录shell,可以通过编辑/etc/passwd文件来完成,
找到类似下面的一行:git:x:1001:1001:,,,:/home/git:/bin/bash改为
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
这样,git用户可以正常通过ssh使用git,但是无法登录shell,因为我们给git用户指定的git-shell每次一登录就自动退出
第六步:克隆远程仓库:git clone git@server:/srv/sample.git
其他就剩下正常使用了
其他:
在创建Git版本库是,Git会自动为我们创建唯一一个master分支,所以,现在,git commit就是往master分支上提交更改
git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支。