Git及Github实用教程

2018-12-10  本文已影响0人  nowherespyfly

本文是一个小小的github操作指南,由于时间有限,没有办法把很多细节以及概念讲解清楚。不过,如果想要速查一些命令,还是比较有用的。

1. 准备事项

1. 注册github账号

用邮箱在github注册一个账号,设置一个用户名,记住密码。之后本地的git也会用到这个邮箱和用户名

2. 在本地安装git

由于这些步骤过于简单,就不在这里详述了,以后有时间的话再补上吧

3. git初始设置

git config --global user.name "Firstname Lastname"
git config --global user.email "your_email@example.com"

git config --global color.ui auto

ssh-keygen -t rsa -C "your_email@example.com"

执行完这一步之后,会创建一个名为id_rsa.pub的文件。默认情况下,id_rsa.pub是存放在~/.ssh目录下的。打开id_rsa.pub,将里面的内容复制到剪切板。打开浏览器的github,找到Account setting,点击Add SSH Key,将内容粘贴过去。如果添加成功,所用邮箱会收到一封邮件。

2. 使用git创建版本库

git最大的功能就是可以创建多个版本库进行管理,从而更加便于开发。

1. 初始化git目录

git init

执行了这一命令之后,这个目录下就会生成一个.git文件夹,表示这已经是一个git仓库了。我们将这个目录的内容称为隶属于这个仓库的文件树,文件的编辑等操作在这里进行,然后记录到仓库中。

git status
这一命令可以查看当前仓库的状态,处于什么分支,是否有待提交的文件等。是一个十分有用的命令。


比如这张图,显示我们当前处于master分支,没有要commit的文件。

git add 文件名
git commit -m "注释"

或者

git commit -am "注释"

git ls-files

git rm file_name # 会将本地文件同时删除
git rm --cache file_name # 保留本地文件,从git仓库中移除

对文件进行编辑和修改后,可以用以上的命令将修改提交到仓库。加上注释方便以后查看每一次版本更新

git log

或者

git log --graph

后者可以更形象的表示出不同分支之间的合并关系,如下图



日志文件中详细记录了每一次commit的提交时间,以及为什么commit。

git diff

这条命令可以查看工作树和暂存区的差别。

2. 分支操作

git可以创建多个分支。git会维护一个master分支,这也是一切分支的源头,通常也被用作是稳定版本。在其他分支上进行coding不会影响到master分支。在确定其他分支没问题了再与master合并,可以保证代码不会出问题。并且,很多人合作进行工作时,每人负责不同的功能,就可以创建不同的分支,最后再合并到master分支上。通常,当前所处的分支用HEAD来标识。

git branch

加上-a参数可以同时查看本地分支和远程仓库分支。

git checkout -b 分支名

如果不加-b,就是切换到已有分支。

git merge --no-ff B

git reset --hard 哈希值

hard模式是将工作树、暂存区、仓库全部都回到对应的版本,其他还有soft和mix两种模式可选。

git commit amend

这一命令可以修改上一次commit的注释。

git rebase -i HEAD~2

选定最近两次提交,在编辑器中将最后一次前面对应的"pick"字段改为"fixup"然后保存,即可将最后一次提交并入前一次。

3. 推送至远程仓库

将本地的仓库与远程仓库关联的方法最常用的有两种。一种是在本地创建仓库,然后在远程创建一个空仓库(不包含README.md),将该仓库设为本地仓库的远程仓库。另一种是先在远程创建好仓库,然后git clone下来,则形成关联关系。

git remote add origin 仓库.git

这条命令将远程仓库设为本地的远程仓库,标识为origin。

git push -u origin master

这条命令将本地仓库下的内容推送到了远程仓库的master分支。如果需要推送别的分支,进行相应的改变即可。-u参数将origin的master分支设为本地分支的upstream,这样之后只要运行git pull命令,就可以直接从origin的master分支获取内容,不需要额外添加参数。

git clone 仓库名.git

执行git clone操作后我们会默认处于master分支下,同时系统会自动将origin设置为该远程仓库的标识符。

git checkout branch -b 分支名 origin/分支名

这条命令可以从远程仓库获取其他分支到本地的同名分支,之后直接运行git push就可以将这个分支推送到远程仓库。

git pull origin 分支名

3. pull_request

github社区一个很重要的功能就是pull request。利用这个功能,如果我们发现其他人的代码有需要改进的地方,就可以给对方的账户提pr,如果pr被通过就可以merge到对方的代码里。
不同人利用同一个仓库进行合作开发也可以用到这一功能,首先给仓库设置一个管理员,负责最终分支的合并。其他人可以clone仓库到本地,各自创建分支进行开发。开发完毕后push到仓库的对应分支,然后提出一个pr。管理员负责审核分支是否可以被合并,首先管理员将master分支clone到本地,再将pr的分支fetch到本地,创建一个新的分支,用来模拟pr分支被merge到master分支之后的情形,从而验证分支的可靠性。当确定该分支没有问题后,就可以把新创建的分支删除,然后把pr分支merge到master分支。此时,pr就关闭了。

git push origin newbranch

如图,将新分支命名为newbranch,进行修改后上传到仓库的newbranch分支。



上面描述的是给自己创建的或者自己合作开发的仓库提pull request。如果要给其他仓库提pr,比如一个开源的软件,过程要稍微复杂一些。首先你需要先把这个项目fork到自己的远程仓库,然后clone下来。在本地修改后push到自己的远程仓库。然后点击“New pull request”,将pr发送到源仓库的master分支,如下图。待对方审核无误后,就会进行合并或对你的pr提出问题。



当然,github以及git的用法远不止这些,对于经常开发的人来说,上述命令基本够用,如果想要进一步学习github,可以参考大塚弘记的《GitHub入门与实践》。
结尾:从两年前在一个师姐的推荐下,就一直想要系统学一下github的用法,然而由于个人懒惰,一直没有达成。这一次,多亏灰灰叽强行带我学习,总算了却心愿一件。经过两天的学习,终于把github以及git的基本用法摸清楚了。大概总结一个教程,以后慢慢完善吧。

上一篇 下一篇

猜你喜欢

热点阅读