版本库(Repository)
工作区有一个隐藏目录.git,58 红包扫雷系统开发得到吴燕吗:I56 电 2227 微 7887,这个不算工作区,而是 Git 的版本库。
Git 的版本库里存了很多东西,其中最重要的就是称为 stage(或者叫 index)的暂存区,还有 Git 为我们自动创建的第一个分支 master,以及指向 master 的一个指针叫 HEAD
一个 git 仓库管理一个工程
git init // 创建一个仓库,在工程目录下有一个隐藏的目录.git
git add 文件 // 提交到暂存区
git add . // 在工程目录下 git add . 就可以提交所有修改的和新建的数据暂存区
git commit -m "说明信息" // 把暂存区内容提交到当前分支
git status // 查看状态
git diff 文件 // 查看文件修改,git diff 比较文件被 git add 之前有无差异
git diff --cached 或 git diff --cached // 查看已暂存的将要添加到下次提交里的内容的变化
git log // 查看日志
git log --pretty=oneline
git log --graph --pretty=oneline --abbrev-commit // 查看日志图表
git log -p -2 //-p 选项展开显示每次提交的内容差异,-2 则仅显示最近的两次更新:git reflog // 查看所有提交的 log,可以查看每次变动的版本号,方便查阅
git reset --hard HEAD^ // 回退到上一个版本
git reset --hard HEAD^^ // 回退到上上个版本
git reflog // 查看执行过的命令
git checkout -- 文件 // 回退到上一次修改
git checkout . // 这条命令把 当前目录所有修改的文件 从 HEAD 中签出并且把它恢复成未修改时的样子
git reset --hard 文件号 // 指定回退到版本号对应的文件中去
git reset HEAD 文件 // 可以回退版本,也可以把暂存区的修改回退到工作区。用 HEAD,表示最新的版本
git rm 文件 // 确实要从版本库中删除该文件,删除完再 git commit
撤销修改
场景 1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令 git checkout — file。
场景 2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令 git reset HEAD <file>,就回到了场景 1,第二步按场景 1 操作。
场景 3:已经提交了不合适的修改到版本库时,想要撤销本次提交,前提是没有推送到远程库,先用 git reset — hard HEAD^
创建远程仓库
1.git config --global user.name "Your Name"
2. git config --global user.email "email@example.com"
3.ssh-keygen -t rsa -C "youremail@example.com" // 生成 SSH 密钥,一路回车,使用默认值即可,在用户主目录里找到.ssh 目录,里面有 id_rsa 和 id_rsa.pub 两个文件,这两个就是 SSH Key 的秘钥对,id_rsa 是私钥,不能泄露出去,id_rsa.pub 是公钥;登陆 GitHub,打开“Account settings”,“SSH Keys”页面:然后,点“Add SSH Key”,填上任意 Title,在 Key 文本框里粘贴 id_rsa.pub 文件的内容
4. git remote add origin 远程库 URL //URL 时是 gihub 中的 SSH,添加新的远程仓库
5. git push origin master // 远程提交 第一次提交用 git push -u origin master
6.git remote set-url origin 你的远端地址 // 设置远端仓库地址
7.git remote add <shortname> <url> // 添加一个新的远程 Git 仓库
eg:git remote add pg https://github.com/paul/tic //pg 为远程仓库名
8.git remote -v // 查看远程仓库
删除远程仓库
git remote rm origin // 删除远程 Git 仓库
git clone 远程库 URL // 克隆一个本地库,从远程仓库中把工程克隆到本地电脑
git remote // 查看远程库的信息
git remote show [remote-name] // 查看某一个远程仓库的更多信息
git remote rename // 去修改一个远程仓库的简写名 git remote rename pg pvul // 将 pg 重命名为 pvul
git remote rm [remote-name] // 删除指定的远程仓库
分支操作
git checkout -b dev // 创建并切换到 dev 分支,分支名叫“dev”
注:要留意你的工作目录和暂存区里那些还没有被提交的修改,它可能会和你即将检出的分支产生冲突从而阻止 Git 切换到该分支。最好的方法是,在你切换分支之前,保持好一个干净的状态。
git checkout 分支名 // 切换分支
git branch // 查看当前分支
git branch 分支名 // 创建分支
git merge 分支名 // 合并指定分支到当前分支
git branch -d 分支名 // 删除分支
git branch -D 分支名 // 删除分支
git branch --set-upstream-to=origin/dev dev // 指定本地 dev 分支与远程 origin/dev 分支的链接,设置 dev 和 origin/dev 的链接
git pull // 把最新的更新提交从远程库中抓下来
git pull origin(远程仓库名) master(分支名) // 自动的抓取然后合并远程分支到当前分支
git push [remote-name] [branch-name]
git push origin --delete [branch-name] // 删除远程的一个分支
git merge --abort // 终止合并冲突
git merge --no-ff -m "相关说明信息" 分支名 // --no-ff 参数,表示禁用 Fast forward
git stash // 把当前工作现场“储藏”起来,等以后恢复现场后继续工作
git stash list // 查看工作现场
git stash pop // 恢复工作现场同时把 stash 内容也删了
将远程分支的 dev 分支重命名为 deve 分支步骤如下:
1. 先删除远程分支:git push --delete origin dev
2. 重命名本地分支:git branch -m dev deve
3. 重新提交一个远程分支:git push origin deve
标签操作
git tag <name> // 打一个新标签 如:git tag v1.0
git tag // 查看所有的标签
git tag <name> commit id // 给对应的 commit id 打一个标签。如:git tag v0.9 f52c633
git log --pretty=oneline // 可以查看到标签
git show <tagname> // 查看标签信息 如:git show v0.9
git tag -d <tagname> // 删除标签,如:git tag -d v0.1
git push origin --delete tag <tagname> // 删除远程的标签
git push origin <tagname> // 推送某个标签到远程
git push origin --tags // 一次性推送全部尚未推送到远程的本地标签
删除远程标签的步骤
1.git tag -d <tagname> // 先删除本地标签
2.git push origin :refs/tags/<tagname> // 在从远程删除
多人协作模式
首先,可以试图用 git push origin <branch-name> 推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用 git pull 试图合并;
如果合并有冲突,则解决冲突,并在本地提交;没有冲突或者解决掉冲突后,再用 git push origin <branch-name> 推送就能成功
重点说明:
如果因为提交错误,可以 git reset HEAD^ 回退到你要提交代码时的工作区,重新 git add 想要的文件 到暂存区,然后 git commit -m “” 提交,然后 git push -f origin dev(分支名) // 强推覆盖远程分支。