git 常用功能 _fei
01)git 常用功能
git常用分支:master主分支、dev开发分支、bug分支、feature临时功能分支
origin:默认远程分支;
初始化一个Git仓库,使用git init命令。 git add <file> 注意,可反复多次使用,添加多个文件【 git add .】【git commit readme.md -m"readme备注信息"】 git commit 完成。 git commit -m"备注" git status 掌握工作区的状态 git diff 可以查看修改内容。 git reset --hard commit_id 在版本的历史之间穿梭 ### git reset --hard 远程覆盖本地 ### git pull origin dev 从dev分支获取最新提交 git log (git log --pretty=oneline)可以查看提交历史 git log --oneline #查看简洁历史 git reflog 查看命令历史 git checkout -- file 把文件在工作区的修改全部撤销 命令中的--很重要 git rm 用于删除一个文件 git remote add origin git@server-name:path/repo-name.git 要关联一个远程库,使用命令 git push -u origin master 关联后,使用命令git push -u origin master第一次推送master分支的所有内容 git clone 克隆一个仓库 git clone -b name(分支名称) 克隆一个分支仓库 ////////分支修改后,分支提交了,切换到master后才会看不到内容,分支不提交,master可以看到修改内容/////// git branch 查看分支 git branch -a 查看所有分支 git branch <name> 创建分支 git checkout <name> 切换分支 git checkout -b <name> 创建+切换分支 git merge <name> 合并某分支到当前分支 git branch -d <name> 删除分支 git branch -D <name> 强行删除分支(不需要合并) git log --graph 看到分支合并图 git merge --no-ff -m "merge with no-ff" dev 加上--no-ff参数就可以用普通模式合并 git stash 储藏 git stash list git stash pop 恢复储藏并删除储藏 git fetch origin master 获取远程分支到本地 git merge origin/master 合并到本地仓库 git pull 获取最新提交【git pull = git fetch + git merge】 git tag <name> 用于新建一个标签,默认为HEAD,也可以指定一个commit id git tag <name> <commit id> 新建一个标签在commit id上 git tag -a <tagname> -m "blablabla..." 可以指定标签信息 git tag -s <tagname> -m "blablabla..." 可以用PGP签名标签 git tag 可以查看所有标签 git push origin <tagname> 可以推送一个本地标签 git push origin --tags 可以推送全部未推送过的本地标签 git tag -d <tagname> 可以删除一个本地标签 git push origin :refs/tags/<tagname> 可以删除一个远程标签 git ls-files 如何知道目录里的文件是否在git仓库里
02) 设置本项目提交用户名
git config user.name "dafei" git config user.email "123333333@qq.com
查看用户名
git config user.name
git config user.email
03) git客户端:SourceTree
问题:推送、拉取失败总是报错(通过SSH秘钥认证失败,你想要运行SSH秘钥代理(Pageant)并重试吗?)
解决方法:已经附图
04) linux系统搭建git服务:
https://www.linuxidc.com/Linux/2017-01/139457.htm
http://www.linuxidc.com/Linux/2011-12/48555.htm
scp ~/.ssh/id_rsa.pub dafei@192.168.1.149:/home/dafei
05) 从自己服务器获取
git clone dafei@192.168.1.149:/data2/www1/sample.git
git clone 用户名@服务器ip:/目录/sample.git
git clone -b 分支名称 dafei@192.168.1.149:/data2/www1/sample.git #克隆一个分支
#获取下来项目并且重命名
git clone dafei@192.168.1.149:/data2/www1/sample.git dafei_project
git clone dafei@192.168.1.149:/data2/www1/sample.git 新的名字
06) 4中情况回滚代码
*************在工作区的代码 git checkout 文件名 #丢弃某个文件 git checkout . #丢弃全部[ 注意有个点 ]
*************添加到缓存区的代码回滚 git add 到了缓存区,没有git commit -m git reset HEAD #从缓存区回滚[ 仅仅改变缓存区,工作区不变也不会丢 ]
*************提交到本地分支,没有git push 远端, [ git reset 三种模式 ] git commit -m 到本地分支,没有git push 远端 git log --oneline #查看版本信息,版本号 git reset --hard 版本号 #回到想要的版本 [ 这个版本之后的提交信息和数据都会丢掉 ] git reset --hard HEAD^ #回到上一个版本提交 [ 这个版本之后的提交信息和数据都会丢掉 ] git reset --soft HEAD^ #回到上一个版本提交[ 回都上一个版本的缓存区, 这个版本之后的提交信息和数据都会丢掉 ] git reset HEAD^ #此时代码保留,回到git add操作之前[表示需要重新add] [ 使用了默认参数--mixed] git reset --mixed HEAD^ #效果同上一条命令[ git reset HEAD^ ] ************* 远端仓库代码回滚 [ 这个稍微麻烦点 ] 01)先把本地代码还原到指定版本,然后强制推送 git reset --hard 版本号 git push --force #[ 本地版本比远程版本低,加上--force这个参数就可以强制推送到远程 ] 02) 备份当前分支到新分支,先把本地代码还原到指定版本,然后删除远程仓库,用回退的代码推送到远程 git branch backup_备份 #备份当前分支到新分支 git push origin backup_备份 #把新分支推送到远程 git reset --hard 版本号 #把本地代码还原到指定版本 git push origin --delete 远程分支 #删除远程分支 git push origin 本地回退分支上代码 #把本地回退分支上代码推送到远程
07) Git 历史版本下载
官方地址 git-for-windows
08)打标签tag实战
记住一点: 本地和远程可以理解为单独的2类tag
git tag #查看所有标签 git tag v1.0.0 #新建一个标签 git tag <name> git tag v1.0.1 git tag v1.1.0 git show v1.0.1 #查看某个标签做了什么操作 git push origin v1.0.1 #推送具体某个tag到远程 git push --tags #推送所有tag标签到远程服务端 ---或者用下面 #git push origin --tags #推送所有tag标签到远程服务端 git pull #获取所有远程的tag标签 ---或者用下面 #git fetch #获取所有远程的tag标签 git tag -d v1.0.1 #删除一个本地标签 git push origin :refs/tags/v1.0.2 #可以删除一个远程标签(注意这样删除后拉取不到远程删除信息) git push origin --delete v1.0.2 #可以删除一个远程标签(注意这样删除后拉取不到远程删除信息) git tag -l | xargs git tag -d #删除本地所有tag #实战demo git tag git tag v1.0.0 ##修正bug1 git add . git commit -m "fei bug1" git tag v1.0.1 git tag ##修正bug2 git add . git commit -m "fei bug2" git tag v1.0.2 git tag ##添加新业务功能 git add . git commit -m "添加新业务功能added feature1." git tag v1.1.0 git tag