Git:GitHub/Gitee的使用笔记

1. GitHub/Gitee

  • 为开发者提供远程仓库的托管服务,让开发者与朋友、同事、陌生人共享代码的场所,同时也提供一些高效率的功能,同时也能实现软件版本管理。
  • Issue:是将一个任务或问题分配给一个Issue进行追踪和管理的功能。
  • Wiki:能够随时对一遍文章进行更改并保存,常用于开发文档或手册的编写。
  • Pull Request:推送更改或功能添加,请求合并到仓库中。

2. 安装Git

  • 下载地址:https://git-scm.com/download/win,一路默认安装即可了。
  • 安装完成后,选择右键菜单选项Git Bash Here,打开git控制台。
    Git:GitHub/Gitee的使用笔记_第1张图片
  • 输入命令设置姓名和邮箱地址,该信息将会用在Git的提交日志中,因为是公开的,请不要使用不便公开的隐私信息,尽量不要使用中文名称,以免出现编码错误。
git config --global user.name "Firstname Lastname"   # 替换你的Firstname Lastname
git config --global user.email "[email protected]"   # 替换你的[email protected]

3. 访问仓库

  1. 通常,作为程序开发者,我们把远程仓库的代码下载到本地仓库中,并修改/调试/增加代码后,然后将本地代码上传到远程仓库中,完成版本管理。那么我们可以通过SSH等方式连接远程仓库,此时需要一个密钥才能安全连接。
# 打开Git终端,设置了本地Git的用户名后,使用以下指令生成密钥
ssh-keygen -t ed25519 -C "[email protected]" 	# [email protected]为你的用户名,输入后按照提示存储密钥

Git:GitHub/Gitee的使用笔记_第2张图片

cat ~/.ssh/id_ed25519.pub  # 查看公钥
  1. gitee的操作
    Git:GitHub/Gitee的使用笔记_第3张图片
    Git:GitHub/Gitee的使用笔记_第4张图片
  2. github操作
    Git:GitHub/Gitee的使用笔记_第5张图片
  3. Git配置多个SSH-Key,在 ~/.ssh 目录下新建一个 config 文件,添加如下内容(其中 Host 和 HostName 填写 git 服务器的域名,IdentityFile 指定私钥的路径),配置后我们可以切换访问GitHub或者gitee。
# 在IdentityFile选项我使用了相同的密钥,其实可以使用不同的密钥,只需执行ssh-keygen命令生成不同的密钥就行了
# gitee
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_ed25519
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_ed25519
# 可用于生成不同的访问密钥
ssh-keygen -t rsa -C 'xxxxx' -f ~/.ssh/gitee_id_rsa
ssh-keygen -t rsa -C 'xxxxx' -f ~/.ssh/github_id_rsa
  1. 测试SSH连接
ssh -T [email protected]
ssh -T [email protected]

Git:GitHub/Gitee的使用笔记_第6张图片

  1. 克隆远程已有仓库到本地仓库
    Git:GitHub/Gitee的使用笔记_第7张图片
    Git:GitHub/Gitee的使用笔记_第8张图片
    Git:GitHub/Gitee的使用笔记_第9张图片
    Git:GitHub/Gitee的使用笔记_第10张图片
  2. 试验一下,在克隆后的目录新建一个hello.c文件,并推送到远程仓库中,使用以下的命令。
git add hello.c		# 加入到暂存区
git commit -m "creator a test file"		# 提交,“”引号内容为说明
git push	# 推送到远程仓库

Git:GitHub/Gitee的使用笔记_第11张图片
Git:GitHub/Gitee的使用笔记_第12张图片
Git:GitHub/Gitee的使用笔记_第13张图片

4. Git常用命令

  1. git init 初始化仓库
git init
Initialized empty Git repository in E:/Git/Git Test/gituser/.git/
  1. git status 查看仓库状态
git status
On branch master		# 提示我正处于master分支
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean
  1. git add 向暂存区添加文件,成为Git仓库管理对象。
git add README.MD
  1. git commit 保存仓库的历史记录
