这一篇主要接受github日常需要使用的方法。
为了学习,在github上建了一个repository https://github.com/LiangChaoPossible/LearnHowToUseGitHub.git
检出仓库
先检出到本地
git clone https://github.com/LiangChaoPossible/LearnHowToUseGitHub.git ~/Desktop/LearnHowToUseGitHub
工作流
你的本地仓库由 git 维护的三棵“树”组成。第一个是你的 工作目录,它持有实际文件;第二个是 缓存区(Index),它像个缓存区域,临时保存你的改动;最后是 HEAD,指向你最近一次提交后的结果。
也就是说,git中,commit只是将代码提交到HEAD中,还是在本地,想要更新到服务端,则需要利用push。
添加与提交
git add README.txt //使文件加入到版本管理里边
git commit -m "提交README.txt" //提交
git push origin master //将修改推送到matser分支上去,这样,在github上就能看到提交了
修改与提交
我们以learn_change.txt 为例。
修改前,里边的文本为“修改前”
修改后,如果直接进行commit,则会提示
Changes not staged for commit:
modified: learn_change.txt
正确的方法应该是:
git add learn_change.txt
git commit -m "提交修改的learn_change.txt"
git push origin master
如果我们同时修改了learn_change1.txt和learn_change2.txt,但是只想提交learn_change2.txt,那我们需要做的是:
git add learn_change2.txt
git commit learn_change2.txt -m "仅仅提交learn_change2.txt,不提交修改后的learn_change.txt"
git push origin master
从以上我们也看到,只有add了一个文件,才能进行commit,进而push到服务器上去。
更新远程库的代码
git pull // 更新远程库的代码到本地
revert代码
如果你已经add了文件A,发现自己add有问题,可以回复调此次add。方法为:
git reset 文件名称
利用stated的文件覆盖当前正在修改的文件,方法是:
git checkout 文件名称 //checkout也可以用于切换分支
分支
兄弟们在master上直接开发是不对滴,要叉的节奏。每次开发都需要自己的分支,ok之后再merge回去,安全又健康。下面我们来学习下分支相关的。
创建分支
git branch branch_1 //本地创建分支
bit push origin branch_1 //将branch_1推送到服务器上
将本地代码切换到branch_1
git checkout branch_1
切换后,可以利用git status 来查看自己再哪个分支,以免晕了。
当你处于master分支时,运行如下命令,即可merge branch_1的代码
git merge branch_1 //merge branch_1的代码到master分支
之后,利用add,push和commit命令即可提交代码到服务端。
打tag
打tag是一个比较常用的功能了。git打tag的方法是:
git tag -a tag名称 -m "tag的message"
查看所有tag
git tag
查看某个tag的详细信息
git show tag名称
如何revert
提交代码都接受了,那么如何revert呢。下面我们讲一下。
1.撤销git add的操作
如果你是add了一个新文件,则撤销时利用:
git reset HEAD filename //HEAD标示最新版本
如果你是修改了已经commit过的文件,然后add之后,如果需要撤销的话
git reset HEAD filename //unstage文件
git checkout -- filename //撤销文件的修改。本地文件也会被更改
2.利用上次commit的代码revert当前代码
git checkout -- filename
3.修改上一次的commit
有时候我们提交完了才发现漏掉了几个文件没有加,或者提交信息写错了。想要撤消刚才的提交操作,可以使用 –amend 选项重新提交:
git commit --amend //可以修改上次的提交message
如果刚才提交时忘了暂存某些修改,可以先补上暂存操作,然后再运行 –amend 提交
git commit -m 'first time commit' //第一次提交
git add forgotten_file //add 遗漏的文件
git commit --amend //进行amend操作,会将forgotten_file跟上一次提交合并为一次提交
git的版本号
git log我们可以看到,git的版本号都比较奇葩。竟然是一个hash值。很高端的样子。如果你觉得不方便看,就在关键节点打tag吧。
大名鼎鼎的fork
用过github的哥们,都知道fork这个很nb,咱们下面介绍一下这个:
1. 首先从仓库A,fork一个自己的仓库B,以后所有的改动都在这里了。
2. 改动完了,怎么把自己的修改merge到原来的仓库A呢?就要进行pullrequest
3.首先,在自己的仓库里边选择pull request。选择需要修改的文件之后,点击确定,待A的拥有者确定之后,代码就merge过去了,你就为仓库A做贡献了。很神奇吧。
4. 提交后的结果是:
Reference:
1. https://git-scm.com/book/zh/v1
2. http://www.bootcss.com/p/git-guide/
希望对大家有用。