Git学习笔记
2019-03-15 本文已影响0人
keaiduoduo
注意:Git管理的是修改
fetch 抓取
push 推送
- 推送分支
就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上
比如:git push origin master
如果要推送其它分支,比如dev,就改成:git push orgin dev
- 新建仓库(初始化一个仓库):git init
- 提交文件分两步:git add, git commit
- 要随时掌握工作区的状态,使用git status命令
- 如果git status告诉你有文件被修改过,用git diff可以查看修改内容。
- git log可以查看从最近到最远的提交日志
- 在Git中,使用HEAD表示当前版本,也就是最新的版本。上一个版本就是HEAD^,以此类推
- git reset --hard ,时空穿梭机
- git reflog用来记录你的每一次命令
- 从未添加过(add)的文件,状态是Untracked,添加了之后若被修改了,则是Changes not staged for commit状态。
- git add的命令实际上就是把要提交的所有修改放到暂存区(Stage),执行git commit就可以一次性把暂存区的所有修改提交到分支。
相关概念:
- 工作区(Working Directory)
就是在电脑里能看到的目录。 -
版本库(Repository)
工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
工作区版本库关系图.png
- 时光穿梭机
版本回退:git reset HEAD <file>,既可以回退版本,也可以把暂存区的修改回退到工作区,当使用HEAD时,表示最新的版本。
工作区和暂存区
管理修改
撤销修改:git checkout -- <file>
删除文件 - 远程库
- 要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git
- 关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
- 此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改
- 从远程库克隆到本地:git clone https://github.com/EdwardCooler/gitskills.git
- 查看远程库信息,使用git remote -v
- 从本地推送分支,使用git push origin <branch-name>,如果推送失败,则一般都是因为远程分支比你的本地更新,需要先用git pull试图合并
- 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name(本地和远程分支的名称最好一致)
- 如果git pull提示no tracking information,则说明本地分支和远程分支的连接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>。
-
分支管理
不同的分支可以理解为不同的指针。
每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。
创建分支:git branch dev(创建dev分支)
切换分支:git checkout dev(切换到dev分支)
创建+切换分支:git checkout -b dev
合并当前分支到dev:git merge dev
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。用git log --graph命令可以看到分支合并图。 -
分支策略
每个人都有自己的分支,每个人都在自己的分支上干活,最后在合并分支 -
Bug分支
修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除。
当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop回到之前的工作现场。 -
标签管理
tag就是一个让人容易记住的有意义的名字(就不再像commit的编号一样为混乱的字符),它跟某个commit绑在一起
git add 后撤销:
撤销所有add文件 git reset HEAD .
撤销单个add文件 git reset HEAD -filename
git commit 后撤销: 只回退commit的信息,保留修改代码:git reset --soft head 彻底回退到上次commit版本,不保留修改代码:git reset --hard head^ 说明: HEAD :当前版本 HEAD^ :上一个版本 --hard 参数会抛弃当前工作区的修改 --soft 参数的话会回退到之前的版本,但是保留当前工作区的修改,可以重新提交
撤销所有本地改动代码:
git checkout .
本地代码回退到与git远程仓库保持一致
git reset --hard 远程分支名
git push撤销
回滚此次push到服务器的代码:
git log查看commit的信息
git revert 以前commit的id
git push 此时本地回滚的代码到服务器就可以了
git merge 撤销
$ git checkout 【行merge操作时所在的分支】
$ git reset --hard 【merge前的版本号】