Git 学习
1.git工具基本含义
git最大的用处就是记录每个版本的变动、比较每个版本的不同,以及多人维护和开发同一个项目。支持版本回退。
2.git基本命令
a.创建版本库
$ mkdir learngit //创建目录
$ cd learngit //进入目录 $ pwd //查看当前目录 /Users/michael/learngit
$ git init //创建本地版本库
Initialized empty Git repository in /Users/michael/learngit/.git/
$ git add readme.txt //将readme.txt添加到工作区 $ git commit -m "test"//将readme.txt提交到本地仓库 $git status //查看目前工作区又没有没有被提交到仓库的文件 $git diff readme.txt //在提交到仓库之前查看那里做了改动(只能在提交到仓库之前) $git log //查看历史记录 $git log --pretty=oneline //在一行上面显示历史记录 $git reset --hard HEAD^ //回退到上一个版本(
$git reset --hard HEAD^ 表示回退到上上一一个版本
) $git reset --hard 版本代码 //回退到版本代码所代表的版本号(版本代码使用$git log 查看) $git reflog //显示操作后的每一个命令,包括回退版本,一般用于回退后后悔时,查看没有回退之前的版本号,然后使用$git reset --hard 版本号 ,来回到没有回退之前的版本 $git diff HEAD -- readme.txt //查看工作区和版本库中readme.txt的不同 $git checkout -- readme.txt //撤销最近一次对readme.txt的修改,如果还没有$git add 就回到没有修改的上一个版本,如果已经$git add后才修改,就回到刚刚$git add的状态 $git reset HEAD readme.txt //将redme.txt从暂存区回退到工作区,然后使用$git checkout -- readme.txt 放弃工作区的修改 $git rm readme.txt //从版本库中删除readme.txt(必须先将本地的readme.txt删除,才能使用这个命令。使用 rm readme.txt命令将本地readme.txt删除以后可以使用$git checkout -- readme.txt 将文件找回。$git checkout -- readme.txt,其实是用版本库中的版本替换工作区中的版本)
$ssh-keygen -t rsa -C "[email protected]" //创建本机SSH key 用于github 网站的密匙绑定,即让github服务器知道这台主机和你的github账号是关联的,邮件地址填写自己的,(创建完成之后,在根目录会有.ssh文件夹,里面有两个文件,id_rsa和id_rsa.pub,其中id_rsa.pub里就是需要绑定在github网站上的公匙)
$git remote add origin [email protected]:mingming/learngit.git //关联远程github服务器上的仓库,记得把
[email protected]:mingming/learngit.git换成自己仓库的地址
$git push -u origin master //推送内容到远程仓库,并且将本地master分支和远程master分支关联起来(第一次推送使用) $git push origin master //推送本地master分支到远程master分支,(修改后直接使用此命令推送) $git clone
[email protected]:mingming/learngit.git //从远程仓库克隆,可以直接填充本地新仓库 $git checkout -b dev //创建dev分支并且切换到dev分支 $git branch dev // 创建dev分支 $git checkout dev //切换到dev分支 $git branch //列出所有分支 $git merge dev //将dev分支的工作合并到当前分支 $git branch -d dev //删除dev分支
$git log --graph --pretty=oneline --abbrev-commit //查看分支合并图
$git merge --no-ff -m "merge with no-ff" dev //以禁用Faste forword方式合并分支,合并完之后可以在历史中查看到曾经做过合并,而使用Faste forword方式则不会在历史记录中显示 $git stash //保存工作区现场,(当临时有任务需要修改时,需要暂停本分支上面工作任务) $git stash list //查看本分支的工作现场列表 $git stash apply //恢复本分支工作现场 $git stash drop //删除stash内容 $git stash pop //恢复本分支stash内容并且删除stash
$ git stash apply [email protected]{0} //恢复指定的stash $git branch -D dev //强制删除dev分支 $git remote -v //查看远程库详细信息
$git checkout -b dev origin/dev //创建本地dev分支,
$git branch --set-upstream dev origin/dev //指定本地dev和远程关联 $git tag V1.0 //给当前分支的版本号打上标签V1.用于标记自己的版本 $git tag //查看所有标签 $git tag V1.0 444444 //给commit id为444444的版本号打上标签 $git show V1.0 //查看V1.0版本的详细信息 $git tag -a V1.0 -m "shuo ming xin xi" //打上标签并且给出标签说明 $git tag -d V1.0 //删除V1.0标签 $git push origin V1.0 //推送V1.0标签 $git push origin tags //推送所有标签
$git push origin :refs/tags/V1.0 //删除远程标签,(在此之前必须删除本地标签V1.0) 3.git的使用技巧 a.远程仓库上可以fork别人的项目然后,clone到本地进行二次开发 b.可以编写.gitignore文件实现添加到工作区的时候忽略其中某些文件 c.两个人人,或者一个人在两台电脑上修改同一段代码,其中一方push到远程之后,另一方push时,必然要git pull一下更新本地仓库,然后查看双方修改的冲突在哪里,对冲突再次修改才能push到远程 d.搭建git服务器 。
$ sudo apt-get install git //在服务器端安装git软件 。。$sudi adduser git //创建一个git用户,用来运行git服务。 。。。收集需要登陆的用户的公匙(
id_rsa.pub文件里的
),将所有用户的公匙导入到文件/home/git/.ssh/authorized_keys,一行一个,//人数少可以使用此文件,人数多了可以使用Gitosis来管理 。。。
$ sudo git init --bare sample.git //在选定的作为仓库的目录中输入此命令,会创建一个名字为sample.git的空仓库 。。。。
$ sudo chown -R git:git sample.git //把owner改成git 。。。。。出于安全考虑,创建的git用户不允许登陆shell,通过将/etc/passwd里面的
git:x:1001:1001:,,,:/home/git:/bin/bash改为
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell即可,这样git用户就可以通过ssh链接,但是不能使用shell登陆 。。。。。。在各自用户的电脑上使用
$ git clone [email protected]:/srv/sample.git 克隆仓库就OK
时间: 2024-11-05 21:52:17