git学习笔记
Posted luciozhang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git学习笔记相关的知识,希望对你有一定的参考价值。
学习的是廖雪峰老师的git教程,http://www.liaoxuefeng.com/ 。
这里整理下学习笔记供自己以后查阅,希望完整学习git的请到上面的网站找Git教程,很好的学习资料。
创建版本库:git init
(1) 添加文件到Git仓库:
第一步:git add <file> 添加文件到暂存区。
第二步:git commit -m “提交说明” 提交到工作区。
(2) 查看Git仓库状态:
git status 查看仓库当前状态
git diff 查看具体修改内容
git log 查看提交日志,加上--pretty=oneline在一行内显示一次提交,加上 --graph可以看到分支图。
git reflog 查看命令历史
(3) 版本回退:
git reset --hard commit_id回退到指定版本
(commit_id即指定的版本号,其中HEAD表示当前版本,HEAD^是上一版本,HEAD^^是上上个版本,HEAD~100是往上100个版本。)
撤销修改:
1.git checkout --file丢弃某个文件的修改,前提是该文件没添加到暂存区。(git checkout用版本库里的版本替换工作区的版本。可以用于撤销工作区的删除和修改。)
2.要撤销已经添加到缓存区的文件的修改,先git reset HEAD file把暂存区的修改撤销,再用git checkout --file丢弃工作区上文件的修改。
3.对已经提交的修改,直接回退到修改前的版本。
(4) 删除文件:
从版本库删除文件:git rm file删除,并git commit
(5) 远程库:
使用Github的git托管服务:
需要在github账号上创建SSH key,这是因为本地git仓库和Github仓库的文件传输是通过SSH加密的,Github通过SSH公钥识别推送的来源。一个Github账号可以添加多个SSH key,与多台设备协同工作。
关联一个远程库:
将本地仓库的内容推送到远程库上。
1. 首先在GitHub账号上创建一个新的仓库。
2. 在本地仓库上用命令:git remote add origin [email protected]:path/repo-name.git
关联远程库。
3. 第一次推送master分支的所有内容:git push -u origin master
之后的推送:git push origin master
第一次推送会引发SSH警告,只要确定就好了。
创建一个远程仓库的正确姿势:
1.在GitHub账号上创建一个新的仓库。
2.克隆远程仓库到本地:git clone [email protected]:path/repo-name.git
这里的地址格式是ssh支持的原生git协议,是比较快的一种。当然我们也可以用https协议。就是git远程仓库在网页上的地址。
(6) 分支的使用:
git branch 查看分支
git branch <name> 创建分支
git checkout <name> 切换分支
git checkout -b <name> 创建+切换分支
git merge <name> 合并某分支到当前分支
git branch -d <name> 删除分支
(7) 冲突的解决:
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
用git log --graph命令可以看到分支合并图。
合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
(8) 暂存管理:
修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除分支。
当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop(相当于用git stash apply恢复,再用git stash drop来删除),回到工作现场。
git stash list可以用于查看保存的工作现场,可以多次保存,当需要恢复的时候,需要指定恢复的stash,命令如: git stash apply [email protected]{0}。
开发一个新功能,最好新建一个分支。如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除。
(9) 向远程库推送文件:
git remote -v 查看远程库信息。
git push origin branch-name 从本地推送分支,如果推送失败,先用git pull抓取远程的新提交,然后,在本地合并,解决冲突,再推送。
git checkout -b branch-name origin/branch-name 在本地创建和远程分支对应的分支,本地和远程分支的名称最好一致。
git branch --set-upstream branch-name origin/branch-name建立本地分支和远程分支的关联。
(10) 标签管理:
创建标签:
git tag <name> [commit_id] 新建一个标签,默认为HEAD,也可以指定一个commit id;
git tag -a <tagname> -m "说明信息" 指定标签信息;
git tag -s <tagname> -m "说明信息" 用PGP签名标签;
git tag 查看所有标签。
git push origin <tagname> 推送一个本地标签;
git push origin --tags 推送全部未推送过的本地标签;
删除标签:
git tag -d <tagname> 删除一个本地标签;
git push origin :refs/tags/<tagname> 删除一个远程标签。
(11) 使用GitHub为别人的开源库贡献代码:
在GitHub上,可以任意Fork开源仓库;
自己拥有Fork后的仓库的读写权限;
3可以推送pull request给官方仓库来贡献代码。
(12) 忽略特殊文件:
忽略某些文件时,需要编写.gitignore.
.gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理。
以上是关于git学习笔记的主要内容,如果未能解决你的问题,请参考以下文章