单人团队 Git 基操
《Git 团队协作 - 第五章》笔记
创建 git 版本管理的项目
- 初始化新的项目
mkdir learning-git-for-teams
cd learning-git
git init
复制代码
- 克隆已有的项目
git clone https://gitlab.com/gitforteams/gitforteams.git
- 应该养成经常使用
status
命令的习惯,就像在文 字处理程序中使用保存那么频繁。
git status
- 将仓库中所有文件添加至暂存区
git add --all
- 将所有暂存的文件提交至仓库
git commit -m "Initial import of all project files."
日志输出
- log 命令将会按时间倒序输出仓库中提交消息的完整历史记录
git log
- 最近提交的快速列表
git log --oneline
分支管理
-
列出本地分支
git branch --list
-
列出所有分支
git branch --all
扫描二维码关注公众号,回复: 13435837 查看本文章 -
列出远程分支
git branch --remotes
-
获取更新的列表和所有远程分支的内容
git fetch
-
使用 checkout 命令切换分支
git checkout --track origin/video-lessons
-
创建一个新的开发分支
git checkout master
git branch 1-process_notes
git checkout 1-process_notes
复制代码
推荐一行式
git checkout -b 1-process_notes master
复制代码
在仓库中添加更改
- Git 中的更改必须先进行暂存,然后再保存至仓库
- 将选中的已更改文件添加至你的 Git 仓库
git add README.md process-diagram.png
git add branch-naming-rules.png
- 添加指定路径中的所有文件
git add <*directory_name*>/*
- 添加特定扩展名的所有文件
git add *.svg
- 添加编辑过(或修改过)的文件
git add --update
- 想要更加粗放一些,可以添加 --all 参数,添加所有变更的文件,这是一个非常贪婪的命令!在使用前,应该检查即将添加的文件的列表
git status
git add --all
复制代码
- 交互式地添加到你的 Git 仓库
git add --patch <filename>
移除添加的文件
git reset
可以从暂存区移除添加的文件
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: ch05.asciidoc
$ git reset HEAD ch05.asciidoc
Unstaged changes after reset:
M ch05.asciidoc
复制代码
git 忽略文件
各个项目的推荐配置可查看 gitignore.io,输入项目类型,会自动生成 .gitignore 文件。
- 全局配置忽略文件规则
# 指定全局配置文件的路径
$ git config --global core.excludesfile ~/.gitignore
# 然后编辑其中的路径配置
复制代码
- 项目配置忽略文件规则(推荐)
- (1) 在项目根目录创建一个名为
.gitignore
的文件。 - (2) 每行一个文件名,写上所有你一定不希望 Git 添加到仓库中的文件。你可以使用确切的
- 文件名或通配符(如 *.swp)。 (3) 使用 add 和 commit 命令将
.gitignore
文件添加到你的仓库。
- (1) 在项目根目录创建一个名为
展示单个提交详情
使用 show
命令显示单个提交的日志消息和文本 diff $ git show fa04c30
commit fa04c309e3bb8de33f77c54c1f6cc46dc520c2ca
Author: emmajane <[email protected]>
Date: Sat Oct 25 12:44:39 2014 +0100
Initial import
diff --git a/ch05.asciidoc b/ch05.asciidoc
new file mode 100644
index 0000000..8f82732
--- /dev/null
+++ b/ch05.asciidoc
@@ -0,0 +1,867 @@
+
+=== Verifying Git
+
+Before we dive into using Git, you'll want to check and see which version is installed. For our purposes, Gi
[etc]
复制代码
标签管理
- 为某个提交对象添加一个新的标签 import
$ git tag import *fa04c30*
- 列出所有标签
$ git tag
- 查看带标签的提交
$ git show *import*
远程连接管理
-
列出连接至你当前仓库的远程仓库
$ git remote --verbose
or$ git remote -v
-
添加新的远程仓库连接
$ git remote add <别名> <远程仓库地址>
- 使用 push 命令上传分支
$ git push
在没有上游分支时,你将会得到一条错误消息
fatal: The current branch 1-process_notes has no upstream branch
To push the current branch and set the remote as upstream, use
git push --set-upstream origin 1-process_notes
复制代码
所以一般需要设置一个默认的上游远程连接
- 在上传本地分支时设置上游分支
git push --set-upstream my_gitlab 1-process_notes
一套简单的 GitFlow
- 将工单分支并入主分支
git checkout master
git merge 1-process_notes
复制代码
如果执行合并,可能会弹出一个需要编辑的提交信息,一般使用默认的信息即可
- 再将合并的推送到远程分支
$ git push --set-upstream my_gitlab master
- 删除这个分支的本地副本
$ git branch --delete 1-process_notes
- 一并删除不再需要的远程分支
$ git push --delete *my_gitlab 1-process_notes*
总结
命令 | 用途 |
---|---|
git clone URL | 下载一份远程仓库的副本 |
git init | 将当前目录转换成一个新的 Git 仓库 |
git status | 获取仓库状态报告 |
git add --all | 将所有修改过的文件和新文件添加至仓库的暂存区 |
git commit -m "message" | 将所有暂存的文件提交至仓库 |
git log | 查看项目历史 |
git log --oneline | 查看压缩过的项目历史 |
git branch --list | 列出所有本地分支 |
git branch --all | 列出本地和远程分支 |
git branch --remotes | 列出所有远程分支 |
git checkout --track remote_name/branch | 创建远程分支的副本 |
git checkout BRANCH | 切换到另一个本地分支 |
git checkout -b branch branch_parent | 从指定分支创建一个新分支 |
git add filename(s) | 仅暂存并准备提交指定文件 |
git add --patch filename | 仅暂存并准备提交部分文件 |
git reset HEAD filename | 从暂存区移除提出的文件修改 |
git commit --amend | 使用当前暂存的修改更新之前的提交,并提供一个新的提交消息 |
git show commit | 输出某个提交的详细信息 |
git tag tag commit | 为某个提交对象打上标签 |
git tag | 列出所有标签 |
git show tag | 输出所有带标签提交的详细信息 |
git remote add remote_name URL git push | 创建一个指向远程仓库的引用 |
git remote --verbose | 将当前分支上的修改上传至远程仓库,并列出所有可用远程连接中 fetch 和 push 命令使用的 URL |
git push --set-upstream remote_name branch_local branch_remote | 将本地分支的副本推送至远程服务器 |
git merge branch | 将当前存储在另一分支的提交并入当前分支 |
git push --delete remote_name branch_remote | 在远程服务器中移除指定名称的分支 |
下面是在本章中列出的最佳实践。
- 总是在开始工作前定义好你要做的事情。这将会帮助你决定分支的名称,以及你想要从 哪个分支开始工作。
- 当你在自己的分支上进行修改时,可以将其中一些修改或所有修改添加至暂存区。这能 够帮助你确保一个提交只包含相关的工作。
- 无论你是在本地新建仓库还是克隆一个仓库,你总是可以在代码托管系统上创建一个新 的项目,然后通过在本地仓库中添加一个新的远程来上传你的工作。
- 清理任务应该在你完成每行工作后进行。你可以将工单分支并入主分支,然后删除分支 的本地和远程副本。