Linux & MacOS | Git | Github | 版本控制 | 多人协作

 

2022年08月22日

今年开始开发自己的R包了,iterbi,需要频繁用到GitHub。

我最常用的函数也都试图封装到iterbi里了,方便自己今后调用。

MacOS就用desktop版本的github,更新非常方便。

Linux就比较麻烦,最近GitHub改了安全验证方法,只能用token了,需要去setting - developer setting里自己generate

问题是需要每次都输出验证,非常麻烦,所以我有找到了可以保存token的方法:

conda install gh --channel conda-forge

gh auth login

 

问题

devtools和remotes无法安装github上的包

Error: Failed to install 'unknown package' from GitHub: HTTP error 401. Bad credentials Rate limit remaining: 55/60 Rate limit reset at: 2021-08-25 08:50:24 UTC 

这是因为没有设置,或者错误设置了/home/lizhixin/.Renviron里的GITHUB_PAT

只需改为

R_MAX_VSIZE=100Gb

env:
      GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}

  

 

 

 


 

2019年12月30日

 

关键词:

  • 更新,就像人的生长一样,所有的一切都要更新,为了把控这个更新的进程,失败后随时回溯,我们创造出了git;
  • 文本文件(代码、文稿),非文本文件git处理不了;
  • 共享,GitHub共享天堂;
  • 多人协作,大项目的高效协作;
  • 版本控制,能有效的查看文件的所有版本,每次都修改了什么,修改前是什么状态;

 

什么情节下适合用git?

  1. 需要长期修改编辑的文本文件;
  2. 代码管理,最典型的添砖加瓦的写作;
  3. 论文/小说写作,也是需要不断polish的写作;

 

什么不适合用git?

  1. 大文件
  2. 非文本文件
  3. 一次性文件
  4. 无需共享的文件

 

几大主题:

  1. 项目设计,如果架构一直变来变去,那么git的意义就不大了;
  2. 共享,这个最简单,GitHub建一个仓库,来回pull、push就行;
  3. 版本控制,其次,了解和控制自己对文件的历史修改,能随时根据tag回忆起自己的历史记录,在有需要时回溯;
  4. 大型项目的多人协作,最难,需要构建branch,大部分小团队用不到,小项目一个人搞比较高效;

 

其他:

  • git和word的写作比较,word主要是用的人多,方便,在两个版本之间很高效,版本多了就不行了,必须多文件;git则是入门门槛比较高,上手后非常高效
  • 什么适合写博客?杂碎的、单独的随笔就放到博客;什么适合放到GitHub,只要是一个小项目,涉及到长期修改的就放GitHub;博客文章整理后可以放入GitHub

 

参考:

Two simple uses of Git for writing a thesis: reviewing & focussing 

 


 

Git教程

Git是干嘛的?

目前世界上最先进的分布式版本控制系统

版本控制,当你在搞编程这种文本编辑的工作时就必然会碰到版本问题,你很想知道你每一次都修改了哪些内容,有一天你发现你现在的代码写错了,想回到原来的地方,没有版本控制你会抓狂。当代码量多起来时,修改的次数多起来后,你会发现版本控制更为重要。

Github又是干嘛的?

代码托管,俗称开源圣地,免费用户的代码都是公开的,大家可以互相分享自己的代码,而且大项目可以协同合作。


如何控制版本?版本控制应该能做到什么?

image

如何将代码上传到Github?

配置

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
$ git config --global user.name "leezx"

创建仓库

$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/

添加文件到仓库

$ git add test.txt

提交文件到仓库

$ git commit -m "wrote a test file"
[master (root-commit) 4373b19] wrote a test file
 1 file changed, 2 insertions(+)
 create mode 100644 test.txt

注:-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

问:为什么要分add和commit两步?commit一次可以提交多个文件,是最终的提交过程


查看仓库当前状态

$ git status

查看修改内容

$ git diff test.txt
diff --git a/test.txt b/test.txt
index d8036c1..ec61677 100644
--- a/test.txt
+++ b/test.txt
@@ -1,2 +1,3 @@
 Git is a version control system.
-Git is free software.
\ No newline at end of file
+Git is free software.
+hahaha!
\ No newline at end of file

光diff的输出格式就得再开一片文章了:linux diff详解

查看修改后提交

$ git add test.txt
$ git commit -m "add hahaha!"

注:修改后必须做两步,add 和 commit


查看历史版本

$ git log

回退到指定版本

$ git reset --hard 420e77b
$ git reset --hard HEAD^

再回到前面的版本

$ git reflog

git工作原理?

工作区:写代码的地方

版本库:包含暂存区和分支master

理解你init、add、commit、log、reflog每一步都具体干了些什么?


 


怎么连接本地 Git 和 Github?

生成密码文件

$ ssh-keygen -t rsa -C "youremail@example.com"

去Github填写密码

复制 id_rsa.pub

连接远程的Github

$ git remote add MyScripts git@github.com:leezx/MyScripts.git
$ git push -u MyScripts master

 


posted @ 2016-12-15 15:38  Life·Intelligence  阅读(628)  评论(0编辑  收藏  举报
TOP