当前位置:文档之家› Git学习笔记(简易版)

Git学习笔记(简易版)

Git学习笔记(简易版)
Git学习笔记(简易版)

2.1 Git 基础- 取得项目的Git 仓库

取得项目的Git 仓库

有两种取得Git 项目仓库的方法。第一种是在现存的目录下,通过导入所有文件来创建新的Git 仓库。第二种是从已有的Git 仓库克隆出一个新的镜像仓库来。

在工作目录中初始化新仓库

要对现有的某个项目开始用Git 管理,只需到此项目所在的目录,执行:

$ git init

初始化后,在当前目录下会出现一个名为 .git 的目录,所有Git 需要的数据和资源都存放

在这个目录中。不过目前,仅仅是按照既有的结构框架初始化好了里边所有的文件和目录,但我们还没有开始跟踪管理项目中的任何一个文件。(在第九章我们会详细说明刚才创建的.git目录中究竟有哪些文件,以及都起些什么作用。)

如果当前目录下有几个文件想要纳入版本控制,需要先用git add命令告诉Git 开始对这些文件进行跟踪,然后提交:

$ git add *.c

$ git add README

$ git commit -m 'initial project version'

稍后我们再逐一解释每条命令的意思。不过现在,你已经得到了一个实际维护着若干文件的Git 仓库。

从现有仓库克隆

如果想对某个开源项目出一份力,可以先把该项目的Git 仓库复制一份出来,这就需要用到git clone命令。如果你熟悉其他的VCS 比如Subversion,你可能已经注意到这里使用的是clone而不是checkout。这是个非常重要的差别,Git 收取的是项目历史的所

有数据(每一个文件的每一个版本),服务器上有的数据克隆之后本地也都有了。实际上,即便服务器的磁盘发生故障,用任何一个克隆出来的客户端都可以重建服务器上的仓库,回到当初克隆时的状态(虽然可能会丢失某些服务器端的挂钩设置,但所有版本的数据仍旧还在,有关细节请参考第四章)。

克隆仓库的命令格式为git clone [url]。比如,要克隆Ruby 语言的Git 代码仓库Grit,可以用下面的命令:

$ git clone git://https://www.doczj.com/doc/a59281346.html,/schacon/grit.git

这会在当前目录下创建一个名为grit的目录,其中包含一个.git的目录,用于保存下载下来的所有版本记录,然后从中取出最新版本的文件拷贝。如果进入这个新建的grit目录,你会看到项目中的所有文件已经在里边了,准备好后续的开发和使用。如果希望在克隆的时候,自己定义要新建的项目目录名称,可以在上面的命令末尾指定新的名字:

$ git clone git://https://www.doczj.com/doc/a59281346.html,/schacon/grit.git mygrit

唯一的差别就是,现在新建的目录成了mygrit,其他的都和上边的一样。

Git 支持许多数据传输协议。之前的例子使用的是git://协议,不过你也可以用http(s)://或者user@server:/path.git表示的SSH 传输协议。我们会在第四章详细介绍所有这些协议在服务器端该如何配置使用,以及各种方式之间的利弊。2.2 Git 基础- 记录每次更新到仓库

记录每次更新到仓库

现在我们手上已经有了一个真实项目的Git 仓库,并从这个仓库中取出了所有文件的工作

拷贝。接下来,对这些文件作些修改,在完成了一个阶段的目标之后,提交本次更新到仓库。

请记住,工作目录下面的所有文件都不外乎这两种状态:已跟踪或未跟踪。已跟踪的文件是指本来就被纳入版本控制管理的文件,在上次快照中有它们的记录,工作一段时间后,它们的状态可能是未更新,已修改或者已放入暂存区。而所有其他文件都属于未跟踪文件。它们既没有上次更新时的快照,也不在当前的暂存区域。初次克隆某个仓库时,工作目录中的所有文件都属于已跟踪文件,且状态为未修改。

在编辑过某些文件之后,Git 将这些文件标为已修改。我们逐步把这些修改过的文件放到暂存区域,直到最后一次性提交所有这些暂存起来的文件,如此重复。所以使用Git 时的文件状态变化周期如图2-1 所示。

图2-1. 文件的状态变化周期

检查当前文件状态

要确定哪些文件当前处于什么状态,可以用git status命令。如果在克隆仓库之后立即执行此命令,会看到类似这样的输出:

$ git status

On branch master

nothing to commit, working directory clean

这说明你现在的工作目录相当干净。换句话说,所有已跟踪文件在上次提交后都未被更改过。此外,上面的信息还表明,当前目录下没有出现任何处于未跟踪的新文件,否则Git 会在

这里列出来。最后,该命令还显示了当前所在的分支是master,这是默认的分支名称,实际是可以修改的,现在先不用考虑。下一章我们就会详细讨论分支和引用。

现在让我们用vim 创建一个新文件README,保存退出后运行git status会看到该

文件出现在未跟踪文件列表中:

$ vim README

$ git status

On branch master

Untracked files:

(use "git add ..." to include in what will be committed)

README

nothing added to commit but untracked files present (use "git add" to track)

在状态报告中可以看到新建的README文件出现在“Untracked files”下面。未跟踪的文件

意味着Git在之前的快照(提交)中没有这些文件;Git 不会自动将之纳入跟踪范围,除非你明明白白地告诉它“我需要跟踪该文件”,因而不用担心把临时文件什么的也归入版本管理。不过现在的例子中,我们确实想要跟踪管理README 这个文件。

跟踪新文件

使用命令git add开始跟踪一个新文件。所以,要跟踪README 文件,运行:

$ git add README

此时再运行git status命令,会看到README 文件已被跟踪,并处于暂存状态:$ git status

On branch master

Changes to be committed:

(use "git reset HEAD ..." to unstage)

new file: README

只要在“Changes to be committed”这行下面的,就说明是已暂存状态。如果此时提交,

那么该文件此时此刻的版本将被留存在历史记录中。你可能会想起之前我们使用git init 后就运行了git add命令,开始跟踪当前目录下的文件。在git add后面可以指明要跟踪的文件或目录路径。如果是目录的话,就说明要递归跟踪该目录下的所有文件。(译注:

其实git add的潜台词就是把目标文件快照放入暂存区域,也就是add file into staged area,同时未曾跟踪过的文件标记为需要跟踪。这样就好理解后续add 操作的实际意义了。)

暂存已修改文件

现在我们修改下之前已跟踪过的文件benchmarks.rb,然后再次运行status命令,会看到这样的状态报告:

$ git status

On branch master

Changes to be committed:

(use "git reset HEAD ..." to unstage)

new file: README

Changes not staged for commit:

(use "git add ..." to update what will be committed)

(use "git checkout -- ..." to discard changes in working directory)

modified: benchmarks.rb

文件benchmarks.rb出现在“Changes not staged for commit”这行下面,说明已跟

踪文件的内容发生了变化,但还没有放到暂存区。要暂存这次更新,需要运行git add命令(这是个多功能命令,根据目标文件的状态不同,此命令的效果也不同:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决

状态等)。现在让我们运行git add将benchmarks.rb 放到暂存区,然后再看看git status的输出:

