git 基本操作指令

1,713 阅读5分钟

单人团队 Git 基操

《Git 团队协作 - 第五章》笔记

image.png

创建 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

分支管理

image.png

  • 列出本地分支 git branch --list

  • 列出所有分支 git branch --all

  • 列出远程分支 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 中的更改必须先进行暂存,然后再保存至仓库 image.png

  • 将选中的已更改文件添加至你的 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 文件。

  • 全局配置忽略文件规则

image.png

# 指定全局配置文件的路径
$ git config --global core.excludesfile ~/.gitignore
# 然后编辑其中的路径配置
  • 项目配置忽略文件规则(推荐)
    • (1) 在项目根目录创建一个名为 .gitignore 的文件。
    • (2) 每行一个文件名,写上所有你一定不希望 Git 添加到仓库中的文件。你可以使用确切的
    • 文件名或通配符(如 *.swp)。 (3) 使用 add 和 commit 命令将 .gitignore 文件添加到你的仓库。

展示单个提交详情

使用 show 命令显示单个提交的日志消息和文本 diff $ git show fa04c30

commit fa04c309e3bb8de33f77c54c1f6cc46dc520c2ca
Author: emmajane <emma@emmajane.net>
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在远程服务器中移除指定名称的分支

下面是在本章中列出的最佳实践。

  • 总是在开始工作前定义好你要做的事情。这将会帮助你决定分支的名称,以及你想要从 哪个分支开始工作。
  • 当你在自己的分支上进行修改时,可以将其中一些修改或所有修改添加至暂存区。这能 够帮助你确保一个提交只包含相关的工作。
  • 无论你是在本地新建仓库还是克隆一个仓库,你总是可以在代码托管系统上创建一个新 的项目,然后通过在本地仓库中添加一个新的远程来上传你的工作。
  • 清理任务应该在你完成每行工作后进行。你可以将工单分支并入主分支,然后删除分支 的本地和远程副本。