常用单词
- HEAD --> 当前版本(HEAD^ --> 上一个版本,HEAD^^ --> 上上版本,HEAD~100 --> 上100个版本)
- Working Directory --> 工作区(电脑里面的目录)
- Repository --> 版本库
- stage(/index) 暂存区----git add 就是把文件修改添加到暂存区
2.master 自动创建的第一个分支----git commit就是把文件修改提交到分支
- origin(远程仓库) --> 运行Git的服务器,如Github
- stash --> 可以把当前工作储藏起来
Git 安装
- 简单的一句命令行
sudo apt-get install git
。 - 安装完成之后需要自报家门
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
- Github是通过SSH来管理设备的
$ ssh-keygen -t rsa -C "youremail@example.com"
git提交
- git init --> 在文件夹底下运行这条命令,会是此文件夹变成Git可以管理的仓库
- 将文件放到Git仓库所需要的步骤
- git add 文件名(当全部上传仓库时:git add .)
- git commit -m "xxxx"(将文件提交到仓库)
- git push origin master 推送到远程仓库
Git管理
- git status 可以让我们掌握仓库的状态
- git diff 查看difference
- git log 查看历史记录(log中commit是版本号)
- git reset --hard HEAD^(HEAD也可以换成版本号) 回退到上个版本
- git reflog 记录每一次的行为,里面包括版本号
- git checkout -- file 把file文件再工作区的修改全部撤销(1.当工作区的修改还没有放到暂存区,撤销到和版本库一样的状态。2.当工作区的修改已经添加到暂存区,撤销到添加暂存区后的状态)
- git reset HEAD file 可以把暂存区的修改撤销掉(unstage),重新放回工作区
- git rm “file”从版本库中删除文件,然后commit
远程仓库
- 在远程仓库里克隆新的仓库(如Github)
$ git remote add origin git@github.com:XXXXXX/xxxxxx.git
- 我们一般先创建远程仓库,再从远程仓库克隆
- git remote 查看远程仓库信息(远程仓库默认名一般为origin)
- git remote -v 显示更详细的信息
分支管理
步骤 参考
- (提交点我的理解就是提交的代码节点)一开始的时候,
master
分支是一条线,Git用master
指向最新的提交点,再用HEAD
指向master
,就能确定当前分支,以及当前分支的提交点。每次提交,master
分支都会向前移动一步,这样,随着你不断提交,master
分支的线也越来越长。 - 当我们创建新的分支,例如
dev
时,Git新建了一个指针叫dev
,指向master
相同的提交点,再把HEAD
指向dev
,就表示当前分支在dev
上。不过,从现在开始,对工作区的修改和提交就是针对dev
分支了,比如新提交一次后,dev
指针往前移动一步,而master
指针不变。 - 假如我们在
dev
上的工作完成了,就可以把dev
合并到master
上。Git怎么合并呢?最简单的方法,就是直接把master
指向dev
的当前提交,就完成了合并。 - 合并完分支后,甚至可以删除
dev
分支。删除dev
分支就是把dev
指针给删掉,删掉后,我们就剩下了一条master
分支。
代码
- git checkout -b <name> 创建并切换分支(git checkout -b dev 创建并切换
dev
分支,相当于git branch dev ,git checkout dev) - git checkou <name>切换分支(git checkout master 切换回master分支)
- git branch 查看当前分支,会列出所有的分支,×代表当前分支。
- git merge <name>合并name分区到当前分支(git merge dev 合并dev到当前分区)
- git branch -d <name> 删除分区(git branch -d dev 删除dev分区)
冲突管理
- Git用
<<<<<<<
,=======
,>>>>>>>
标记出不同分支的内容,我们手动修改后add,commit。 - git log --graph 查看分支合并图。
分支策略管理
- git merge --no--ff -m “注释” <name> 禁用Fast forward(在这个模式下合并分区之后无法查找分支信息)。
Bug分支
- git stash 储藏工作
- Bug在哪个分支上,就从哪个分支上创建临时分支修复。修复完成之后,切换到相应分支,合并删除临时分支。
- git stash list 查看stash
- git stash apply 恢复(恢复后stash内容并不删除,需要用git stash drop来删除)
- git stash pop 恢复的同时,也把stash删了。
- git stash apply stash@{0} 恢复到制定的stash
Feature分支
- 开发一个新feature,最好新建一个分支。
- 如果要丢弃一个没有被合并过的分支,可以通过
git branch -D <name>
强行删除。
推送分支
- git push origin <name> 把该分支上所有的远程操作提交到远程。
- 在Git中分支可以在本地藏着玩,是否推送到远程视心情。
抓取分支
- 当小伙伴从远程仓库clone时,默认只能看到本地的master。
- git checkout -b dev origin/dev 创建远程origin的dev分支到本地。
当遇到冲突时
- git branch --set-upstream dev origin/dev 建立本地dev分支与远程origin/dev分支的链接
- git pull 把最新的代码抓下来,在本地合并之后,再推送。
多人协作的工作模式
因此,多人协作的工作模式通常是这样:
- 首先,可以试图用git push origin branch-name推送自己的修改;
- 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
- 如果合并有冲突,则解决冲突,并在本地提交;
- 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
- 如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。
标签 不详细,参考
- 切换到相应分支
- git tag <name> 打标签
- git tag 查看标签
搭建Git服务器 搭建Git服务器
重新修改.gitignore使其重新生效
- git rm -r --cached . #清除缓存
- git add . #重新trace file
- git commit -m "update .gitignore" #提交和注释
- git push origin master #可选,如果需要同步到remote上的话