学会git bash不求人
初始化的一个git仓库
git init [path]
注:如果没有path参数,则会选择当前所在目录作为git仓库
把文件放到git仓库需要两步
用命令 git add 把文件添加到暂存区
用命令 git commit -m "说明" 把暂存区提交到仓库
查看记录
git log 如果嫌看着比较乱可以使用 git log --pretty=oneline
查看命令记录
git reflog
回退到特定版本
git reset --hard [版本号] 或者 如果直接回到上个版本可以用 git reset --hard HEAD~1
比较工作区与仓库的文件差异
git diff
撤销文件
git checkout -- [file]命令撤销未放入暂存区的文件修改
git reset HEAD [file]命令把暂存区的修改退回到工作区,然后使用上述命令撤销文件修改
删除文件
git rm [file] 然后 git commit,如果误删想还原可以使用 git checkout -- [file]
git checkou 实际上就是用版本库里面的版本替换工作区的版本
清除缓存
git rm -r --cached .
分支管理
创建分支:git branch [branch-name]
切换分支:git checkout [branch-name]
创建并切换到新分支:git checkout -b [branch-name]
列出所有本地分支:git branch
合并分支到当前分析:git merge [branch-name] 默认使用快速合并,不保存历史,通过 git merge --no-ff -m "说明" [branch-name] 把合并也作为一个提交点,方便查看历史。
删除分支:git branch -d [branch-name] 如果要强行删除未合并的分支,则使用大写 D,git branch -D [branch-name]
删除远程分支:git push origin --delete [branch-name]
概念:主分支一般是用来发版本用的,平时做新需求或修改BUG的时候最好创建一个新分支,如果发现某个分支有BUG,最好也是在某个分支上创建一个分支去修改BUG后合并的某分支,如果某分支有未完成的任务,则可以使用命令git brash 把未完成的任务储藏起来,方便创建一个干净的分支去修复BUG,修复BUG完,合并后则可以通过命令把储藏区的内容恢复到工作区,通过命令 git stash list查看储藏的列表,然后使用git stash apply恢复,最后通过git stash drop删除储藏区的指定内容。另一种方式可以使用git stash pop,恢复的同时把储藏的内容删除。
远程分支
查看远程库信息:git remote -v
本地创建的分支,如果不推送到远程,那么其他人是不可见的
从本地推送分支:git push origin branch-name
在本地创建和远程分支对应的分支:git checkout -b branch-name origin/branch-name
建立本地分支与远程分支的关联:git branch --set-upstream branch-name origin/branch-name
从远程抓去分支:git pull origin [branchname]
标签
查看所有标签:git tag
对当前最新提交点创建标签:git tag tag-name,对特定提交点创建标签 git tag tag-name commit-id
查看标签信息:git show tag-name
删除标签:git tag -d tag-name
推送标签到远程:tag push origin tag-name,推送尚未推送的所有本地标签:git push origin --tags
删除远程标签:先删除本地标签 git tag -d tag-name 然后 git push origin:refs/tags/tag-namegit
Git配置忽略提交的文件
在工作区创建一个.gitignore的文件,该文件里面配置需要忽略提交的文件,然后把该文件提交到Git就可以了。
Git仓库搭建
服务端Centos安装Git:yum install git
新增一个git用户:adduser git
客户端生成SSH公钥:ssh-keygen -t rsa -C ""
把公钥导入到服务端:/home/git/.ssh/authorized_keys 文件里
初始化一个仓库:git init /repo/git/test.git
防止其他人直接登录服务器修改工作区把所有者指向git账号:chown -R git:git /repo/git/test.git
防止git账户登录Shell:编辑 /etc/passwd 把 git:x:1001:1001:,,,:/home/git:/bin/bash 改为 git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
现在可以克隆远程仓库了:git clone :/repo/git/test.git
生成SSH公钥
ssh-keygen -t rsa -C ""
-t代表秘钥类型,-C代表一个注释,可以当成标签或描述
把公钥导入服务器/home/git/.ssh/authorized_keys文件就可以了
Git与SVN的区别
Git是分布式版本控制器,同一个Git仓库可以分布到不同的机器上,每台机器没有主次之分,SVN则只有一台主服务器
Git分支管理,SVN创建,切换等操作分支比蜗牛还慢,以至于分支功能成了摆设,Git创建,切换,删除等操作分支都在1秒内完成,无论你的版本库有多少个文件