$ git add benchmarks.rb

$ git status

On branch master

Changes to be committed:

(use "git reset HEAD ..." to unstage)

new file: README

modified: benchmarks.rb

现在两个文件都已暂存,下次提交时就会一并记录到仓库。假设此时,你想要在benchmarks.rb里再加条注释,重新编辑存盘后,准备好提交。不过且慢,再运行git status看看:

$ vim benchmarks.rb

$ git status

On branch master

Changes to be committed:

(use "git reset HEAD ..." to unstage)

new file: README

modified: benchmarks.rb

Changes not staged for commit:

(use "git add ..." to update what will be committed)

(use "git checkout -- ..." to discard changes in working directory)

modified: benchmarks.rb

怎么回事?benchmarks.rb文件出现了两次!一次算未暂存,一次算已暂存,这怎么可能呢?好吧,实际上Git 只不过暂存了你运行git add命令时的版本,如果现在提交,

那么提交的是添加注释前的版本,而非当前工作目录中的版本。所以,运行了git add之后又作了修订的文件,需要重新运行git add把最新版本重新暂存起来:

$ git add benchmarks.rb

$ git status

On branch master

Changes to be committed:

(use "git reset HEAD ..." to unstage)

new file: README

modified: benchmarks.rb

忽略某些文件

一般我们总会有些文件无需纳入Git 的管理,也不希望它们总出现在未跟踪文件列表。通

常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。我们可以创建一个名为.gitignore的文件,列出要忽略的文件模式。来看一个实际的例子:

$ cat .gitignore

*.[oa]

*~

第一行告诉Git 忽略所有以.o或.a结尾的文件。一般这类对象文件和存档文件都是编译过程中出现的,我们用不着跟踪它们的版本。第二行告诉Git 忽略所有以波浪符(~)结尾的文件,许多文本编辑软件(比如Emacs)都用这样的文件名保存副本。此外,你可能

还需要忽略log,tmp或者pid目录,以及自动生成的文档等等。要养成一开始就设置好.gitignore文件的习惯,以免将来误提交这类无用的文件。

文件.gitignore的格式规范如下:

?所有空行或者以注释符号#开头的行都会被Git 忽略。

?可以使用标准的glob 模式匹配。

?匹配模式最后跟反斜杠(/)说明要忽略的是目录。

?要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。

所谓的glob 模式是指shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任意字符;[abc]匹配任何一个列在方括号中的字符(这个例子要么匹配一个a,要么匹配一个b,要么匹配一个c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如[0-9]表示匹配所有0 到9 的数字)。

我们再看一个.gitignore文件的例子:

# 此为注释–将被 Git 忽略

# 忽略所有 .a 结尾的文件

*.a

# 但 lib.a 除外

!lib.a

# 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO

/TODO

# 忽略 build/ 目录下的所有文件

build/

# 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

doc/*.txt

# ignore all .txt files in the doc/ directory

doc/**/*.txt

A **/ pattern is available in Git since version 1.8.2.

查看已暂存和未暂存的更新

实际上git status的显示比较简单,仅仅是列出了修改过的文件,如果要查看具体修改了什么地方,可以用git diff命令。稍后我们会详细介绍git diff,不过现在,它已经能回答我们的两个问题了:当前做的哪些更新还没有暂存?有哪些更新已经暂存起来准备好了下次提交?git diff会使用文件补丁的格式显示具体添加和删除的行。

假如再次修改README文件后暂存,然后编辑benchmarks.rb文件后先别暂存,运行status命令将会看到:

$ git status

On branch master

Changes to be committed:

(use "git reset HEAD ..." to unstage)

new file: README

Changes not staged for commit:

(use "git add ..." to update what will be committed)

(use "git checkout -- ..." to discard changes in working directory)

modified: benchmarks.rb

要查看尚未暂存的文件更新了哪些部分,不加参数直接输入git diff:

$ git diff

diff --git a/benchmarks.rb b/benchmarks.rb

index 3cb747f..da65585 100644

--- a/benchmarks.rb

+++ b/benchmarks.rb

@@ -36,6 +36,10 @@ def main

@commit.parents[0].parents[0].parents[0]

end

+ run_code(x, 'commits 1') do

+ https://www.doczj.com/doc/a59281346.html,mits.size

+ end

+

run_code(x, 'commits 2') do

log = https://www.doczj.com/doc/a59281346.html,mits('master', 15)

log.size

此命令比较的是工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存起来的变化内容。

若要看已经暂存起来的文件和上次提交时的快照之间的差异,可以用git diff --cached 命令。(Git 1.6.1 及更高版本还允许使用git diff --staged,效果是相同的,但更好

记些。)来看看实际的效果:

$ git diff --cached

diff --git a/README b/README

new file mode 100644

index 0000000..03902a1

--- /dev/null

+++ b/README2

@@ -0,0 +1,5 @@

+grit

+ by Tom Preston-Werner, Chris Wanstrath

+ https://www.doczj.com/doc/a59281346.html,/mojombo/grit

+

+Grit is a Ruby library for extracting information from a Git repository

请注意,单单git diff不过是显示还没有暂存起来的改动,而不是这次工作和上次提交之间的差异。所以有时候你一下子暂存了所有更新过的文件后,运行git diff后却什么也没有,就是这个原因。

像之前说的,暂存benchmarks.rb 后再编辑,运行git status会看到暂存前后的两个版本:

$ git add benchmarks.rb

$ echo '# test line' >> benchmarks.rb

$ git status

On branch master

Changes to be committed:

(use "git reset HEAD ..." to unstage)

modified: benchmarks.rb

Changes not staged for commit:

(use "git add ..." to update what will be committed)

(use "git checkout -- ..." to discard changes in working directory)

modified: benchmarks.rb

现在运行git diff看暂存前后的变化:

$ git diff

diff --git a/benchmarks.rb b/benchmarks.rb

index e445e28..86b2f7c 100644

--- a/benchmarks.rb

+++ b/benchmarks.rb

@@ -127,3 +127,4 @@ end

main()

##pp Grit::GitRuby.cache_client.stats

+# test line

然后用git diff --cached查看已经暂存起来的变化:

$ git diff --cached

diff --git a/benchmarks.rb b/benchmarks.rb

index 3cb747f..e445e28 100644

--- a/benchmarks.rb

+++ b/benchmarks.rb

@@ -36,6 +36,10 @@ def main

@commit.parents[0].parents[0].parents[0]

end

+ run_code(x, 'commits 1') do

+ https://www.doczj.com/doc/a59281346.html,mits.size

+ end

+

run_code(x, 'commits 2') do

log = https://www.doczj.com/doc/a59281346.html,mits('master', 15)

log.size

提交更新

现在的暂存区域已经准备妥当可以提交了。在此之前,请一定要确认还有什么修改过的或新建的文件还没有git add过,否则提交的时候不会记录这些还没暂存起来的变化。所以,每次准备提交前,先用git status看下,是不是都已暂存起来了,然后再运行提交命令git commit:

$ git commit

