【Git】Git 常用命令

常用命令

1
2
3
4
5
6
7
8
9
10
11
git init

git remote add origin 远程仓库地址

git add .

git commit -m "..."

git push -u origin master

git pull origin master

在远程分支与本地分支之间建立联系

在本地分支新创建的分支没有与远程分支建立联系,需要使用以下指令建立本地分支与远程分支的联系,之后即可 pull

1
2
3
4
5
git checkout -b dev

git branch --set-upstream-to=origin/dev dev

git pull origin dev

更新远程分支列表

在远程仓库的分支发生变化而本地仓库的分支没有更新时使用

1
2
git remote update origin --prune
git fetch --all

Git 基本原理

工作区域

Git 本地有三个工作区域:

  • 工作目录(Working Directory):平时存放项目代码的地方
  • 暂存区(Stage / Index):用于临时存放你的改动,事实上他只是一个文件,保存即将提交的文件列表信息
  • 资源库(Repository 或 Git Directory):安全存放数据的地方,这里面有你提交到所有版本的数据,其中 head 指向最新放入仓库的版本

如果再加上远程的 git 仓库(Remote Directory),就可以分为四个工作区域。文件在这四个区域之间的转换关系如下:

img

创建工作目录与常用命令

img

文件的四种状态

版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在还不想提交的文件,或者要提交的文件没提交上。

  • Untracked:未跟踪,此文件在文件夹中,但没有加入到git库,不参与版本控制,通过 git add 状态变为 Staged
  • Staged:暂存状态,执行了 git commit 则将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为 Unmodified 状态,执行 git reset HEAD filename 取消暂存,文件状态为Modified
  • Unmodify:文件已入库,未修改,即版本库中的文件快照内容与文件夹中完全一致,这种类型的文件有两种去处,如果他被修改而变为 Modified,如果使用 git rm 移出版本库,则成为 Untracked 文件
  • Modified:文件已修改,仅仅是修改,并没有进行其他操作,这个文件也有两个去处,通过 git add 可进入暂存 Staged 状态,使用 git checkout 则丢弃修改过,返回到 Unmodify 状态,这个 git checkout 即从库中取出文件,覆盖当前修改

查看文件状态

上面说文件有四种状态,通过如下命令可以查看到文件的状态

1
2
3
4
5
6
7
8
9
10
11
# 查看指定文件状态
git status [filename]

# 查看所有文件状态
git status

# 添加所有文件到暂存区
git add .

# 提交暂存区中的内容到本地仓库
git commit -m "消息内容"

各种疑难杂症解决方案

Failed to connect to github.com port 443:connection timed out

这种报错很多是因为使用了梯子所导致的代理问题,解决方案:重新设置本地代理的端口号(Clash里代理端口号为7890)

1
2
git config --global http.proxy http://127.0.0.1:7890 
git config --global https.proxy http://127.0.0.1:7890