git commit -m "creator a test file"		# 提交,“”引号内容为说明
  1. git diff 查看更改前后的差别
git diff
diff --git a/hello.c b/hello.c
index e69de29..2220740 100644
--- a/hello.c
+++ b/hello.c
@@ -0,0 +1 @@
+12346
\ No newline at end of file

git diff HEAD	# 查看与最新提交的区别
  1. git log 查看日志信息
  2. 分支:在进行多个并行作业时,会用到分支,master为默认的分支,从该分支可以派生其他分支,到最后可以合并在一起。
  3. git branch 显示分支一览表
git branch
* master  # 当前分支正处于master
  1. git checkout 创建切换分支
git checkout -b dev1 # -b参数为创建,切换时不需要该参数
Switched to a new branch 'dev1'
  1. git merge 合并分支
git merge --no-ff dev1
# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts

# 在大写情况下,输入ZZ退出编辑
Merge made by the 'ort' strategy.
 13.c | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 13.c
  1. git reset 回溯历史版本
git reset --hard 33090bb4c1b655f291d8138a39e25b973aa45bc1 # hard 参数后面目标时间点的哈希值,git log可以查看
HEAD is now at 33090bb creator a test file
  1. git remote add 添加远程仓库
git remote add [email protected]:INT_TANG/test.git
usage: git remote add [<options>] <name> <url>

    -f, --fetch           fetch the remote branches
    --tags                import all tags and associated objects when fetching
                          or do not fetch any tag at all (--no-tags)
    -t, --track <branch>  branch(es) to track
    -m, --master <branch>
                          master branch
    --mirror[=(push|fetch)]
                          set up remote as a mirror to push to or fetch from
  1. git push 推送至远程仓库
git push -u origin dev1 # 推送到dev1分支,也可以推送到其他分支,-u参数表示在推送的时候,
						# 将dev1分支设置为本地仓库的分支上游,到时git pull获取内容时,省去很多参数设置
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 303 bytes | 151.00 KiB/s, done.
Total 2 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.4]
remote: Create a pull request for 'dev1' on Gitee by visiting:
remote:     https://gitee.com/INT_TANG/test/pull/new/INT_TANG:dev1...INT_TANG:master
To gitee.com:INT_TANG/test.git
 * [new branch]      dev1 -> dev1
branch 'dev1' set up to track 'origin/dev1'.

  1. git clone 获取远程仓库
git clone [email protected]:Init-Tang/Test.git
  1. git pull 获取最新的远程仓库分支
git pull origin develop
From gitee.com:INT_TANG/test
 * branch            develop    -> FETCH_HEAD
Already up to date.

5. 一般Pull Request流程

  1. 当我们发现bug或代码修改增加等,就需要使用Pull Request来更新仓库内容。
  2. 如果是我们自己创建的远程仓库,直接clone到本地仓库修改提交就行了,因为我们拥有自己仓库的所有权。
  3. 如果是别人的仓库,首先把别人的仓库Fork到自己的远程仓库中,因为我们没有被授权操作该仓库。
    Git:GitHub/Gitee的使用笔记_第14张图片
  4. 此时我们的远程仓库就存有与他人仓库相同的代码,然后将复制(Fork)的仓库clone到本地中。
  5. 然后在本地仓库中新建一个分支来操作(重要),然后开始修改代码/修复bug等操作。
    Git:GitHub/Gitee的使用笔记_第15张图片
  6. 修改完成后提交git暂存和管理。
    Git:GitHub/Gitee的使用笔记_第16张图片
    Git:GitHub/Gitee的使用笔记_第17张图片
  7. 创建Pull Request。
    Git:GitHub/Gitee的使用笔记_第18张图片
    Git:GitHub/Gitee的使用笔记_第19张图片
  8. 接下来等待他人的审核,就完成了Pull Request,如果是团队合作开发,那么应该使用为每个开发者添加公钥获取仓库权限的开发方式更方便。

你可能感兴趣的:(编程语言,git,github,gitee)