# gitee-usage **Repository Path**: pcsoul/gitee-usage ## Basic Information - **Project Name**: gitee-usage - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-01-29 - **Last Updated**: 2024-01-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 配置用户 配置用户名和电子邮件地址 ```bash $ git config --global user.name "Haha" $ git config --global user.email haha@example.com ``` 检查已配置信息,可以使用 git config –list 命令 ```bash $ git config --list user.name=Haha user.email=haha@example.com ``` ## Gitee仓库密钥配置 生成公钥和私钥,输入下面命令一直回车即可 ```bash ssh-keygen -t rsa -C 邮箱 ``` 生成了.ssh文件,打开,可以看到生成了公钥以及私钥 ```bash id_rsa id_rsa.pub ``` 使用`cat ~/.ssh/id_rsa.pub`查看公钥,全部复制。 在gitee.com设置-安全设置-SSH公钥添加公钥,将公钥内容粘贴进去。 测试: ```bash ssh -T git@gitee.com ``` 再次输入提示 Hi XXX! You’ve successfully authenticated, but Gitee.com does not provide shell access. 说明公钥配置成功 ## gitee 仓库 创建 git 仓库 ```bash mkdir gitee-usage cd gitee-usage git init touch README.md git add README.md git commit -m "first commit" git remote add origin git@gitee.com:pcsoul/gitee-usage.git git push -u origin "master" ``` 使用已有仓库 ```bash cd existing_git_repo git remote add origin git@gitee.com:pcsoul/gitee-usage.git git push -u origin "master" ``` ## 在工作目录中初始化新仓库 ```bash git init ``` 跟踪文件:如果当前目录下有几个文件想要纳入版本控制,需要先用 git add 命令告诉 Git 开始对这些文件进行跟踪,然后提交。 ```bash git add *.c git add README git commit -m 'initial project version' #确认提交 ``` ## 从现有仓库克隆 ```bash git clone git://github.com/haha/xxx.git # 如果希望在克隆的时候,自己定义要新建的项目目录名称,可以在上面的命令末尾指定新的名字 git clone git://github.com/haha/xxx.git abc ``` ## 检查当前文件状态 要确定哪些文件当前处于什么状态,可以用 **git status** 命令 ## 忽略某些文件 一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。我们可以创建一个名为 *.gitignore* 的文件,列出要忽略的文件模式。来看一个实际的例子: ```bash $ cat .gitignore *.[oa] *~ ``` 文件 *.gitignore* 的格式规范如下: - 所有空行或者以注释符号 # 开头的行都会被 Git 忽略。 - 可以使用标准的 glob 模式匹配。 - 匹配模式最后跟反斜杠(/)说明要忽略的是目录。 - 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。 所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。 我们再看一个 *.gitignore* 文件的例子: ```bash # 此为注释 – 将被 Git 忽略 *.a # 忽略所有 .a 结尾的文件 !lib.a # 但 lib.a 除外 /TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO build/ # 忽略 build/ 目录下的所有文件 doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt ``` ## 查看已暂存和未暂存的更新 实际上 *git status* 的显示比较简单,仅仅是列出了修改过的文件,如果要查看具体修改了什么地方,可以用 *git diff* 命令。稍后我们会详细介绍 *git diff*,不过现在,它已经能回答我们的两个问题了:当前做的哪些更新还没有暂存?有哪些更新已经暂存起来准备好了下次提交? *git diff* 会使用文件补丁的格式显示具体添加和删除的行。 假如再次修改 README 文件后暂存,然后编辑 *benchmarks.rb* 文件后先别暂存,运行 *status* 命令,会看到: ```python $ git status # On branch master # Changes to be committed: # (use "git reset HEAD ..." to unstage) # # new file: README # # Changes not staged for commit: # (use "git add ..." to update what will be committed) # # modified: benchmarks.rb # ``` 要查看尚未暂存的文件更新了哪些部分,不加参数直接输入 *git diff*: ```bash $ git diff diff --git a/benchmarks.rb b/benchmarks.rb index 3cb747f..da65585 100644 --- a/benchmarks.rb +++ b/benchmarks.rb @@ -36,6 +36,10 @@ def main @commit.parents[0].parents[0].parents[0] end + run_code(x, 'commits 1') do + git.commits.size + end + run_code(x, 'commits 2') do log = git.commits('master', 15) log.size ``` 此命令比较的是工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存起来的变化内容。 若要看已经暂存起来的文件和上次提交时的快照之间的差异,可以用 **git diff –cached** 命令。(Git 1.6.1 及更高版本还允许使用 **git diff –staged** ,效果是相同的,但更好记些。)来看看实际的效果: ```bash $ git diff --cached diff --git a/README b/README new file mode 100644 index 0000000..03902a1 --- /dev/null +++ b/README2 @@ -0,0 +1,5 @@ +grit + by Tom Preston-Werner, Chris Wanstrath + http://github.com/mojombo/grit + +Grit is a Ruby library for extracting information from a Git repository ``` ## 跳过使用暂存区域 尽管使用暂存区域的方式可以精心准备要提交的细节,但有时候这么做略显繁琐。Git 提供了一个跳过使用暂存区域的方式,只要在提交的时候,给 **git commit** 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤: ```bash $ git status # On branch master # # Changes not staged for commit: # # modified: benchmarks.rb # $ git commit -a -m 'added new benchmarks' [master 83e38c7] added new benchmarks 1 files changed, 5 insertions(+), 0 deletions(-) ``` ## 移除文件 要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交。可以用 **git rm** 命令完成此项工作,并连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中了。 如果只是简单地从工作目录中手工删除文件,运行 **git status** 时就会在 *“Changes not staged for commit”* 部分(也就是未暂存清单)看到: ```bash $ rm grit.gemspec $ git status # On branch master # # Changes not staged for commit: # (use "git add/rm ..." to update what will be committed) # # deleted: grit.gemspec # ``` ## 移动文件 不像其他的 VCS 系统,Git 并不跟踪文件移动操作。如果在 Git 中重命名了某个文件,仓库中存储的元数据并不会体现出这是一次改名操作。不过 Git 非常聪明,它会推断出究竟发生了什么,至于具体是如何做到的,我们稍后再谈。 既然如此,当你看到 Git 的 mv 命令时一定会困惑不已。要在 Git 中对文件改名,可以这么做: ```bash $ git mv file_from file_to ``` ## 查看当前的远程库 要查看当前配置有哪些远程仓库,可以用 git remote 命令,它会列出每个远程库的简短名字。在克隆完某个项目后,至少可以看到一个名为 origin 的远程库,Git 默认使用这个名字来标识你所克隆的原始仓库: ```bash $ git clone git://github.com/schacon/ticgit.git Initialized empty Git repository in /private/tmp/ticgit/.git/ remote: Counting objects: 595, done. remote: Compressing objects: 100% (269/269), done. remote: Total 595 (delta 255), reused 589 (delta 253) Receiving objects: 100% (595/595), 73.31 KiB | 1 KiB/s, done. Resolving deltas: 100% (255/255), done. $ cd ticgit $ git remote origin ``` 可以加上 -v 选项(译注::此为 –verbose 的简写,取首字母),显示对应的克隆地址: ```bash $ git remote -v origin git://github.com/schacon/ticgit.git ``` 如果有多个远程仓库,此命令将全部列出。比如在我的 Grit 项目中,可以看到: ```bash $ cd grit $ git remote -v bakkdoor git://github.com/bakkdoor/grit.git cho45 git://github.com/cho45/grit.git defunkt git://github.com/defunkt/grit.git koke git://github.com/koke/grit.git origin git@github.com:mojombo/grit.git ``` ## 添加远程仓库 要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用,运行 git remote add [shortname] [url]: ```bash $ git remote origin $ git remote add pb git://github.com/paulboone/ticgit.git $ git remote -v origin git://github.com/schacon/ticgit.git pb git://github.com/paulboone/ticgit.git ``` ## 从远程仓库抓取数据 正如之前所看到的,可以用下面的命令从远程仓库抓取数据到本地: ```bash $ git fetch [remote-name] ``` ## 推送数据到远程仓库 项目进行到一个阶段,要同别人分享目前的成果,可以将本地仓库中的数据推送到远程仓库。实现这个任务的命令很简单:: git push [remote-name] [branch-name]。如果要把本地的 master 分支推送到 origin 服务器上(再次说明下,克隆操作会自动使用默认的 master 和 origin 名字),可以运行下面的命令: ```bash $ git push -u origin master ``` ## 远程仓库的删除和重命名 在新版 Git 中可以用 git remote rename 命令修改某个远程仓库在本地的简短名称,比如想把 pb 改成 paul,可以这么运行: ```bash $ git remote rename pb paul $ git remote origin paul ``` 注意,对远程仓库的重命名,也会使对应的分支名称发生变化,原来的 pb/master 分支现在成了 paul/master。 碰到远端仓库服务器迁移,或者原来的克隆镜像不再使用,又或者某个参与者不再贡献代码,那么需要移除对应的远端仓库,可以运行 git remote rm 命令: ```bash $ git remote rm paul $ git remote origin ``` 内容来源:https://www.python-xp.com/