这种方式会启动文本编辑器以便输入本次提交的说明。(默认会启用shell 的环境变量$EDITOR所指定的软件,一般都是vim 或emacs。当然也可以按照第一章介绍的方式,使用git config --global core.editor命令设定你喜欢的编辑软件。)

编辑器会显示类似下面的文本信息(本例选用Vim 的屏显方式展示):

# Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # On branch master

# Changes to be committed:

# new file: README

# modified: benchmarks.rb

#

~

~

~

".git/COMMIT_EDITMSG" 10L, 283C

可以看到,默认的提交消息包含最后一次运行git status的输出,放在注释行里,另外开头还有一空行,供你输入提交说明。你完全可以去掉这些注释行,不过留着也没关系,多少能帮你回想起这次更新的内容有哪些。(如果觉得这还不够,可以用-v选项将修改差异

的每一行都包含到注释中来。)退出编辑器时,Git 会丢掉注释行,将说明内容和本次更新提交到仓库。

另外也可以用-m 参数后跟提交说明的方式,在一行命令中提交更新:

$ git commit -m "Story 182: Fix benchmarks for speed"

[master 463dc4f] Story 182: Fix benchmarks for speed

2 files changed,

3 insertions(+)

create mode 100644 README

好,现在你已经创建了第一个提交!可以看到,提交后它会告诉你,当前是在哪个分支

(master)提交的,本次提交的完整SHA-1 校验和是什么(463dc4f),以及在本次提交中,有多少文件修订过,多少行添改和删改过。

记住,提交时记录的是放在暂存区域的快照,任何还未暂存的仍然保持已修改状态,可以在下次提交时纳入版本管理。每一次运行提交操作,都是对你项目作一次快照,以后可以回到这个状态,或者进行比较。

跳过使用暂存区域

尽管使用暂存区域的方式可以精心准备要提交的细节,但有时候这么做略显繁琐。Git 提供

了一个跳过使用暂存区域的方式,只要在提交的时候,给git commit加上-a选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过git add步骤:$ git status

On branch master

Changes not staged for commit:

(use "git add ..." to update what will be committed)

(use "git checkout -- ..." to discard changes in working directory)

modified: benchmarks.rb

no changes added to commit (use "git add" and/or "git commit -a") $ git commit -a -m 'added new benchmarks'

[master 83e38c7] added new benchmarks

1 files changed, 5 insertions(+)

看到了吗?提交之前不再需要git add文件benchmarks.rb 了。

移除文件

要从Git 中移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域

移除),然后提交。可以用git rm命令完成此项工作,并连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中了。

如果只是简单地从工作目录中手工删除文件,运行git status时就会在“Changes not staged for commit”部分(也就是未暂存清单)看到:

$ rm grit.gemspec

$ git status

On branch master

Changes not staged for commit:

(use "git add/rm ..." to update what will be committed)

(use "git checkout -- ..." to discard changes in working directory)

deleted: grit.gemspec

no changes added to commit (use "git add" and/or "git commit -a")

然后再运行git rm记录此次移除文件的操作:

$ git rm grit.gemspec

rm 'grit.gemspec'

$ git status

On branch master

Changes to be committed:

(use "git reset HEAD ..." to unstage)

deleted: grit.gemspec

最后提交的时候,该文件就不再纳入版本管理了。如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项-f(译注:即force 的首字母),以防误删除文件后丢失修改的内容。

另外一种情况是,我们想把文件从Git 仓库中删除(亦即从暂存区域移除),但仍然希望保

留在当前工作目录中。换句话说,仅是从跟踪清单中删除。比如一些大型日志文件或者一堆.a编译文件,不小心纳入仓库后,要移除跟踪但不删除文件,以便稍后在.gitignore 文件中补上,用--cached选项即可:

$ git rm --cached readme.txt

后面可以列出文件或者目录的名字,也可以使用glob 模式。比方说:

$ git rm log/\*.log

注意到星号*之前的反斜杠\,因为Git 有它自己的文件模式扩展匹配方式,所以我们不用shell 来帮忙展开(译注:实际上不加反斜杠也可以运行,只不过按照shell 扩展的话,

仅仅删除指定目录下的文件而不会递归匹配。上面的例子本来就指定了目录,所以效果等同,但下面的例子就会用递归方式匹配,所以必须加反斜杠。)。此命令删除所有log/目录下扩展名为.log的文件。类似的比如:

$ git rm \*~

会递归删除当前目录及其子目录中所有~结尾的文件。

移动文件

不像其他的VCS 系统,Git 并不跟踪文件移动操作。如果在Git 中重命名了某个文件,仓库中存储的元数据并不会体现出这是一次改名操作。不过Git 非常聪明,它会推断出究竟发生了什么,至于具体是如何做到的,我们稍后再谈。

既然如此,当你看到Git 的mv命令时一定会困惑不已。要在Git 中对文件改名,可以这么做:

$ git mv file_from file_to

它会恰如预期般正常工作。实际上,即便此时查看状态信息,也会明白无误地看到关于重命名操作的说明:

$ git mv README.txt README

$ git status

On branch master

Changes to be committed:

(use "git reset HEAD ..." to unstage)

renamed: README.txt -> README

其实,运行git mv就相当于运行了下面三条命令:

$ mv README.txt README

$ git rm README.txt

$ git add README

如此分开操作,Git 也会意识到这是一次改名,所以不管何种方式都一样。当然,直接用git

mv轻便得多,不过有时候用其他工具批处理改名的话,要记得在提交前删除老的文件名,再添加新的文件名。

2.3 Git 基础- 查看提交历史

查看提交历史

在提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,可以使用git log 命令查看。

接下来的例子会用我专门用于演示的simplegit 项目,运行下面的命令获取该项目源代码:git clone git://https://www.doczj.com/doc/a59281346.html,/schacon/simplegit-progit.git

然后在此项目中运行git log,应该会看到下面的输出:

$ git log

commit ca82a6dff817ec66f44342007202690a93763949

Author: Scott Chacon

Date: Mon Mar 17 21:52:11 2008 -0700

changed the version number

commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7

Author: Scott Chacon

Date: Sat Mar 15 16:40:33 2008 -0700

removed unnecessary test code

commit a11bef06a3f659402fe7563abf99ad00de2209e6

Author: Scott Chacon

Date: Sat Mar 15 10:31:28 2008 -0700

first commit

默认不用任何参数的话,git log会按提交时间列出所有的更新,最近的更新排在最上面。看到了吗,每次更新都有一个SHA-1 校验和、作者的名字和电子邮件地址、提交时间,最后缩进一个段落显示提交说明。

git log有许多选项可以帮助你搜寻感兴趣的提交,接下来我们介绍些最常用的。

我们常用-p选项展开显示每次提交的内容差异,用-2则仅显示最近的两次更新:

$ git log -p -2

commit ca82a6dff817ec66f44342007202690a93763949

Author: Scott Chacon

Date: Mon Mar 17 21:52:11 2008 -0700

changed the version number

diff --git a/Rakefile b/Rakefile

index a874b73..8f94139 100644

--- a/Rakefile

+++ b/Rakefile

@@ -5,5 +5,5 @@ require 'rake/gempackagetask'

