Git 常用命令

Git 常用命令

这份笔记记录了我在日常使用 Git 的过程中最常用的几组命令,按操作频率整理成初始化、远程、忽略、提交、推送以及别名设置几个部分。所有命令都保持原样,配图也没有改动。

初始化仓库

在一个新目录下运行以下命令即可初始化本地仓库:

git init

初始化后可以观察 .git 目录下的 config 文件,里面记录了仓库的基本配置和远程信息。

克隆远程仓库

把远程项目拉下来,最常用的就是:

git clone https://adfsasdf.git

克隆完成后就会在本地生成与远程仓库对应的目录结构和 .git 配置。

远程仓库管理

查看远程

查看当前目录下已配置的远程仓库及其地址:

git remote -v

添加远程

为当前仓库注册远程地址,rep1 是起的别名,方便在后续命令里引用完整地址: 

git remote add rep1 git@github.com:Hanzlgit/obsidian.git

建议将主要远程命名为 origin,对图示添加远程后 config 文件会同步记录:

删除远程

如果不需要某个远程,可以用别名删除它:

git remote rm rep1

修改远程地址

保持远程别名不变但切换到另一个仓库:

git remote set-url obsidian git@github.com:Hanzlgit/obsidian.git

重命名远程

如果只是想换一个更容易记的名字,地址保持原样:

git remote rename obsidian bieming1

忽略文件

在仓库根目录创建 .gitignore,列出不想提交的文件夹或文件类型,示例内容如下:

# 忽略特定文件夹
folder_name/
build/
node_modules/
dist/

# 忽略特定文件
*.log
*.tmp

暂存与提交

所有改动先添加到暂存区,再提交到本地仓库,最后再推送到远程。

git add .

添加完成后可以用 git status 看到工作区与暂存区的差异:

git status

本地提交命令如下:

git commit -m "first commit"

推送到远程

把本地分支推送到远程(建议统一使用 origin):

git push obsidian master
git push origin master

配置别名

.git/config 或全局 C:\Program Files\Git\etc\gitconfig 里新增 [alias],把常用命令绑定给简短名字,例如:

[alias]
    go = !git add . && git commit -m 'Auto commit' && git push obsidian master

当命令需要接收参数时,可以使用 shell 函数的形式,注意符号 \ 表示续行:

[alias]
    go = "!f() { \
        if [ -z \"$1\" ]; then \
            git add . && git commit -m \"Auto commit\" && git push obsidian master; \
        else \
            git add . && git commit -m \"$1\" && git push obsidian master; \
        fi \
    }; f"

也可以写成一行,省略换行符后的续行符:

[alias]
    go = "!f() { if [ -z \"$1\" ]; then git add . && git commit -m \"Auto commit\" && git push obsidian master; else git add . && git commit -m \"$1\" && git push obsidian master; fi }; f"

永久设置别名

如果需要在所有仓库共用别名,请在管理员模式下编辑 C:\Program Files\Git\etc\gitconfig,确保 [alias] 区域里统一使用 origin 作为默认远程:

[diff "astextplain"]
    textconv = astextplain
[filter "lfs"]
    clean = git-lfs clean -- %f
    smudge = git-lfs smudge -- %f
    process = git-lfs filter-process
    required = true
[http]
    sslBackend = openssl
    sslCAInfo = C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
[core]
    autocrlf = true  
    fscache = true
    symlinks = false
[pull]
    rebase = false
[credential]
    helper = manager-core
[credential "https://dev.azure.com"]
    useHttpPath = true
[init]
    defaultBranch = master
[alias]
    go = "!f() { \
        if [ -z \"$1\" ]; then \
            git add . && git commit -m \"Auto commit\" && git push origin master; \
        else \
            git add . && git commit -m \"$1\" && git push origin master; \
        fi \
    }; f"