一、本地创建git版本库
在本地随便找个空文件夹 或者 新建一个空文件夹 初始化一下
$ mkdir newgit //新建一个空目录
$ cd newgit //进入
$ git init //使用git init命令 初始化一个Git仓库
二、添加文件到Git仓库,分两步
- 使用命令
git add <file>
,注意,可反复多次使用,添加多个文件 或者git add .
添加所有修改
; //将修改放入暂存区 - 使用命令
git commit -m <message>
,完成。 //把暂存区的修改提交
三、掌握工作区状态
- 使用
git status
命令 查看当前工作区状态 - 如果
git status
告诉你有文件被修改过,用git diff
可以查看修改内容
四、版本回退
- 用
git log
可以查看提交历史,以便确定要回退到哪个版本$ git log //查看历史详细信息 $ git log --pretty=oneline //只查看历史commit_id(版本号)
- 使用 git reset --hard commit_id 穿梭到指定版本
$ git reset --hard HEAD // HEAD表示当前版本,HEAD^表示上一版本,HEAD^^上上版本 $ git reset --hard HEAD~100 //上100个版本 当然应该用不到 这么远的版本就用版本号直接转到了 $ git reset --hard 1094a2 //commit_id 写前几位就可以了 当然也可以都写上
- 版本回退错误,想回到返回前的版本? 没问题 。用
git reflog
查看命令历史,以便确定要回到未来的哪个版本,再使用git reset --hard commit_id 穿梭版本
五、 撤销修改
- git checkout -- <file> 把指定工作区的修改全部撤销 ,2种情况:
一种是file自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是file已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次
git commit
或git add
时的状态。 -
常用三个场景:
-
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令
git checkout -- file
。 -
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令
git reset HEAD <file>
,就回到了场景1,第二步按场景1操作。 -
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
六、 删除文件:要从版本库中删除该文件,那就用命令git rm file
删掉,并且git commit
七、从远程仓库拉最新代码到本地
复制 Git库的地址, 执行代码 git clone path
八、分支管理
-
查看分支:
git branch
-
创建分支:
git branch <name>
-
切换分支:
git checkout <name>
-
创建+切换分支:
git checkout -b <name>
-
合并某分支到当前分支:
git merge <name>
-
删除本地分支:
git branch -d <name>
-
删除远程分支:git push origin --delete <name>
-
强制删除分支:
git branch -D <name>
九、 隐藏当前工作区修改
$ git stash //隐藏当前工作区修改
$ git stash list //查看隐藏列表//恢复隐藏
//方法一
$ git stash apply //恢复后,stash内容并不删除,你需要用git stash drop来删除
//方法二
$ git stash pop //恢复的同时把stash内容也删了
十、远程仓库操作
当你从远程仓库克隆时,实际上Git自动把本地的master
分支和远程的master
分支对应起来了,并且,远程仓库的默认名称是origin
。
要查看远程库的信息,用git remote
显示更详细的信息要查看远程库的信息,用git remote -v
推送分支
推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上
$ git push origin master
推送其他分支
$ git push origin dev
总结:
本地新建的分支如果不推送到远程,对其他人就是不可见的;
从本地推送分支,使用git push origin branch-name
,如果推送失败,先用git pull
抓取远程的新提交
在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name
,本地和远程分支的名称最好一致
建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name
从远程抓取分支,使用git pull
,如果有冲突,要先处理冲突
十一、常见多人协作的工作模式:
-
首先,可以试图用
git push origin <branch-name>
推送自己的修改; -
如果推送失败,则因为远程分支比你的本地更新,需要先用
git pull
试图合并; -
如果合并有冲突,则解决冲突,并在本地提交;
-
没有冲突或者解决掉冲突后,再用
git push origin <branch-name>
推送就能成功! -
如果
git pull
提示no tracking information
,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>
。