spec = Gem::Specification.new do |s|

https://www.doczj.com/doc/a59281346.html, = "simplegit"

- s.version = "0.1.0"

+ s.version = "0.1.1"

s.author = "Scott Chacon"

s.email = "schacon@https://www.doczj.com/doc/a59281346.html,

commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7 Author: Scott Chacon Date: Sat Mar 15 16:40:33 2008 -0700

removed unnecessary test code

diff --git a/lib/simplegit.rb b/lib/simplegit.rb index a0a60ae..47c6340 100644

--- a/lib/simplegit.rb

+++ b/lib/simplegit.rb

@@ -18,8 +18,3 @@ class SimpleGit

end

end

Eclipse中git的基本使用

一、安装E G I T插件 二、使用EGIT前的配置 三、新建GIT仓库 四、配置.gitignore文件 五、查看历史记录 六、推送远程仓库 七、远程GIT仓库 八、解决推送冲突 九、重置功能 一、安装EGIT插件 现在的eclipse一般都自带了,如果没有,使用EclipseMarketplace,搜索EGit 二、使用EGIT前的配置 配置个人信息,最重要的是https://www.doczj.com/doc/a59281346.html,和user.email Preferences>Team>Git>Configuration addEntry 三、新建GIT仓库 新建hh_monitor项目 File>Team>ShareProject选择GIT 创建仓库后,在$ProjectWorks\hh_monitor目录下的.git文件夹,就是git的仓库地址。 和CVS、SVN不同,GIT不会在每一个目录下建立版本控制文件夹,仅在根目录下建立仓库。 同时,eclipse中的project也建立git版本控制,此时未创建分支,处于NO-HEAD状态

文件夹中的符号””表示此文件夹处于untracked状态,这样就成功创建GIT 仓库。 四、配置.gitignore文件 配置.gitignore,排除不需要提交的文件。 此时我们尝试做一次提交,Team->Commit 如上图所示,Author和Committer会默认为Git配置的用户信息。 下面的Files窗口中可以看到此次提交的文件,其中有非常多带有work的文件,此时,在我们的project中链接的work也被GIT默认到版本控制中了。 work下面的文件不需要进行版本控制的,我们可以通过配置.gitignore来排除这这个文件夹。 打开Navigator窗口,在project根目录中添加.gitignore文件,将需要排除控制的目录写入.gitignore文件中。 再次尝试commit,需要提交的文件已经被过滤。 首次提交后,会自动生成master分支 然后在com.hh中新建一个文件,可以看到图标依然是问号,处于untracked状态,即git没有对此文件进行监控。 通过Team->Addtoindex可以将文件加入git索引,进行版本监控 PS:可以看到图标显示也有了变化(EGIT中只要Commit就可以默认将untracked的文件添加到索引再提交更新,不需要分开操作) 也可以通过Team->Untrack将文件从索引控制中排除。 将此次新增的文件commit到仓库中,文件将处于unmodified状态,或者说,这就是一种staged状态 然后修改文件的内容,文件将处于modified状态 五、查看历史记录 Team->Showinhistory可以查看版本历史提交记录 可以选择对比模式 六、推送远程仓库

Git使用教程

Git使用教程 原文出处:涂根华的博客 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统。 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。 Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是 一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。 三:在windows上如何安装Git? msysgit是 windows版的Git,如下: 需要从网上下载一个,然后进行默认安装即可。安装完成后,在开始菜单里面找 到“Git –> Git Bash”,如下: 会弹出一个类似的命令窗口的东西,就说明Git安装成功。如下:

安装完成后,还需要最后一步设置,在命令行输入如下: 因为Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识。 注意:git config –global 参数,有了这个参数,表示你这台机器上所有的Git 仓库都会使用这个配置,当然你也可以对某个仓库指定的不同的用户名和邮箱。四:如何操作? 一:创建版本库。

Git 常用命令速查

一、Git 常用命令速查 git push origin :分支名删除远程库分支 git branch 查看本地所有分支 git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支 git branch -r 查看远程所有分支 git commit -am "init" 提交并且加注释 git remote add origin git@192.168.1.119:ndshow git push origin master 将文件给推到服务器上 git remote show origin 显示远程库origin里的资源 git push origin master:develop git push origin master:hb-dev 将本地库与服务器上的库进行关联 git checkout --track origin/dev 切换到远程dev分支 git branch -D master develop 删除本地库develop git checkout -b dev 建立一个新的本地分支dev git merge origin/dev 将分支dev与当前分支进行合并 git checkout dev 切换到本地dev分支 git remote show 查看远程库 git add . 目录下所有的文件 git rm 文件名(包括路径) 从git中删除指定文件 git clone git://https://www.doczj.com/doc/a59281346.html,/schacon/grit.git 从服务器上将代码给拉下来 git config --list 看所有用户 git ls-files 看已经被提交的 git rm [file name] 删除一个文件 git commit -a 提交当前repos的所有的改变 git add [file name] 添加一个文件到git index git commit -v 当你用-v参数的时候可以看commit的差异 git commit -m "This is the message describing the commit" 添加commit信息git commit -a -a是代表add,把所有的change加到git index里然后再commit git commit -a -v 一般提交命令 git log 看你commit的日志 git diff 查看尚未暂存的更新 git rm a.a 移除文件(从暂存区和工作区中删除) git rm --cached a.a 移除文件(只从暂存区中删除) git commit -m "remove" 移除文件(从Git中删除) git rm -f a.a 强行移除修改后文件(从暂存区和工作区中删除) git diff --cached 或$ git diff --staged 查看尚未提交的更新 git stash push 将文件给push到一个临时空间中 git stash pop 将文件从临时空间pop下来 --------------------------------------------------------- git remote add origin git@https://www.doczj.com/doc/a59281346.html,:username/Hello-World.git

git、gerrit的使用方法和规范方案

git、gerrit的使用方法和规范 1、新员工git安装环境准备 首先从服务器端 ftp://192.168.31.10/Software/Tool/Git/ (用户名/密码 paypalm/paypalms)获取软件Git-1.9.4-preview20140929 1、默认安装 Git-1.9.4-preview20140929 安装完成后打开git bash编辑器 生成密钥对:ssh-keygen -t rsa 按三次回车键,默认生成路径如下图

将生成的公钥内容在gerrit中进行添加(参考下文gerrit注册使用)每个人不同环境可以添加多个对应的公钥cat ~/.ssh/id_rsa.pub 2、gerrit注册使用 1、申请账号 通过邮件向PPCM@https://www.doczj.com/doc/a59281346.html,发邮件申请,打开gerrit网站 (http://192.168.31.10:8088),登录后在右上角进行setting设置

2、公钥添加 点击SSH Public Keys》Add Key选项进行公钥添加

3、邮箱注册 点击Register New Email 进行邮箱注册,注册后有邮件发送至你的邮箱点开链接重新登录 3、gerrit主要功能介绍 1、常规功能 1、登录gerrit》ALL》open状态,此显示为已推送但还没有入库的所有patch,CR状态栏中绿色对勾代表已评审状态,可以根据计划入库 2、gerrit》ALL》Merged状态表示所有已经进入项目库的patch

