codecamp

Git 备忘单

此备忘单总结了常用的 Git 命令行说明以供快速参考。

开始

创建存储库

创建一个新的本地存储库

$ git init [project name]

克隆一个仓库

$ git clone git_url

将存储库克隆到指定目录

$ git clone git_url my_directory

做出改变

在工作目录中显示修改后的文件,为您的下一次提交暂存

$ git status

暂存文件,准备提交

$ git add [file]

暂存所有更改的文件,准备提交

$ git add .

将所有暂存文件提交到版本化历史记录

$ git commit -m "commit message"

将所有跟踪的文件提交到版本化历史记录

$ git commit -am "commit message"

Unstages 文件,保留文件更改

$ git reset [file]

将所有内容恢复到最后一次提交

$ git reset --hard

已更改但未上演的差异

$ git diff

已上演但尚未提交的内容的差异

$ git diff --staged

在指定分支之前应用当前分支的任何提交

$ git rebase [branch]

配置

设置将附加到您的提交和标签的名称

$ git config --global user.name "name"

设置将附加到您的提交和标签的电子邮件地址

$ git config --global user.email "email"

启用 Git 输出的一些着色

$ git config --global color.ui auto

在文本编辑器中编辑全局配置文件

$ git config --global --edit

使用分支

列出所有本地分支机构

$ git branch

列出所有分支,本地和远程

$ git branch -av

切换到一个分支,my_branch,并更新工作目录

$ git checkout my_branch

创建一个名为 new_branch 的新分支

$ git branch new_branch

删除名为 my_branch 的分支

$ git branch -d my_branch

将分支 A 合并到分支 B

$ git checkout branchB
$ git merge branchA

标记当前提交

$ git tag my_tag

观察您的存储库

显示当前活动分支的提交历史

$ git log

显示 branchA 上不在 branchB 上的提交

$ git log branchB..branchA

显示更改文件的提交,即使跨重命名

$ git log --follow [file]

显示 branchA 中不在 branchB 中的内容的差异

$ git diff branchB...branchA

以人类可读的格式显示 Git 中的任何对象

$ git show [SHA]

同步

从那个 Git 远程获取所有分支

$ git fetch [alias]

将远程分支合并到您当前的分支中以使其保持最新状态

$ git merge [alias]/[branch]

将本地分支提交传输到远程存储库分支

$ git push [alias] [branch]

从跟踪远程分支获取并合并任何提交

$ git pull

将另一个分支的一个特定提交合并到当前分支

$ git cherry-pick [commit_id]

远程

添加一个 git URL 作为别名

$ git remote add [alias] [url]

显示您设置的远程存储库的名称

$ git remote

显示远程存储库的名称和 URL

$ git remote -v

删除远程存储库

$ git remote rm [remote repo name]

更改 git repo 的 URL

$ git remote set-url origin [git_url]

临时提交

保存修改和分阶段的更改

$ git stash

列出隐藏文件更改的堆栈顺序

$ git stash list

从存储堆栈顶部写入工作

$ git stash pop

丢弃存储堆栈顶部的更改

$ git stash drop

跟踪路径变化

从项目中删除文件并暂存删除以进行提交

$ git rm [file]

更改现有文件路径并暂存移动

$ git mv [existing-path] [new-path]

显示所有提交日志,并指出任何移动的路径

$ git log --stat -M

忽略文件

/logs/*

!logs/.gitkeep

/# Ignore Mac system files
.DS_store

# Ignore node_modules folder
node_modules

# Ignore SASS config files
.sass-cache

一个.gitignore文件指定了 Git 应该忽略的有意未跟踪的文件

Git 技巧

重命名分支

  • 重命名new_name

    $ git branch -m <new_name>
    
  • 推送和重置

    $ git push origin -u <new_name>
    
  • 删除远程分支

    $ git push origin --delete <old>
    

日志

按内容搜索更改

$ git log -S'<a term in the source>'

显示特定文件随时间的变化

$ git log -p <file_name>

打印出一个很酷的日志可视化

$ git log --pretty=oneline --graph --decorate --all

分支

列出所有分支及其上游

$ git branch -vv 

快速切换到上一个分支

$ git checkout -

只获取远程分支

$ git branch -r

从另一个分支检出单个文件

$ git checkout <branch> -- <file>

提交

重写上次提交消息

$ git commit -v --amend

Git 别名

git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status

另请参阅:更多别名


Git 维护及数据恢复
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Git 与其他系统

Git 参考内容

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }