欢迎光临
我们一直在努力

Git Commands

建站超值云服务器,限时71元/月

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 user@server:/path.git
$ git clone git://github.com/schacon/grit.git mygrit
3. 基本操作

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

(1) 添加

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

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

(2) 提交

“git commit -m ” 命令将暂存区的快照提交到代码仓库。

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

$ 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 …” to update what will be committed)
# (use “git checkout — …” to discard changes in working directory)
#
# modified: readme
#

# Untracked files:
# (use “git add …” to include in what will be committed)
#
# install
no 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 readme

diff –git a/readme b/readme
index e69de29..df8285e 100644
— a/readme
+++ b/readme
@@ -0,0 +1,2 @@
+1111111111111111111
+ #p#副标题#e#(5) 撤销

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

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

$ 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 -p

commit c11364da1bde38f55000bc6dea9c1dda426c00f9
Author: Q.yuhen
Date: Sun Jul 18 15:53:55 2010 +0800

b

0 files changed, 0 insertions(+), 0 deletions(-)

diff –git a/install b/install
new file mode 100644
index 0000000..e69de29

commit 784b289acc8dccd1d2d9742d17f586ccaa56a3f0
Author: Q.yuhen
Date: Sun Jul 18 15:33:24 2010 +0800

a

0 files changed, 0 insertions(+), 0 deletions(-)

diff –git a/readme b/readme
new file mode 100644
index 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 log

commit 6abac48c014598890c6c4f47b4138f6be020e403
Author: Q.yuhen
Date: Sun Jul 18 15:53:55 2010 +0800

b2

commit 784b289acc8dccd1d2d9742d17f586ccaa56a3f0
Author: Q.yuhen
Date: Sun Jul 18 15:33:24 2010 +0800

a #p#副标题#e#(8) 查看

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

$ git show readme
$ git show HEAD^ readme
(9) 标签

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

$ git tag v0.9

$ git tag
v0.9

$ git show v0.9
commit 3fcdd49fc0f0a45cd283a86bc743b4e5a1dfdf5d
Author: Q.yuhen
Date: Sun Jul 18 14:53:55 2010 +0800

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

$ git log v0.9

commit 3fcdd49fc0f0a45cd283a86bc743b4e5a1dfdf5d
Author: Q.yuhen
Date: Sun Jul 18 14:53:55 2010 +0800

a
4. 工作分支

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

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

$ git branch yuhen

$ git checkout yuhen
Switched to branch ‘yuhen’

$ git branch
master
* yuhen
使用 “git chekcout -b ” 一次完成分支创建和切换操作。

$ git checkout -b yuhen
Switched to a new branch ‘yuhen’

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

$ git checkout master
Switched to branch ‘master’

$ git merge yuhen
Updating 6abac48..7943312
Fast-forward
0 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 abc.txt

$ git branch -d yuhen
Deleted branch yuhen (was 7943312).

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

5. 服务器

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

$ git clone git@192.168.1.202:/git.server/project1 # SSH
完成克隆后,可以用 origin 来代替服务器地址。使用 “git remote” 命令查看相关信息。

$ git remote
origin

$ 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 remote
origin
project1

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

$ git pull origin master
$ git push origin master
(3) 要提交标签到服务器,需要额外操作。

$ git push origin –tags
6. 管理

检查损坏情况。

$ git fsck
清理无用数据。

$ git gc

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » Git Commands
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址