打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
(转载)Git Commands

1. 系统设置

通常情况下,我们只需简单设置用户信息和着色即可。

$ git config --global user.name "Q.yuhen"$ git config --global user.email qyuhen@abc.com$ git config --global color.ui true 


可以使用 "--list" 查看当前设置。

$ git config --list


2. 初始化

创建项目目录,然后执行 "git init" 初始化。这会在项目目录创建 ".git" 目录,即为元数据信息所在。

$ git init


通常我们还需要创建一个忽略配置文件 ".gitignore",并不是什么都需要加到代码仓库中的。

$ cat > .gitignore << end> *.[oa]> *.so> *~> !a.so> test> tmp/> end


如果作为 Server 存在,那么可以忽略工作目录,以纯代码仓库形式存在。

$ git --bare init


在客户端,我们可以调用 "clone" 命令克隆整个项目。支持 SSH / HTTP/ GIT 等协议。

$ git clone ssh://user@server:3387/git/myproj$ git clone git://github.com/schacon/grit.git mygrit


3. 基本操作

Git 分为 "工作目录"、"暂存区"、"代码仓库" 三个部分。

(1) 添加

文件通过 "git add <file>" 被添加到暂存区,如此暂存区将拥有一份文件快照。

$ git add .$ git add file1 file2$ git add *.c


"git add" 除了添加新文件到暂存区进行跟踪外,还可以刷新已被跟踪文件的快照。需要注意的是,被提交到代码仓库的是暂存区的快照,而不是工作目录中的文件。

(2) 提交

"git commit -m <message>" 命令将暂存区的快照提交到代码仓库。

$ git commit -m "message"


在执行 commit 提交时,我们通常会直接使用 "-a" 参数。该参数的含义是:刷新暂存区快照,提交时同时移除被删除的文件。但该参数并不会添加未被跟踪的新文件,依然需要执行 "git add <file>" 操作。

$ git commit -am "message"


(3) 状态

可以使用 "git status" 查看暂存区状态,通常包括 "当前工作分支(Branch)"、"被修改的已跟踪文件(Changed but not updated)",以及 "未跟踪的新文件(Untracked files)" 三部分信息。

$ git status# On branch master# Changed but not updated:#   (use "git add <file>..." to update what will be committed)#   (use "git checkout -- <file>..." to discard changes in working directory)##       modified:   readme## Untracked files:#   (use "git add <file>..." to include in what will be committed)##       installno changes added to commit (use "git add" and/or "git commit -a")


(4) 比较

要比较三个区域的文件差别,需要使用 "git diff" 命令。

使用 "git diff [file]" 查看工作目录和暂存区的差异。
使用 "git diff --staged [file]" 或 "git diff --cached [file]" 查看暂存区和代码仓库的差异。

$ git diff readmediff --git a/readme b/readmeindex e69de29..df8285e 100644--- a/readme+++ b/readme@@ -0,0 +1,2 @@+1111111111111111111+


(5) 撤销

作为代码管理工作,我们随时可以 "反悔"。

使用 "git reset HEAD <filename>" 命令可以取消暂存区的文件快照(即恢复成最后一个提交版本),这不会影响工作目录的文件修改。
使用 "git checkout -- <filename>" 可以使用暂存区快照恢复工作目录文件,工作目录的文件修改被抛弃。

$ git chekcout -- readme


在 Git 中 "HEAD" 表示仓库中最后一个提交版本,"HEAD^" 是倒数第二个版本,"HEAD~2" 则是更老的版本。

我们可以直接 "签出" 代码仓库中的某个文件版本到工作目录,该操作同时会取消暂存区快照。

$ git checkout HEAD^ readme


如果想将整个项目回溯到以前的某个版本,可以使用 "git reset"。可以选择的参数包括默认的 "--mixed" 和 "--hard",前者不会取消工作目录的修改,而后者则放弃全部的修改。该操作会丢失其后的日志。

$ git reset --hard HEAD^


(6) 日志

每次提交都会为整个项目创建一个版本,我们可以通过日志来查看相关信息。

参数 "git log -p" 可以查看详细信息,包括修改的内容。
参数 "git log -2" 查看最后两条日志。
参数 "git log --stat" 可以查看统计摘要。

