git基本使用
1.创建git本地库
(一切在终端中进行)
$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit
创建目录
$ git init
将目录变成git的版本仓库
2.git常见命令
版本提交
$ git add file1.txt//git add <file(文件名)> 添加到git中的暂存区
$ git add file2.txt file3.txt
$ git commit -m "add 3 files.” // 上传文件,双引号中是对于本次上传的注释
版本回退经常使用到的方法
$ git log //查看提交记录
$ git log --pretty=oneline //以版本号查看版本提交记录
$ git reset --hard HEAD^ //回退到上一个版本,若是^有一个的话就是一个版本,若是两个则是回退两个版本,以此类推
$ git reset --hard 3628164 //根据版本号来回退版本
$ git reflog //每一次的命令记录
撤销修改
$ git checkout -- <file(文件名)>
命令git checkout -- 意思就是,把文件在工作区的修改全部撤销,这里有两种情况:
一种是文件自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是文件已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
$ git reset HEAD readme.txt //撤销最近一次的提交
删除文件
$ git rm <file(文件名)> // 删除版本库中的文件
$ git commit -m “remove the file” //
3.git远程仓库的操作
$ git remote add origin git@github.com:”github 上的用户名a”/“仓库名”.git(这一段时Github上的仓库的SSH码,进入Github上点击仓库就可以看到) //这个命令将本地的版本库与远程的仓库关联起来
$ git push -u origin master //将本地版本库的内容推送到远程 即放到远程库上面去
$ git clone git@github.com:michaelliao/gitskills.git //从远程将整个库克隆到本地上
4.git分支管理
$ git branch //查看当前分支以及存在的额所有分支
$ git branch dev //创建一条新的分支
$ git checkout dev // 且换到新的分支
这两条可以一起写
$ git checkout -b dev //实现的效果是一样的
$ git merge “分支名” //将该分支与当前分支合并起来,则两条分支所拥有的会合并到一起
/*
$ git merge --no-ff -m "merge with no-ff" “分支名” // —no-ff 表示禁用fast forward一般采用这种方法合并分支,可以在提交记录上看到合并的信息,
*/
$ git branch -d dev //删除分支
5.git特殊情况
$ git stash// 将当前分支工作情况保存下来且换到其他分支后在回来一切不变
$ git stash list // 查看保存的工作情况
$ git stash pop/apply //两个都是恢复的方法,但是前者会在恢复的同时吧保存的内容给删除,后者则是是恢复保存的内容,可以使用 $ git stash drop来删除掉保存的内容。
6.git多人协作
$ git remote -v //显示远程库详细信息
$ git push origin “branch name“ //推送到指定分支上去
当推送到远程失败时如若原因是多人开发时的提交冲突的话,要把远程的最新抓到本地后跟自己的尽心比对之后手动合并之后在推送出去此时要用 $ git pull 来抓取远程的文件,而此时可能还是会出错,就是本地的分支没有喝远程的分支链接 使用 $ git branch --set-upstream dev origin/dev 来链接本地和远程的分支
7.git标签管理
在 git commit -m 一个新的版本之后,为这个版本打上一个固定的标签
$ git tag v1.0 //直接给最近的提交版本打上标签
$ git tag v0.9 6224937 //给一个固定的版本打上标签
$ git tag -a v0.1 -m "version 0.1 released" 3628164 //在打上标签的时候附带说明
$ git show v0.9 //根据标签查看提交的信息