.. git.rst --- .. .. Description: .. Author: Hongyi Wu(吴鸿毅) .. Email: wuhongyi@qq.com .. Created: 四 8月 13 20:21:20 2020 (+0800) .. Last-Updated: 三 9月 30 09:26:53 2020 (+0800) .. By: Hongyi Wu(吴鸿毅) .. Update #: 14 .. URL: http://wuhongyi.cn ################################################## git 与 GitHub ################################################## ============================================================ git 的使用 ============================================================ ---------------------------------------------------------------------- 初始化配置 ---------------------------------------------------------------------- .. code:: bash #配置使用git仓库的人员姓名(这里使用github帐号用户名) git config --global user.name #配置使用git仓库的人员email(这里使用github帐号邮箱) git config --global user.email #让Git显示颜色 git config --global color.ui true LINUX 下配置文件位置(可以查看用户的全局设置) .. code:: txt ~/.gitconfig ---------------------------------------------------------------------- 忽略文件 ---------------------------------------------------------------------- 在使用 Git 的过程中,有的文件比如生成的数据文件、临时文件、编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交。 通过在项目下创建文件 *.gitignore* ,在里面添加需要忽略的文件夹及文件(如下示例) .. code:: txt /project/build/ *.root *.m4b *.mca *.spe /log/ /lib/ build/temp/ 其中目录以 “/” 开头的为绝对路径,如前几个。不以 “/” 开头的将会忽略整个仓库中该名字的文件夹,例如最后一个。文件也同理,不指定目录将忽略所有匹配的文件。 在 *.gitingore* 文件中,遵循相应的语法,在每一行指定一个忽略规则。忽略规则的语法如下: - 空格不匹配任意文件,可作为分隔符,可用反斜杠转义 - # 开头的模式标识注释,可以使用反斜杠进行转义 - ! 开头的模式标识否定,该文件将会再次被包含,如果排除了该文件的父级目录,则使用 ! 也不会再次被包含。可以使用反斜杠进行转义 - / 结束的模式只匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件 - / 开始的模式匹配项目根目录,如果一个模式不包含斜杠,则它匹配相对于当前 .gitignore 文件路径的内容,如果该模式不在 .gitignore 文件中,则相对于项目根目录 - ** 匹配多级目录,可在开始,中间,结束 - ? 通用匹配单个字符 - [] 通用匹配单个字符列表 *.gitignore* 只能忽略那些原来没有被跟踪的文件,如果某些文件已经被纳入了版本管理中,则修改 *.gitignore* 是无效的。解决方法就是先把本地缓存删除(改变成未跟踪状态),然后再提交。 ---------------------------------------------------------------------- 提交空目录 ---------------------------------------------------------------------- 需要在目录下创建 *.gitkeep* 文件,然后在项目的 *.gitignore* 中设置不忽略 *.gitkeep* 。 *.gitkeep* 是一个约定俗成的文件名并不会带有特殊规则。 ============================================================ GitHub 帐号配置 ============================================================ 首先访问 https://github.com/ ,然后注册并登陆帐号。 ---------------------------------------------------------------------- watch、star、fork 的作用 ---------------------------------------------------------------------- 在每个 github 项目的右上角,都有三个按钮,分别是 watch、star、fork。 默认每一个用户都是处于 Not watching 的状态,当你选择 Watching,表示你以后会关注这个项目的所有动态,以后只要这个项目发生变动,如被别人提交了 pull request、被别人发起了 issue 等等情况,你都会在自己的个人通知中心,收到一条通知消息,如果你设置了个人邮箱,那么你的邮箱也可能收到相应的邮件。如果你不想接受这些通知,那么点击 Not Watching 即可。 star 这里解释为 **关注** 或者 **收藏** 更合适,当你点击 star 表示你喜欢这个项目或者通俗点可以把他理解成朋友圈的点赞。github 里面会有一个列表,专门收集了你所有 star 过的项目,所以也可以把它理解成收藏,通过该列表可以快速访问那些项目。 当选择 fork,相当于你自己有了一份原项目的拷贝,当然这个拷贝只是针对当时的项目文件,如果后续原项目文件发生改变,你必须通过其它的方式去同步。一般来说,我们不需要使用 fork 这个功能,除非有一些项目,可能存在 bug 或者可以继续优化的地方,你想帮助原项目作者去完善这个项目或者单纯的想在原来项目基础上己维护一个属于自己项目。 **很多人错误地在使用 fork。很多人把 fork 当成了收藏一样的功能,其实你完全可以使用 star 来达到这个目的。** 请记得给项目 https://github.com/pkuNucExp/PKUXIADAQ 点击 star。 ---------------------------------------------------------------------- 创建仓库 ---------------------------------------------------------------------- 首先先上网站点击新建一个仓库,例如我要新建一个名为 “test” 的仓库,输入仓库名字,点击创建即可创建,然后就进入快速设置引导界面。如果你选择了 Initialize this repository with a README、Add .gitignore、Add a license,则会在仓库中生成相应的 README 、.gitignore 、 LICENSE 文件,跳过快速指导页面直接进入项目。如果选了以上,第一次上传之前还需要 pull 一下。 创建项目之后会进入一个快速设置指导页面。上面提示 HTTPS、SSH 两种方式可以上传、下载。如下所示。 .. code:: bash # HTTPS https://github.com/wuhongyi/test.git # SSH git@github.com:wuhongyi/test.git 如果说本地本人使用两个没什么差别,SSH 可能还方便点。但是如果远程电脑或者公共服务器账户上还是 HTTPS 好,远程 SSH 输入密码框无法显示,意味着没法上传。SSH 可以配置免密上传,公共服务器上还会泄漏账户信息或者被人误操作。综合以上建议采用 HTTPS 方式上传。 本地对应仓库的创建: 终端指向该文件夹执行以下命令初始化仓库(每个仓库只需要一次) .. code:: bash #初始化 该目录下将生成. git 文件夹 git init #设置远程仓库地址 第一个为 HTTPS 第二个为 SSH,两个选一个即可。 #设置完之后该信息将被写入到 .git/config 文件中,可修改该文件切换上传方式 git remote add origin https://github.com/wuhongyi/test.git git remote add origin git@github.com:wuhongyi/test.git 仓库内容的修改和发布: .. code:: bash git add [XXX] #添加文件到暂存区 万能命令 git add --all git commit -m "commit message" #提交修改 git push -u origin master #上传到网站 # 之后按照提示输入帐号、密码 git pull origin master #将远程仓库同步到本地 ---------------------------------------------------------------------- github 创建个人主页 ---------------------------------------------------------------------- 每个用户下只能有一个 [username].github.io 的仓库 发布在该仓库的 master 分支的内容即个人静态网页, 可通过 [username].github.io 访问。 ============================================================ GitHub 客户端 ============================================================ 前面介绍的命令行都是基于 LINUX 终端操作的。Windows/macOS 下有图形界面的操作终端,可以从 https://desktop.github.com 上下载。 具体使用可以参考以下网页 - `GitHub的Windows客户端的使用教程 `_ - `gitHub客户端的安装与使用总结 `_ ============================================================ 练习 ============================================================ - follow 吴鸿毅帐号 https://github.com/wuhongyi - 给项目 https://github.com/pkuNucExp/PKUXIADAQ 点击 star - 给课程项目 https://github.com/zhihuanli/Experimental-Method-in-Nuclear-Physics 的 watch 设置成 Watching(能够及时收到更新通知,不想收到通知随时可更改成 Not Watching) - 创建名字为 test 的 repository - 在 test 中上传一些程序片段,必须包含 .gitignore 和 README.md 文件 - 上传完成后,对代码文件进行修改,然后再次上传 .. .. git.rst ends here