什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
$ mkdir learngit
$ cd learngit
$ pwd
//pwd命令用于显示当前目录路径
$ ls
//ls命令用于显示当前目录的文件
$ git init
$ git add readme.txt
//将该文件添加进仓库(注意:可以反复添加,再一次性commit)
3.//用命令git commit告诉Git,把文件提交到仓库:
$ git commit -m "wrote a readme file"
//-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。
git log命令显示从最近到最远的提交日志 想要退出git log状态,按q即可
在Git中,用HEAD表示当前版本,也就是最新的提交3628164...882e1e0(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
现在,我们要把当前版本“append GPL”回退到上一个版本“add distributed”,就可以使用git reset命令:
$ git reset --hard HEAD^
总结:
命令git checkout -- readme.txt 意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态; 一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。 总之,就是让这个文件回到最近一次git commit或git add时的状态。
PS:git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令,我们在后面的分支管理中会再次遇到git checkout命令。
git reset HEAD file可以把暂存区的修改回退到工作区
###小结
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。 **场景2:**当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
###删除已经提交的文件 $ rm test.txt 可以删除该test文件 这个时候,Git知道你删除了文件,因此,工作区和版本库就不一致了,git status命令会立刻告诉你哪些文件被删除了
现在有两个选择
详见廖雪峰网站
小结
$ git clone git@github.com:michaelliao/gitskills.git
要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。 Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。
切换到分支: git chenkout fz1 查看当前分支:git branch git branch命令会列出所有分支,当前分支前面会标一个号。*
注意:新创建的分支,是空的。
git merge命令用于合并指定分支到当前分支。
合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
删除分支需要在其他分支上进行
###小结 Git鼓励大量使用分支: 查看分支:git branch 创建分支:git branch name 切换分支:git checkout name 创建+切换分支:git checkout -b name 合并某分支到当前分支:git merge name 删除分支:git branch -d name
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。 用git log --graph命令可以看到分支合并图。
当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。 恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令: $ git stash apply stash@{0}
开发一个新feature,最好新建一个分支; 如果要丢弃一个没有被合并过的分支,可以通过git branch -D 强行删除。
多人协作的工作模式通常是这样:
如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。 这就是多人协作的工作模式,一旦熟悉了,就非常简单。
创建标签:$ git tag v1.0
查看标签:$ git tag
注意,标签不是按时间顺序列出,而是按字母排序的。可以用git show (tagname)查看标签信息:
删除标签:$ git tag -d v1.0 并从远程删除(如果有的话)$ git push origin :refs/tags/v1.0
推送本地标签到远程 $ git push origin v1.0 或一次性推送:$ git push origin --tags
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。