$ git log --stat -2 -pcommit c11364da1bde38f55000bc6dea9c1dda426c00f9Author: Q.yuhen <qyuhen@hotmail.com>Date:   Sun Jul 18 15:53:55 2010 +0800    b--- 0 files changed, 0 insertions(+), 0 deletions(-)diff --git a/install b/installnew file mode 100644index 0000000..e69de29commit 784b289acc8dccd1d2d9742d17f586ccaa56a3f0Author: Q.yuhen <qyuhen@hotmail.com>Date:   Sun Jul 18 15:33:24 2010 +0800    a--- 0 files changed, 0 insertions(+), 0 deletions(-)diff --git a/readme b/readmenew file mode 100644index 0000000..e69de29


(7) 重做

马有失蹄,使用 "git commit --amend" 可以重做最后一次提交。

$ git commit --amend -am "b2"[master 6abac48] b2 0 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 abc create mode 100644 install$ git logcommit 6abac48c014598890c6c4f47b4138f6be020e403Author: Q.yuhen <qyuhen@hotmail.com>Date:   Sun Jul 18 15:53:55 2010 +0800    b2commit 784b289acc8dccd1d2d9742d17f586ccaa56a3f0Author: Q.yuhen <qyuhen@hotmail.com>Date:   Sun Jul 18 15:33:24 2010 +0800    a


(8) 查看

使用 "git show" 可以查看日志中文件的变更信息,默认显示最后一个版本(HEAD)。

$ git show readme $ git show HEAD^ readme


(9) 标签

可以使用标签(tag)对最后提交的版本做标记,如此可以方便记忆和操作,这通常也是一个里程碑的标志。

$ git tag v0.9$ git tagv0.9$ git show v0.9commit 3fcdd49fc0f0a45cd283a86bc743b4e5a1dfdf5dAuthor: Q.yuhen <qyuhen@hotmail.com>Date:   Sun Jul 18 14:53:55 2010 +0800...


可以直接用标签号代替日志版本号进行操作。

$ git log v0.9commit 3fcdd49fc0f0a45cd283a86bc743b4e5a1dfdf5dAuthor: Q.yuhen <qyuhen@hotmail.com>Date:   Sun Jul 18 14:53:55 2010 +0800    a


4. 工作分支

用 Git 一定得习惯用分支进行工作。

使用 "git branch <name>" 创建分支,还可以创建不以当前版本为起点的分支 "git branch <name> HEAD^"。
使用 "git checkout <name>" 切换分支。

$ git branch yuhen$ git checkout yuhenSwitched to branch 'yuhen'$ git branch  master* yuhen


使用 "git chekcout -b <name>" 一次完成分支创建和切换操作。

$ git checkout -b yuhenSwitched to a new branch 'yuhen'$ git branch  master* yuhen


在分支中完成提交,然后切换回主分支进行合并(git merge)和删除(git branch -d <name>)操作。

$ git checkout masterSwitched to branch 'master'$ git merge yuhenUpdating 6abac48..7943312Fast-forward 0 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 abc.txt$ git branch -d yuhenDeleted branch yuhen (was 7943312).$ git branch* master


附注: 如果当前工作目录有未提交的内容,直接切换到其他分支会将变更一同带入。

5. 服务器

(1) 首先克隆服务器代码仓库。

$ git clone git@192.168.1.202:/git.server/project1 # SSH


完成克隆后,可以用 origin 来代替服务器地址。使用 "git remote" 命令查看相关信息。

$ git remoteorigin$ git remote show origin* remote origin  Fetch URL: ...  Push  URL: ...  HEAD branch: master  Remote branch:    master tracked  Local branch configured for 'git pull':    master merges with remote master  Local ref configured for 'git push':    master pushes to master (up to date)


还可以创建新的 remote 设置。

$ git remote add project1 git@192.168.1.202:/git.server/project1$ git remoteoriginproject1$ git remote rm project1


(2) 在将代码提交(push)到服务器之前,首先要确认相关更新已经合并(merge)到主分支(master)。还应该先从服务器刷新(pull)最新代码,以确保自己的提交不会和别人最新提交的代码冲突。

$ git pull origin master$ git push origin master


(3) 要提交标签到服务器,需要额外操作 (先执行 git push 提交,然后再执行该指令)。

$ git push origin --tags


6. 管理

检查损坏情况。

$ git fsck


清理无用数据。

$ git gc
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Ubuntu下Git 服务器架设
笔记《版本控制之道--使用Git》
Git 常用命令整理
git教程
Git Basics
git干货系列:(五)多人协同工作之分支管理 | 嘟嘟独立博客
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服