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) 远程库:

使用Githubgit托管服务:

需要在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学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

Git学习笔记

Git学习笔记

git学习笔记

Git学习笔记01 从GitHub克隆版本库

Git学习笔记

git学习笔记12-标签管理-版本