3、提交patch后,开发人员可能觉得不太满意会选择放弃,gerrit》ALL》Abandoned 即为已放弃的patch,只有还没有入库的patch才能选择放弃,点击进入patch,橘黄色Abandon即为放弃选项,放弃后的patch依然可以进行还原,如以下操作 橘黄色Restore为还原选项

Git+使用教程

Git 中文教程 介绍 Git --- The stupid content tracker, 傻瓜内容跟踪器。Linus 是这样给我们介绍 Git 的。 Git 是用于 Linux 内核开发的版本控制工具。与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。 Git 的速度很快,这对于诸如Linux kernel 这样的大项目来说自然很重要。 Git 最为出色的是它的合并跟踪(merge tracing)能力。 实际上内核开发团队决定开始开发和使用 Git 来作为内核开发的版本控制系统的时候,世界开源社群的反对声音不少,最大的理由是 Git 太艰涩难懂,从 Git 的内部工作机制来说,的确是这样。但是随着开发的深入,Git 的正常使用都由一些友好的脚本命令来执行,使 Git 变得非常好用,即使是用来管理我们自己的开发项目,Git 都是一个友好,有力的工具。现在,越来越多的著名项目采用 Git 来管理项目开发,例如:wine, U-boot 等,详情看https://www.doczj.com/doc/a59281346.html,/git 作为开源自由原教旨主义项目,Git 没有对版本库的浏览和修改做任何的权限限制。它只适用于 Linux / Unix 平台,没有 Windows 版本,目前也没有这样的开发计划。 本文将以 Git 官方文档Tutorial,core-tutorial和Everyday GIT作为蓝本翻译整理,但是暂时去掉了对 Git 内部工作机制的阐述,力求简明扼要,并加入了作者使用 Git 的过程中的一些心得体会,注意事项,以及更多的例子。建议你最好通过你所使用的 Unix / Linux 发行版的安装包来安装 Git, 你可以在线浏览本文,也可以通过下面的命令来得到本文最新的版本库,并且通过后面的学习用 Git 作为工具参加到本文的创作中来。 $ git-clone https://www.doczj.com/doc/a59281346.html,/git/gittutorcn.git 创建一个版本库:git-init-db 创建一个 Git 版本库是很容易的,只要用命令git-init-db就可以了。现在我们来为本文的写作创建一个版本库: $ mkdir gittutorcn $ cd gittutorcn $ git-init-db git 将会作出以下的回应 defaulting to local storage area 这样,一个空的版本库就创建好了,并在当前目录中创建一个叫 .git 的子目录。你可以用 ls -a 查看一下,并请注意其中的三项内容: ● 一个叫 HEAD 的文件,我们现在来查看一下它的内容:

TortoiseGit用户手册

TortoiseGit用户手册 1.创建本地仓库 选中本地文件夹右键—>Git在这里创建版本库;只在根目录出现一个名为.git的库管理文件夹。建好本地仓库后,需把仓库名发给管理员,管理员配置好远端及权限后,才可推送。 2.克隆远程的版本库 在本地目录右键—>Git克隆,输入远程仓库地址和本地副本目录 3.添加文件及文件夹 在文件夹中右键,选择"Git提交(C)",在提交窗口中选择所有需要提交的文件夹及文件并输入有效的注释。 add添加到暂存区,commit提交到本地仓库,push推送到远端。push是将本地仓库的元素推送到远端,暂存区和未受版本控制的不可被推送。

4.比较版本差异 选中需要查看提交记录的文件或文件夹,右键Git—>显示日志—>选择需要比较差异的两个版本,右键“比较版本差异”。(注意是比较已提交到本地仓库的版本差异,Git的比较差异菜单是比较工作副本和本地仓库的差异) 5.使用分支 5.1分支策略 主分支master:用于发布版本 开发分支develop:日常开发分支需要合并到master分支 临时性分支:功能分支feature、预发布分支release、修复bug分支fixbug. 功能分支从develop中分支出来,开发完成后再合并入develop后即可删除,名字采用feature-* 的形式命名。 预发布分支在正式颁布前,需要一个预发布的版本测试。从develop中分支出来,用完后合并到develop分支和master分支。 fixbug分支从master拉出,完成后合并到master并同步到develop分支。 5.2 分支创建 选中需要创建分支的项目,右键—>tortoiseGit—>创建分支。在弹出的窗口输入分支名,并选择合适的基准分支:

gerrit git 常用操作

gerrit/git常用操作 1、代码下载方法 a. 下载整个工程代码: repoinit …… repo sync b. 下载部分模块代码 repoinit …… repo sync + projectPath 2、通过repo 提交代码 a.下载所需修改模块的代码 mkdir Test cd Test repoinit …… repo sync projectName b. 建立新分支:repo start branchName . / repo start branchNameprojectName c. 修改代码 d. git add . (提交所有修改到git缓冲区) / git add + FileName(只提交指定文件) e. git commit -s 格式要求: module: submodule: Message Title Blablabla Message Content Blablablablablablablablabla Ticket: APOLLO-20472 f. repo upload . / repo upload projectName g. 评审代码并submit。 3、直接通过gerrit pick Patch a.在gerrit上打开需要pick的patch b.点击“Cherry Pick To”按钮,在弹出的对话框中输入需要pick到的branch. 注意:如果无法直接pick过来,网页会直接报错,此时则需要按下面的步骤4手动pick,并解决冲突。 c.成功pick之后,会生成一个新的gerrit提交,并自动在Reviewer中加入了原Author,merge 之前让原Author确认。 d.评审代码并submit。 4、Pick冲突解决: 如果在gerrit上直接pick产生冲突,需要手动pick,并解决冲突:

gitlab使用指南

gitlab使用指南 1 gitlab介绍 GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。 GitLab是基于网络的Git仓库管理工具,且具有wiki和issue跟踪功能。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。 GitLab,它使用Ruby语言写成。后来,一些部分用Go语言重写。 2应用特点 1.Web框架使用RubyonRails。 2.基于MIT代码发布协议。 3.需要gitolite协同工作 3优点 GitLab为整个DevOps生命周期提供解决方案 1.管理 统计和分析功能。 GitLab提供统计数据和洞察力,以帮助提高GitLab在组织中的价值。 2.计划 项目计划和管理功能。 使用GitLab灵活的项目管理工具可视化,确定优先级,协调和跟踪进度。 3.创造 源代码以及数据创建和管理功能。 将源代码整合到一个易于管理和控制的分布式版本控制系统中,而不会影响工作流程。GitLab的Git存储库附带分支工具和访问控制,可为项目和代码的协作提供可扩展的单一事实来源。 4.校验 测试,代码质量和持续集成功能。 内置的静态代码分析,代码测试,代码质量,依赖项检查和Review Apps可以更快地发现错

