git 基本操作

作者: zsh2517 分类: 未分类 发布时间: 2021-07-07 21:51

Git

组织结构

首先看右侧的三个,本地仓库、暂存区和工作区

工作区:顾名思义,进行工作的区域,实际上相当于整个目录内除了 .git 目录之外的其他全部文件和文件夹。实际上就相当于没有处于 git 管理下的项目的根目录,只是处于 git 管理下之后,这个目录就被叫做工作区了

暂存区:一个临时的区域,用于暂时地存放更改,随时可以把改动添加从工作区到暂存区,或从暂存区移除。也可以将暂存区的内容进行提交(暂存区就像购物车一样,平时想买的东西(写完的改动)就可以放进去(add 添加),然后一次性的下单(commit 提交))。需要注意的是暂存区放进去的是改动(放入的时候的快照),而非文件的引用,也就是说,把 readme.txt 放入后继续修改 readme.txt 不会影响暂存区的内容

提交:每次提交都是一次类似于快照的操作,对于有变动的文件,git 保存了这个文件提交时刻(即暂存区内)的镜像(参考这才是真正的Git——Git内部原理揭秘! | 机器之心 (jiqizhixin.com)

仓库:提交记录按照树状形成的一个集合。包含了全部的提交记录(可以是只有一个分支,也可以是多个分支)

仓库与仓库之间,操作是基于提交的,比如 push 将提交推送到远程,或者是 fetch 从远程拉取提交。

不考虑工作区的话,本地仓库和远程仓库实际上没有太大的区别,远程仓库也不一定是必须要在 GitHub GitLab 等平台上 托管,甚至直接是一个普通的 ssh 服务器,或者是本地的另一个目录。

区别更多的是网络仓库是没有直接提交的,而本地仓库可以从暂存区提交到本地仓库。

同样也可以直接用 git clone 克隆一个本地的仓库的一个克隆出来

操作

Git 基本命令 – 简书 (jianshu.com)

初始设置

用户名和邮箱是提交记录的凭证,git 提交记录是和用户名邮箱关联的

用户名和邮箱

git config --global user.name username
git config --global user.email example@example.com
[user]
        email = zsh@zsh2517.com
        name = zsh2517

代理

http

[http]
    proxy = http://127.0.0.1:17090

[https]
    proxy = https://127.0.0.1:17090

ssh

Host github.com
    HostName github.com
    User git
    IdentityFile C:\Users\USER\.ssh\id_rsa
    ProxyCommand 'C:\Program Files\Git\mingw64\bin\connect.exe' -S 127.0.0.1:17090 %h %p github.com 22

暂存区

添加到 暂存区

git add xxxx

从暂存区删除

git rm --cache 文件名

从本地库中删除(即不再被追踪)

git rm file.txt

提交

git commit [-m "message"]

追加提交

git commit --amend

分支

新建分支

git branch new_branch

切换分支

git checkout another_branch

其中,新建和切换可以由一个命令完成

git checkout -b new_branch

删除本地分支

git branch -d new_branch

合并分支(比如将 dev 合并到 master)

git checkout master
git merge dev

如果遇到冲突(例子来自官方)

$ git merge iss53
Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.

$ git status
On branch master
You have unmerged paths.
  (fix conflicts and run "git commit")

Unmerged paths:
  (use "git add <file>..." to mark resolution)

    both modified:      index.html

no changes added to commit (use "git add" and/or "git commit -a")

仓库

推送到远程仓库

git push origin master

推送到不同的分支(本地的 A 推送到 远程的 B)

$ git pull <远程库名> <本地分支A>:<远程分支B>

可以通过 git push -u origin A:B 创建对应关系

从远程仓库拉取

$ git pull <远程库名> <远程分支名>:<本地分支名>  

状态

查看当前状态

git status

日志

git log

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注