误,提高安全性并缩短反馈周期。自定义您的批准工作流控件,自动测试代码质量,并为每个代码更改启动过渡环境。 GitLab持续集成是下一代测试系统,可以扩展以更快地运行测试。 5.包 Docker容器注册表。 GitLab软件包允许组织将GitLab用作各种常见软件包管理器的专用存储库。用户能够构建和发布程序包,这些程序包可以很容易地作为下游项目中的依赖项使用。 6.发布 应用程序发布和交付功能。 花更少的时间配置工具,而花更多的时间创建工具。无论要部署到一台服务器还是数千台服务器,都可以通过GitLab内置的持续交付和部署来自信,安全地构建,测试和发布代码。 7.配置 应用程序和基础结构配置工具。 使用GitLab Auto DevOps自动执行从构建到部署和监视的整个工作流程。最佳实践模板可帮助您从最小到零的配置开始。然后自定义所有内容,从构建包到CI / CD。 8.监控 应用程序监视和指标功能。 确保应用程序始终响应并可用。 GitLab会收集并显示已部署应用程序的性能指标,因此可以立即知道代码更改如何影响生产环境。 9.安全 安全功能功能。 检查应用程序是否存在安全漏洞,这些漏洞可能导致未经授权的访问,数据泄漏和服务拒绝。GitLab将对应用程序代码执行静态和动态测试,查找已知缺陷并在合并请求中报告这些缺陷,以便可以在合并之前修复它们。安全团队可以使用仪表板来获得项目和组的高级视图,并在需要时启动补救过程。 4运行gitlab gitlab-ctl start

GIT使用操作指南

GIT使用说明GIT使用说明

说明 本文档只是日常工作中一些使用步骤的简单归纳,旨在帮助大家快速用上GIT,如 有疏漏,请大家发邮件yuxiao.qiao@https://www.doczj.com/doc/a59281346.html,,会及时进行改进,谢谢。文档简介 1.安装支持中文文件名的Git 命令行软件包MsysGit。 2.在MsysGit 中生成用来访问Git 版本控制库的公钥数据。 3.安装Git 图形界面客户端软件TortoiseGit。 4.配置TortoiseGit。 5.在服务器中新建版本库。 6.TortoiseGit使用简介。

目录 1.安装MSYSGIT (3) 2.生成SSH 密钥 (7) 2.1.Linux系统 (7) 2.2.Windows操作系统 (8) 2.3.添加ssh文件 (9) 3.安装TORTOISEGIT (11) 4.配置TORTOISEGIT (12) 5.新建版本库 (14) 6.TORTOISEGIT使用 (15) 6.1.Clone版本库 (16) 6.2.设置参数 (17) 6.3.新增文件 (18) 6.4.修改文件 (23) 6.5.删除文件 (28)

GIT 使用指南1.安装MsysGit 1.下载安装程序,下载地址: https://www.doczj.com/doc/a59281346.html,/files/Git-1.8.1.2-preview20130201.exe 2.双击安装软件,进入安装页面,单击“next”,在以下页面中设置软件安装路 径。 3.配置命令行快捷方式,在安装中会出现设置如何与Windows 的文件浏览器结 合的界面,设置成“可在目录上点右键直接进入该目录的Git 命令行”,如 下图所示:

Git学习笔记

本节先简单介绍Git的使用与操作, 然后再介绍TortoiseGit 的使用与操作. Git是SVN以后的新一代的版本控制系统/协议. 适合于大规模的开源软件多人协作的开发. 有一个总仓库(如GitHub,CSDN,OSchina等提供), 每个客户端都有一个本地仓库(这个本地仓库有点对应于SVN的服务端仓库), 以及一个可以看见的本地项目. 让我们想想,至少需要有哪些功能.以GitHub为例,首先,必须得有一个线上仓库(Repository), 这首先得新建一个仓库. 要创建仓库,必须得先注册账号. 请参考: 创建GitHub技术博客全攻略: https://www.doczj.com/doc/a59281346.html,/renfufei/article/details/37725057 然后,登录GitHub, 在右上角找到New Repository 或者加号下拉按钮(+),点击进入新建仓库页面: https://https://www.doczj.com/doc/a59281346.html,/new, 如下图所示: 依次填写仓库名,以及其他信息后,点击"Create repository" 按钮,即可创建一个在线仓库. 因为这个仓库是挂在你的账号下的,所以可以是任意合法的字符,只要和你的其他仓库不冲突即可. 仓库创建成功后,就会进入仓库预览页面, 如下图所示:

然后,我们可以点击右边的HTTPS 链接, 上方的文本框里面就显示了HTTPS 协议下的仓库访问地址, 可以点进去,全选,也可以点击右边的复制按钮复制到剪贴板. 例如,刚刚创建的项目访问路径是: https://https://www.doczj.com/doc/a59281346.html,/cncounter/LispGentleIntro.git 是一个以https:// 开始,以 .git 结尾的URL,根据提示,叫做clone URL. 好了,仓库创建完成,可以进入下一步了. 如果你偏爱命令行,那么可以简单参考下这一小节. 否则,请往下翻,直接 看TortoiseGit使用与操作 2.1 克隆项目(clone ...) Win+R 快捷键打开运行对话框,输入cmd回车, 在cmd 中(其实在GitBash中也可以), cd 切换到存放git项目的目录, 如: [plain]view plain copy

git简单入门教程

安装完成后,在命令行输入: $ git config --global https://www.doczj.com/doc/a59281346.html, "Your Name" $ git config --global user.email "email@https://www.doczj.com/doc/a59281346.html," 选择一个合适的地方,创建一个空目录: $ mkdir learngit $ cd learngit $ pwd /Users/michael/learngit 通过git init命令把这个目录变成Git可以管理的仓库: $ git init Initialized empty Git repository in /Users/michael/learngit/.git/ 编写一个readme.txt文件,一定要放到learngit目录下(子目录也行), 因为这是一个Git仓库,放到其他地方Git再厉害也找不到这个文件。内容如下: Git is a version control system. Git is free software. 修改的过程 第一步,用命令git add告诉Git,把文件添加到仓库://可以一次添加多个文件,然后分一次提交就行了 $ git add readme.txt 第二步,用命令git commit告诉Git,把文件提交到仓库: $ git commit -m "wrote a readme file" [master (root-commit) cb926e7] wrote a readme file 1 file changed, 2 insertions(+) create mode 100644 readme.txt git status 命令可以让我们时刻掌握仓库当前的状态 git diff 能看看具体修改了什么内容 git log命令显示从最近到最远的提交日志 如果嫌输出信息太多,看得眼花缭乱的, 可以试试加上--pretty=oneline $ git log --pretty=oneline

Git版本控制的安装使用指南

1. 概述 Git是基于Linux内核开发的分布式版本控制/软件配置管理软件,与CVS、Subversion 等集中式版本控制软件不同,Git采用分布式管理,不需要服务器端软件即可运行。Git速度很快,并且具有很出色的合并追踪能力。很多有名的软件开发都使用Git来进行版本控制,其中有Linux内核、https://www.doczj.com/doc/a59281346.html,服务器和OLPC内核开发等。 作为开源软件的代表,Git不对版本库的浏览和修改作任何的权限限制,因此只能采用其他工具实现权限管理,如gitosis、gitolite、CodeBeamer MR。 原本Git的使用只限于Linux/Unix,由于Cygwin、msysgit、TortoiseGit等GUI工具的出现,在Windows平台的使用逐渐成熟。 2. Git安装 2.1 安装Git 安装Git作为客户端,运行客户端可通过Git Bash(Git的命令行)或Git GUI操作。Windows下使用Git-1.7.8-preview20111206.exe,安装要点如下:

上述图片所示选项,似乎也不确定,网上帖子安装教程各种选项都有。安装完后,点击桌面Git Bash启动,执行命令pwd查看默认进入的文件目录,执行下面命令:mkdir .ssh (注意文件名前有.),即在默认目录下建立.ssh文件夹。修改环境变量,桌面右击我的电脑, 在属性中选择高级选项,左击环境变量,在系统变量中选择新建或编辑

下面列出一些问题的解决方法: a. Git Bash中ls不能显示中文目录(可直接打开编辑):在 git/etc/git-completion.bash中增加一行: alias ls='ls --show-control-chars --color=auto',注意引号为中文单引号,重启Git Bash b. Git commit不能提交中文注释:修改git/etc/inputrc中对应的行: set output-meta on set convert-meta off c. git log无法显示中文注释,在git/etc/profile中增加一行: export LESSCHARSET=iso8859 安装完后,需要在Git Bash中注册本人信息: git config --global https://www.doczj.com/doc/a59281346.html, Your Name git config --global user.email your@email.address 在服务端,即Ubuntu,安装Git: sudo apt-get install git-core git-doc 3. Gitolite安装

GIT使用入门详细教程

GIT使用入门 Part 1 第一章基本原理 git是一个版本控制系统。官方的解释是:版本控制(Revision control)是一种软 件工程技巧,籍以在开发的过程中,确保由不同人所编辑的同一档案都得到更新。按我的白话文解释就是:一群志同道合的人身处祖国各地,希望来合作开发一个 项目,假设这个项目是使用c语言写的(当然用任何语言都可以的)。那么大家怎么合作呢?用信件?效率太低。用邮件,不好实现多人沟通。用google group吧,可开发阶段中的源代码没法科学管理。用自建的网站吧,需要人力物 力财力来支撑阿。 这个时候版本控制系统就派上用场了。它可以让一个团队里的不同的人在不同地点、不同时间开发和改进同一个项目,并且在大部分的时间里,版本控制系统会聪明的帮你把不同的人在不同地点不同时间修改的代码融合到项目中去。(当然在一些特殊的情况,还是需要人去决定到底哪些代码需要加入到项目中,这个在后面讨论不迟,先让大家对版本控制有一个好印象,呵呵) 知道了版本控制系统的优点之后,下面就要具体实践和体验了。建议你选用的版本控制系统包括: rcs,cvs,svn,git,Mercurial,Bazzar等等。 当然git,Mercurial和Bazzar都是属于分布式版本控制系统。 下面是一些网友对于这些版本控制系统评论的只言片语: 1)svk配合svn可以实现分布式的版本控制。 2) 我是从SVN转到Git下的。我想Git的优势是速度飞快,谁用谁知道! 3) git的确是最快的,bzr慢的要死 4) SVN 在windows 下有TortoiseSVN 5) git 有Windows 版本,在google code 上的项目。https://www.doczj.com/doc/a59281346.html,/p/msysgit/ 6) 大家可以试试国内提供的git服务。https://www.doczj.com/doc/a59281346.html, 那么,简单地说,Git 究竟是怎样的一个系统呢?请注意,接下来的内容非常重要,若是理解了Git 的思想和基本的工作原理,用起来就会知其所以然,游刃

TortoiseGit使用入门教程

TortoiseGit入门教程 --参考资料:TortoiseGit帮助文档 边城浪子 二O一七年元月二十日 目录 1、关于版本控制 .................................................... 错误!未定义书签。 2、TortoiseGit安装:.......................................... 错误!未定义书签。 2、TortoiseGit文件夹图标说明: ...................... 错误!未定义书签。 3、克隆远程库 ........................................................ 错误!未定义书签。 4、对文件进行修改 ................................................ 错误!未定义书签。 5、提交更改。 ........................................................ 错误!未定义书签。 6、push推送变更到库............................................ 错误!未定义书签。 7、从远程库更新 .................................................... 错误!未定义书签。 8、与远程库同步 .................................................... 错误!未定义书签。 9、解决冲突 ............................................................ 错误!未定义书签。 10、TortoiseGitMegar........................................... 错误!未定义书签。 11、查看本地文件与基础文件的差异 ................... 错误!未定义书签。 12、查看别人的修改............................................... 错误!未定义书签。 13、查看文件的所有修改者................................... 错误!未定义书签。 14、导出某一版本的文件....................................... 错误!未定义书签。 15、慎用Clean Up ................................................. 错误!未定义书签。

git基本操作命令

GIT日常操作命令 1、git三种状态 已提交(committed)已修改(modified)已暂存(staged) 2、获取项目的git仓库 git init//从当前目录初始化 git clone gitosis@192.168.2.4:soul/soul //从现有仓库克隆 3、配置git仓库相关信息 git config https://www.doczj.com/doc/a59281346.html, "yayun.tian" git config user.email yayun.tian@https://www.doczj.com/doc/a59281346.html, ….... 4、检查当前文件状态 git status 5、跟踪新文件 git add gir add --all//一次性跟踪当前目录全部文件注:可以创建一个名为.gitignore 的文件,列出要忽略的文件模式,例如: # – 此为注释将被git 忽略 *.a # 忽略所有.a 结尾的文件 !lib.a # 但lib.a 除外 /TODO # 仅仅忽略项目根目录下的TODO 文件,不包括subdir/TODO build/ # 忽略build/ 目录下的所有文件 doc/*.txt # 会忽略doc/notes.txt 但不包括doc/server/arch.txt 6、移除文件 git rm //移除暂存区的内容而且工作目录也连带删除注:如果仅仅想删除暂存区可以加上cached选项 — 7、提交 先用git diff --color 查看确认修改 git commit -a -m“comment”//comment代表此次修改的注释 git commit --amend //修改最后一次提交 如果忘记暂存某些文件就提交了,可以暂存后使用amend再次提交

Git菜鸟学习教程

Git菜鸟教程 作为一个Git的新手。写这份教程也是我自己学习和摸索git的过程,其中基于Git进行合作开发的模式参考了CVS,应该是很初级的合作模式。但是当前自己也只能做到这一步了。教程所述都是自己通过试验验证的。至少可以满足公司基本的合作开发。教程写完后,谢欣说可以放到blog与大家共享。我觉得是个不错的主意。一方面我觉得这个文档应该可以给git 的新手一些帮助,另一方面也欢迎git的大牛指点。这里要感谢《Git中文教程》的作者。还有概述中关于git的优点描述拷贝了网络上某位大牛的原话,但是拷贝的出处也是转载的,就在这里谢谢那位我不知名大牛了。 下面就开始了。 1.概述 对于软件版本管理工具,酷讯决定摒弃CVS而转向Git了。 为什么要选择Git?你真正学会使用Git时,你就会觉得这个问题的回答是非常自然的。然而当真正需要用文字来回答时,却觉得文字好像不是那么够用。咳,该则么回答呢? 其实,关键的问题不在于如何回答这个问题。问题的关键是公司已经决定使用它了。那么,我们的程序员们!请开动你们的浏览器,请拿出你的搜索引擎工具,去自己发掘答案吧。在这里,我只能给你们一个最朦胧的感觉。 Git和CVS、SVN不同,是一个分布式的源代码管理工具。Linux内核的代码就是用Git 管理的。它很强,也很快。它给我们带来的直接好处有: 1.傻瓜都会的初始化,git init,git commit-a,就完了。对于随便写两行代码就要放到代码管理工具里的人来说,再合适不过。也可以拿git做备份系统,或者同步两台机器的文档,都很方便。 2.绝大部分操作在本地完成,不用和集中的代码管理服务器交互,终于可以随时随地大胆地check in代码了。只有最终完成的版本才需要向一个中心的集中的代码管理服务器提交。 3.每次提交都会对所有代码创建一个唯一的commit id。不像CVS那样都是对单个文件分别进行版本的更改。所以你可以一次性将某次提交前的所有代码check出来,而不用考虑到底提交过那些文件。(其实SVN也可以做到这点) 4.branch管理容易多了,无论是建立新的branch,还是在branch之间切换都一条命令完成,不需要建立多余的目录。 5.branch之间merge时,不仅代码会merge在一起,check in历史也会保留,这点非常重要。 6.…太多了 当然,Git也会带给我们一些困难,首先,你想要使用好git,就要真正明白它的原理,理解它的观念,对以那些CVS的熟手来说,改变你已经固有的纯集中式源代码管理的观念尤为重要,同时也会让你觉得有些困难。在使用git的初期,你可能会觉得有些困难,但等你逐渐明白它时,你绝对会喜欢上它。这是一定的,就像我问你“喜欢一个温吞如水、毫无感觉的主妇,还是喜欢一个奔放如火,让你爱的痴狂恨的牙痒的情人”一样毋庸置疑。 下面,就让我们进入学习Git之旅… 请记住,这只是一个非常简单而且初级的教程,想要成为git的专家,需要各位同事不断的自己深入挖掘。 2.Git基础命令 2.1创建Git库—git-init

Git的使用说明

Git的使用说明 2011.6.18 一,git的简单介绍 git是一个快速可扩充的分布式版本控制系统。 Git的绝大部分操作在本地完成,不用和集中的代码管理服务器交互,本地提交为commit,待完成一部分工作觉得有把握提交到服务器则是push。终于可以随时随地大胆地check in代码了。只有最终完成的版本才需要向一个中心的集中的代码管理服务器提交。 Git的分支管理branch管理容易多了,无论是建立新的branch,还是在branch之间切换都一条命令完成,不需要建立多余的目录。 二,git的个人本地使用及操作 1,创建Git库 cd 源码目录 git init #初始化在源码目录内生成一个.git的目录 2,注册用户信息(网上资料说是必需注册才能使用git工具,局域网内可不注册,直接用主机名,如pengwufeng@ubuntu) git config https://www.doczj.com/doc/a59281346.html, XXX 用户名 git config user.email XXX 用户邮箱 git config –list #查看用户信息 3,向git库中添加或删除文件 git add XX #加单个文件 git add . #加所有 4,向版本库提交变化 git commit #提交(系统会默认让用户添加提交信息) git commit –m “XXXX”#直接添加简单提交信息 git status #查看项目状态 git log #查看版本信息 git log –p #查看版本信息并显示每次修改的diff git show sdjf974654dd…. #查看指定版本信息 #(show后面为每次提交系统自动生成的一串哈希值) git show sdji97 #一般只使用版本号的前几个字符即可 5,撤销与恢复 git reset git reset --hard #回到原来编辑的地方 #(同样适用于团队对于其他人的修改恢复)git reset --hard sdv143kvf…... #可回到指定的版本 #(hard后面为每次提交系统自动生成的一串哈希值)

git安装和配置图文教程

Git的安装和配置步骤 1.运行GitExtensions241SetupComplete.msi,在出现的对话框中点击run 2.进入欢迎页面单击next 3.进入Installation Scope界面选择Install for all users of this machine单击next

4.进入Required Software界面,勾选Install MsysGit和Install KDiff,单击next 5.进入选择安装目录界面,按默认路径,单击next 6.进入Custom Setup界面,按默认设置,单击next

7.进入Select SSH Clinet界面,选择OpenSSH,单击next 8.开始安装,单击Install 9.KDiff3安装,进入许可证协议界面,单击‘我接受’

10.进入选择组件页面,按默认设置,单击下一步 11.选择安装路径,按默认设置,单击下一步 12.勾选Install for all users,单击下一步

13.是否创建开始菜单中的快捷方式,勾选不要创建快捷方式,单击安装 14.完成安装向导,单击完成 15.进入Git Setup Wizard界面,单击next

16.进入Select Components界面,按默认设置,单击next 17.进入Adjusting your PATH environment选择Use Git Bash Only,单击next 18.进入Configuring the line ending conversions,按默认设置,单击next

git使用指南

Git使用指南 Li Yanrui v0.1,20080728 liyanrui.m2@https://www.doczj.com/doc/a59281346.html,

前言 Git是什么 非常简单地说,Git是一个快速、可扩展的分布式版本控制系统,它具有极为丰富的命令集,对内部系统提供了高级操作和完全访问。所谓版本控制系统(Version Control System),从狭义上来说,它是软件项目开发过程中用于储存我们所写的代码所有修订版本的软件,但事实上我们可以将任何对项目有帮助的文档交付版本控制系统进行管理。 2005年,Torvalds开始着手开发Git是为了作为一种过渡方案来替代BitKeeper,后者之前一直是Linux内核开发人员在使用的版本控制工具,当时由于自由软件社区中的许多人觉得BitKeeper的使用许可证并不适合自由软件社区的工作,因此Linus决定着手开发许可证更为自由灵活的版本控制系统。尽管最初Git的开发是为了辅助Linux内核开发的过程,但是现在很多其他自由软件项目中也使用了Git实现代码版本管理,譬如,https://www.doczj.com/doc/a59281346.html,项目、许多https://www.doczj.com/doc/a59281346.html,的项目、Ruby项目等。 为什么使用版本控制系统 版本控制系统是为懒人准备的,它让懒人们比那些善于备份文档的勤劳人拥有更干净的文件系统以及更多的可以活着的时间。 本文档主要内容 在第1章中讲述如何使用Git管理自己的个人文档,主要是初步熟悉Git的诸多概念及其日常基本命令的使用。第2章中主要讲述如何基于Git实现多人协作的项目开发模式,以此扭转当前实验室成员在项目研发中各自为政或不能有效沟通的现状。第3章讲述如何利用Git强大的项目分支管理功能实现良好风格的项目协同开发模式。第4章为Git使用之FAQ,用于记载在本实验室推广使用Git过程中诸位同学所遇到的一些细节问题。

相关主题
文本预览
相关文档 最新文档