当前位置:文档之家› Git使用

Git使用

Git使用
Git使用

Git 使用简介

工欲善其事,必先利其器。本文简要涉及Git基础、安装、配置以及日常使用过程中的常见操作,所有操作均基于Git命令行,当然也可以在流行的编辑器如Eclipse、Idea、Xcode 中已图形化的方式使用Git。

符号约定:说明本文中使用的符号对应的意义

● <>:小于号和大于号表示这是一个变量,使用时应该替换为具体内容

● //:注释语句

Git基础

文件的三种状态

在Git 内都只有三种状态:已提交(committed),已修改(modified)和已暂存(staged)。已提交表示该文件已经被安全地保存在本地数据库中了;已修改表示修改了某个文件,但还没有提交保存;已暂存表示把已修改的文件放在下次提交时要保存的清单中。

由此可以看到Git 管理项目时,文件流转的三个工作区域:Git 的工作目录,暂存区域,以及本地仓库。

基本的Git 工作流程如下:

1、在工作目录中修改某些文件。

2、对修改后的文件进行快照,然后保存到暂存区域。

3、提交更新,将保存在暂存区域的文件快照永久转储到Git 目录中。

所以,可以从文件所处的位置来判断状态:如果是Git 目录中保存着的特定版本文件,就属于已提交状态;如果作了修改并已放入暂存区域,就属于已暂存状态;如果自上次取出后,作了修改但还没有放到暂存区域,就是已修改状态。

分支

在Git 中提交时,会保存一个提交(commit)对象,该对象包含一个指向暂存内容快照的指针,包含本次提交的作者等相关附属信息,包含零个或多个指向该提交对象的父对象指针:首次提交是没有直接祖先的,普通提交有一个祖先,由两个或多个分支合并产生的提交则有多个祖先。

Git 中的分支,其实本质上仅仅是个指向commit 对象的可变指针。Git 会使用master 作为分支的默认名字。在若干次提交后,你其实已经有了一个指向最后一次提交对象的master 分支,它在每次提交的时候都会自动向前移动。

安装Git

windows

到https://git-for-windows.github.io/下载最新版

下载完毕双击安装即可。

安装后,可在需要使用Git的地方右击鼠标,选择Git Bash Here(或Git Bash)即可调出Git 命令行。

PS:其他平台请自行Google

配置

用户信息

第一个要配置的是你个人的用户名称和电子邮件地址。这两条配置很重要,每次Git 提交时都会引用这两条信息,说明是谁提交了更新,所以会随更新内容一起被永久纳入历史记录:

$ git config --global https://www.doczj.com/doc/0f7307751.html, "John Doe"

PS:

1

你所有的项目都会默认使用这里配置的用户信息。如果要在某个特定的项目中使用其他

2

生成SSH 公钥

常用操作

分支

新建分支

语法:git branch

如新建testing分支:git branch testing这会在当前commit对象上新建要给分支

当存在多个分支时Git通过保存一个名为HEAD的特别指针,来标示你当前工作在哪一个分支。

运行git branch 命令,仅仅是建立了一个新的分支,但不会自动切换到这个分支中去,所以当前依然还在master 分支里工作。

切换分支

语法: git checkout

如切换到testing分支

$ git checkout testing

这样HEAD就指向了testing分支

随着每一次的提交,HEAD也会一直向前移动。

PS:可以通过git checkout –b 新建并切换到该分支

删除分支

语法: git branch –d

如删除testing分支

$ git branch –d testing

合并分支

在开发过程中,你可能正工作在dev分支上,这时boss找到你,让你去修复一个bug。此时你就可以新建一个分支去修复这个bug,假设你新建bug01分支。在这个分支上,你很快修复了这个bug,并熟练使用git add、git commit 命令提交该代码,此时你需要将这个补丁添加到dev分支上。此时可以使用git merge 命令。此时你需要先切换到dev分支:git checkout dev,将bug01分支上的代码合并到dev分支上:git merge bug01。

解决冲突

有时候,合并分支并不是那么容易的,在一个团队中,如果其他人和你正在修改同一个文件的内容,后提交的那个人将出现冲突。此时Git将产生冲突的文件列出来,等待你手动的解决冲突。以下是Git显示冲突文件的样式

<<<<<<< HEAD

=======

>>>>>>> testing

可以看到=======隔开的上半部分,是HEAD中的内容,下半部分是testing上的内容。

解决冲突的办法无非是二者选其一或者由你亲自整合到一起。比如你可以通过把这段内容替换为下面这样来解决:

这个解决方案各采纳了两个分支中的一部分内容,而且我还删除了 <<<<<<<,======= 和 >>>>>>> 这些行。

解决冲突后,你需要重新运行git add 和 git commit 命令将这些修改提交到本地

Git仓库。

PS:

分支的其他操作

git branch -r列出远程分支,例如:

#git branch -r

m/master -> origin_apps/m1_2.3.4

origin_apps/hardware/test

origin_apps/m1

origin_apps/m1_2.3.4

origin_apps/master

git branch -a列出本地分支和远程分支,例如:

#git branch -a

* master

newbranch

remotes/m/master -> origin_apps/m1_2.3.4

remotes/origin_apps/hardware/test

remotes/origin_apps/m1

remotes/origin_apps/m1_2.3.4

remotes/origin_apps/master

git branch -d | -D //删除branchname分支,例如

git branch –d testing

拉取远程代码到本地

语法: git fetch

拉取后,远程仓库中的代码存在/上,如拉取远程Git仓库origin上的dev分支上的代码:

$ git fetch origin dev

拉取代码后常见的操作就是合并远程的代码到对应的本地分支上,此时使用

$ git merge origin/dev

PS:

git允许设置本地分支追踪(track)远程分支,使用

$ git branch --set-upstream

name>/

如设置本地master分支追踪远程origin仓库中的dev分支

$ git branch --set-upstream master origin/dev

设置追踪关系后,可以使用git pull命令达到git fetch加git merge的效果,即使用git pull后,Git会拉取(fetch)当前所在分支追踪的远程分支的代码,并自动merge到当前所在分支。当然,若此时发生冲突,你还是需要手动的去解决冲突。关于如何解决冲突,上文已经提及,此处不再赘述。

推送本地代码到远程服务器

在拉取远程Git仓库的代码后,此时所有的文件都是已提交(committed)的状态,此时使用git status命令将显示如下

表示我们的工作目录时clean的。

当我们修改了某个文件并保存(Ctrl+S)后,,此时使用git status,将显示你修改了哪些文件

可以看到此时的文件处于已修改(modified)状态,若想提交这次修改,你需要使用git add 命令将这些文件变为已暂存(staged)状态,再使用git commit命令将这些已暂存状态的文件变为已提交的状态。注意,commit之后,这些文件只是提交到了本地Git仓库,并没有推送(push)到远程Git仓库。若想推送到远程仓库,你需要使用

git push :命令,但通常在一个团队中会有多个人在同时进行开发,所以在你push之前,你通常应该先拉取(fetch)远程Git上最新的代码,并合并(merge)到本地对应分支后再推送(push)到远程Git仓库。如果你忘记拉取了服务器上最新的代码并合并到本地,而直接推送(push),git会拒绝(reject)你的推送,并提示你当前代码落后于Git仓库的版本(当然,如果你觉得远程的Git仓库代码有问题或有错误,此时你不想merge服务器上最新的代码而直接提交本地代码,你可以使用git命令强制本地代码覆盖服务器代码,后面会讲述)。根据上文的叙述,通常在开发过程中,提交代码的步骤通常分为以下几步

git status//查看哪些文件被修改

git add //将修改的文件变为已暂存状态,可以使用git add

///* 提交某目录下的所有修改的文件,或者使用git

//add –A,提交所有修改

git commit –m “comments”//将已暂存状态的文件变为已提交状态,双引号中填

//写本次提交说明

git pull//拉取远程代码并合并到本地,前提是设置了

//track关系

git push//将本地代码推送到远程Git仓库,前提是设置了

//track关系

新建本地项目并推送到远程Git仓库

以上讲的都是在已使用Git管理的项目中操作,那若果有一个没有使用Git管理的项目,想要使用Git管理,该怎么做?,其实很简单。

准备条件:

1、新建一个文件夹作为项目的根目录,如demo

2、在远程服务器上新建一个仓库,并命名,假设新建好的仓库的地址是

https://https://www.doczj.com/doc/0f7307751.html,/johnxue2013/ocdemo.git

3、进入步骤一中新建的文件夹demo,添加需要添加的文件,如

README.md,右击选择git bash here(windows上是这样操作,如果

在mac或者linux上,需要从终端进入)

执行如下命令:

$ git init

$ git status

$ git add README.md

$ git commit -m "first commit"

$ git remote add origin https://https://www.doczj.com/doc/0f7307751.html,/johnxue2013/ocdemo.git $ git push -u origin master

执行后,本地Git仓库的数据,将被推送到远程Git仓库。以上命令中git init会初

始化一个git项目,并新建.git文件,该文件存储仓库的版本等信息。git status命令将显示所有未add或commit 的文件,git add README.md 将README.md 将文件保存到暂存区,git commit -m "first commit" 将文件保存到本地Git仓库,git remote add origin https://https://www.doczj.com/doc/0f7307751.html,/johnxue2013/ocdemo.git添加远

程Git仓库的地址,并将远程仓库命名为origin,git push -u origin master

将本地Git的内容推送到远程Git仓库。此处将推送到远程服务器的master分支。-u

参数意为指定origin远程仓库为默认远程仓库(一个本地Git仓库可以同时和多个远程Git仓库保持同步)

储藏(git stash)

假设一个场景:当你在项目的dev分支上正在开发一个新功能时,突然接到boss说在holiday 分支上有一个bug需要立即修复,但此时你工作在dev分支上,并且你正在开发的功能还没写完,无法使用,不想提交(commit)代码,此时你又需要切换到holiday分支上,你熟练的使用git checkout holiday命令切换到holiday分支,此时你会发现,你切换不过去,Git提示当前分支有未commit的内容,无法切换分支。此时就可以使用git stash。

“储藏”可以获取你工作目录的中间状态——也就是你修改过的被追踪的文件和暂存的变更——并将它保存到一个未完结变更的堆栈中,随时可以重新应用。

git stash 之后你就可以切换到其他分支去工作了,当你在其他分支的工作完成时,可以切换到之前使用git stash的分支,并使用g it stash apply命令,恢复到你离开之前的样子。你也可以多次使用git stash,每一次stash都会存储起来。你可以使用git stash list命令查看所有stash记录。

你也可以使用git stash apply stash@{},去指定恢复哪一次stash。默认情况下git stash apply使用最近一次stash进行恢复。你也可以使用git stash save “coments” 为stash添加注释。

PS:git stash apply只是尝试应用存储的工作,stash的内容仍然在栈上,要移除它使用git stash drop, 你也可以使用git stash pop来重新应用存储,同时将其从栈中移除。移除所有stash 使用git stash clear。

强制本地代码覆盖远程Git代码

该操作比较暴力,应谨慎使用

git push : --force

版本回退

每一次的提交都会产生一个commit ID,只要找到你想回退的版本的commit ID,就可以查看当时的版本。你可以使用git log,查看每一次提交。

图中黄色部分就是commit ID,获取commit ID后,使用

git reset --hard

进行回退,此时的回退只是本地仓库的回退,若要同时回退服务器版本使用

git push HEAD –-force

如git push origin HEAD –-force

忽略文件

在日常开发中,有一些文件可能不需要追踪该文件内容,此时可以忽略该文件。

如果想忽略某些文件或文件夹且该文件或文件夹从未被提交过,可以直接在项目根目录下在git命令行窗口中使用touch .gitignore命令新建一个文件,在该文件中添加想要忽略的文件或文件夹,如忽略项目根目录下的.idea文件夹,则.gitignore文件的内容应该是下面这个样子。

/.idea

PS:有时候不小心提交了不想提交的文件,如某些配置文件。当提交之后,再在.gitignore配置忽略将不起作用,因为该文件只能用作与Untrack Files,也就是从来没有被git记录过的文件(自添加以后,从未add以及commit过的文件)。也就是说一旦add或者commit之后,该文件或者文件夹就处于track file,此时再修改.gitignore当然就不起作用了。此时正确的做法是使用git rm --cached <文件名> 然后修改.gitignore配置忽略,最后git add .gitignore 再git commit –m "注释" 再git push <服务器别名> <本地分支名>:<服务器分支名> 至此服务器将不包含被忽略的文件或者文件夹。

说明: git rm --cached <文件名> 删除的是追踪状态,而不是物理文件;如果你真不想要了,你可以使用直接使用rm 命令删除该文件或文件夹

git使用https方式连接,在命令行模式下记住密码

使用https方式连接进行命令行操作,如git fetch、git push时,经常需要输入用户名和密码,这是一个很不方便的地方,此时可以通过设置让Git记住用户名和密码。

在命令行中输入以下命名并回车

git config credential.helper store

设置后,只要再推送一次,以后就不需要用户名和密码了只要运行后,下次push的时候再输入一次密码,git就会记住。

PS:如果你想要深入Git,请阅读Pro Git。

以上就是全部内容,enjoy Git

2016-2-23 11:54:35

by XueHan

Git使用

Git 使用简介 工欲善其事,必先利其器。本文简要涉及Git基础、安装、配置以及日常使用过程中的常见操作,所有操作均基于Git命令行,当然也可以在流行的编辑器如Eclipse、Idea、Xcode 中已图形化的方式使用Git。 符号约定:说明本文中使用的符号对应的意义 ● <>:小于号和大于号表示这是一个变量,使用时应该替换为具体内容 ● //:注释语句 Git基础 文件的三种状态 在Git 内都只有三种状态:已提交(committed),已修改(modified)和已暂存(staged)。已提交表示该文件已经被安全地保存在本地数据库中了;已修改表示修改了某个文件,但还没有提交保存;已暂存表示把已修改的文件放在下次提交时要保存的清单中。 由此可以看到Git 管理项目时,文件流转的三个工作区域:Git 的工作目录,暂存区域,以及本地仓库。 基本的Git 工作流程如下:

1、在工作目录中修改某些文件。 2、对修改后的文件进行快照,然后保存到暂存区域。 3、提交更新,将保存在暂存区域的文件快照永久转储到Git 目录中。 所以,可以从文件所处的位置来判断状态:如果是Git 目录中保存着的特定版本文件,就属于已提交状态;如果作了修改并已放入暂存区域,就属于已暂存状态;如果自上次取出后,作了修改但还没有放到暂存区域,就是已修改状态。 分支 在Git 中提交时,会保存一个提交(commit)对象,该对象包含一个指向暂存内容快照的指针,包含本次提交的作者等相关附属信息,包含零个或多个指向该提交对象的父对象指针:首次提交是没有直接祖先的,普通提交有一个祖先,由两个或多个分支合并产生的提交则有多个祖先。 Git 中的分支,其实本质上仅仅是个指向commit 对象的可变指针。Git 会使用master 作为分支的默认名字。在若干次提交后,你其实已经有了一个指向最后一次提交对象的master 分支,它在每次提交的时候都会自动向前移动。

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 是什么 Git 是一个快速、可扩展的分布式版本控制系统,它具有极为丰富的命令集,对内部系统提供了高级操作和完全访问。所谓版本控制系统,从狭义上来说,它是软件项目开发过程中用于储存我们所写的代码所有修订版本的软件,但事实上我们可以将任何对项目有帮助的文档交付版本控制系统进行管理。 理论上,Git 可以保存任何文档,但是最善于保存文本文档,因为它本来就是为解决软件源代码(也是一种文本文档)版本管理问题而开发的,提供了许多有助于文本分析的工具。对于非文本文档,Git 只是简单地为其进行备份并实施版本管理。 二、git管理个人文档 比如文档在/home/gitwork/doc目录下,首先切换到该目录下. 2.1 建立仓库 命令:git init 则会显示Initialized empty Git repository in $PROJECT/.git/,这是在该目录下建立了一个.git的隐藏目录,这就是所谓的仓库,不过现在它里面没内容。该目录现在不在是普通的目录,称之为工作树。 2.2 自我介绍 命令如下:

Git config –-global https://www.doczj.com/doc/0f7307751.html, “你的名字” Git config –-global user.email “你的电子邮件” 2.3 生成快照 命令:git add 文件名 文件名可以是多个,这一步只是生成了该要提交文档的快照,该快照被存放在一个临时的存储区域,git称之为索引。 2.4 内容提交 命令:git commit–m “自己输入的版本更新说明” 使用git commit命令可将索引提交至仓库,每次提交意味着版本的一次更新。 2.5 内容忽略 假如你修改了多个文档,又希望其中的一个不被提交,如你在工作树中存在A.txt、b、c.tex、d等文件和子目录,但子目录d不需要提交,则可用git的文档忽略机制,可以将工作树中你不希望接受Git 管理的文档信息写到同一目录下的 .gitignore 文件中。 命令:cd 工作树目录 Echo “d”> .gitignore Git add . Git commit 2.6 查看版本历史 在工作树中,使用 git-log 命令可以查看当前项目的日志,也就是你在使用git-commit 向仓库提交新版本时所属的版本更新信

Eclipse中git的基本使用

一、安装E G I T插件 二、使用EGIT前的配置 三、新建GIT仓库 四、配置.gitignore文件 五、查看历史记录 六、推送远程仓库 七、远程GIT仓库 八、解决推送冲突 九、重置功能 一、安装EGIT插件 现在的eclipse一般都自带了,如果没有,使用EclipseMarketplace,搜索EGit 二、使用EGIT前的配置 配置个人信息,最重要的是https://www.doczj.com/doc/0f7307751.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 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/0f7307751.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/0f7307751.html,:username/Hello-World.git

Git练习题

Git练习题 说明: 本文使用了不同的字体来表示不同类型的文字: 输出:output 输入:input 替换:replaced 一些特殊的符号: $ 表示shell提示符 [text] 表示文字“text”是可选的,你可以输也可以不输 一些典型的例子: $ git --version git version 1.7.1 $ echo Insert your text [here] Insert your text here 访问练习git库的方法: 服务器:https://www.doczj.com/doc/0f7307751.html, (192.168.9.142) 用户:exercise 密码:123456 注:git使用密码访问没有问题,但是使用repo sync下载代码时会要求输入很多次密码,因为每个git库都会要求输入密码。这里我们提供一个简单的方法(在你的机器上操作):1、建立一个新用户(比如叫test) $ sudo useradd -m test 2、切换到该用户 $ sudo su - test 3、把服务器上的exercise用户目录下的.ssh目录拷贝过来 $ scp -r exercise@192.168.9.142:.ssh . 4、测试连接服务器是否不需要密码了 $ ssh exercise@192.168.9.142 如何不需要密码就可以连接上服务器就说明配置已经成功了,你在做下面的练习的时候就不需要输密码了。

练习1: 在你的本机配置git和repo 在这个练习中,我们将在你的本机上配置git和repo环境。包括具体的用户设置(.gitconfig 文件)和gerrit的设置。我们也会下载练习的git库。 步骤1:在~/.gitconfig文件中设置用户名和邮件地址。 1、打开一个终端,运行下面的命令(你可能需要替换一些变量为你希望的值,下同): $ git config --global https://www.doczj.com/doc/0f7307751.html, "FirstName Lastname" $ git config --global user.email youremailaddress@https://www.doczj.com/doc/0f7307751.html, (eg: git config --global user.email scm@https://www.doczj.com/doc/0f7307751.html,) 2、配置你的默认编辑器(设置为vim) $git config --global core.editor vim 你也可以设置为其他你喜欢的编辑器,emacs或nano 3、配置git的颜色 $ git config --global color.ui auto 3、检查你的设置 $ cat ~/.gitconfig 你应该看到类似下面的内容: [user] name = Firstname Lastname email = youremailaddress@https://www.doczj.com/doc/0f7307751.html, [color] ui = auto [core] editor = vim 步骤2:使用repo下载git库。 1、创建一个exercises的目录: $ mkdir ~/exercises 2、进入~/exercises目录 3、用repo下载练习git库: $ repo init –u exercise@https://www.doczj.com/doc/0f7307751.html,:manifest.git $ repo sync 用ls命令查看是否把所有的库都下载下来了(可以和.repo/manifest.xml文件中的project项

Git 19个常用的命令

Git 19个常用的命令 Git 19个常用的命令 1. 超实用 Alias 1 2 3 4 5 6 7 8 alias g="git" alias gb="git branch" alias gco="git checkout" alias gcmsg="git commit -m" alias gamend="git commit --amend -C HEAD" alias gst="git status" alias log="git log --oneline --graph --decorate --color=always" alias logg="git log --graph --all --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(bold white)— %an%C(reset)%C(bold yellow)%d%C(reset)' --abbrev-commit --date=relative" 2. 取回远端 master 与本地 master 分支合并 1 2 3 4 5 6 7 gco master g fetch --all 或者 g fetch origin master g reset --hard origin/master(本地没有修改,所以完全覆盖也没关系) 或者 g rebase origin/master (本地有修改还没push ) 3. 推送分支到远端 假设现在所在的分支是import ,指定推送到远端分支liujin-import 1 g push origin import:liujin-import 假如远端的 liujin-import 分支已经不需要,可以直接覆盖掉 1 g push -f origin import:liujin-import

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/0f7307751.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/0f7307751.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 的文件,我们现在来查看一下它的内容:

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

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,并解决冲突:

git使用及提交规范

Git 版本控制 Git中大部分操作都是针对本地文件和本地数据库,只有在我们平时执行类似克隆(clone)、pull、push等命令时才与远程服务器交互。这样对于开发维护代码库就很安全,因为一旦远程服务器代码丢失仍然可以将本地代码上传到服务器;也会给开发者带来诸多方便,因为将远程代码取到本地后可以随意的修改,一旦修改混乱之后仍然可以恢复到以前版本,即使本地代码被误删除仍然可以重新从服务器取回代码。 下面将针对一些常用使用命令和技巧进行介绍: 一、git提交规范 在commit是,如果有对应PR,请在第一行写上PR号,然后再描述信息(另起行),并把涉及到改动的文件名附上. 具体操作如下(不用git commit -m 填写说明): 1、如果提交全部文件(请先git status确认是否要提交所有改动) 1.1 git commit -a 1.2 在打开的编辑器中(默认为VIM) 第一行填写PR号(顶格写,多个 PR用逗号隔开,要写全),然后再写说明。 1.3 把涉及修改文件路径前的# 去掉,就会提交,不用手工输入文件路径。 1.4 然后ESC 输入:wq退出VIM. 2、如果提交部分文件 2.1 分别git add 要提交的所有文件。 2.2 git commit。 2.3 以后步骤同上。 二、第一次初始配置 1、第一次取出代码到本地需要克隆代码(从服务器取代码到本地),一般如果新建一个本地代码库都需要重新克隆一次代码。 命令:git clone git://服务器代码库地址 2、第一次使用git环境一般应该配置你的用户信息,这样会方便别人与自己查看git提交代码记录。 命令:$ git config --global https://www.doczj.com/doc/0f7307751.html, zhangsan $ git config --global user.email zhang.san@https://www.doczj.com/doc/0f7307751.html, 这里使用的—global,以后的所有项目都默认使用这个配置,这时写入的是用户主目录的git配置文件(跟曲以鹏在邮件里边说的那个“.gitconfig”文件应该是一回事),如果想改变其中一个项目的配置可以去掉—global重新配置如: 命令:$ git config https://www.doczj.com/doc/0f7307751.html, lisi

Git-GitLab讲解

Git 简介及 GitLab 使用 一、Git 简介
Git 和其他版本控制系统的主要差别在于,Git 只关心文件数据的整体是否发生变 化,而大多数其他系统则只关心文件内容的具体差异。 Git 并不保存这些前后变化的差异数据。 实际上, Git 更像是把变化的文件作快照后, 记录在一个微型的文件系统中。每次提交更新时, 它会纵览一遍所有文件的指纹信息并对 文件作一快照, 然后保存一个指向这次快照的索引。 为提高性能, 若文件没有变化, Git 不 会再次保存,而只对上次保存的快照作一链接。 文件的三种状态 对于任何一个文件,在 Git 内都只有三种状态:已提交(committed),已修改 (modified)和已暂存(staged)。已提交表示该文件已经被安全地保存在本地数据库中 了;已修改表示修改了某个文件,但还没有提交保存;已暂存表示把已修改的文件放在下 次提交时要保存的清单中。 由此我们看到 Git 管理项目时,文件流转的三个工作区域:Git 的工作目录,暂存 区域,以及本地仓库。
基本的 Git 工作流程如下: 1. 在工作目录中修改某些文件。 2. 对修改后的文件进行快照,然后保存到暂存区域。 3. 提交更新,将保存在暂存区域的文件快照永久转储到 Git 目录中。 所以,我们可以从文件所处的位置来判断状态:如果是 Git 目录中保存着的特定版 本文件,就属于已提交状态;如果作了修改并已放入暂存区域,就属于已暂存状态;如果 自上次取出后,作了修改但还没有放到暂存区域,就是已修改状态。 工作目录下面的所有文件都不外乎这两种状态: 已跟踪或未跟踪。已跟踪的文件是指 本来就被纳入版本控制管理的文件,在上次快照中有它们的记录,工作一段时间后,它们 的状态可能是未更新,已修改或者已放入暂存区。而所有其他文件都属于未跟踪文件。它

GIT使用操作指南

GIT使用说明GIT使用说明

说明 本文档只是日常工作中一些使用步骤的简单归纳,旨在帮助大家快速用上GIT,如 有疏漏,请大家发邮件yuxiao.qiao@https://www.doczj.com/doc/0f7307751.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/0f7307751.html,/files/Git-1.8.1.2-preview20130201.exe 2.双击安装软件,进入安装页面,单击“next”,在以下页面中设置软件安装路 径。 3.配置命令行快捷方式,在安装中会出现设置如何与Windows 的文件浏览器结 合的界面,设置成“可在目录上点右键直接进入该目录的Git 命令行”,如 下图所示:

几年的Git使用技巧总结

几年的Git使用技巧总结 用git有一年了,下面是我这一年来的git使用总结,覆盖了日常使用中绝大多数的场景。嗯,至少是够用一年了,整理出来分享给大家,不明白的地方可以回复交流。 创建和使用git ssh key 首先设置git的user name和email: git config --global https://www.doczj.com/doc/0f7307751.html, "xxx" git config --global user.email "xxx@https://www.doczj.com/doc/0f7307751.html," 查看git配置: git config --list 然后生成SHH密匙: 查看是否已经有了ssh密钥:cd ~/.ssh 如果没有密钥则不会有此文件夹,有则备份删除 生存密钥: ssh-keygen -t rsa -C "xxx@https://www.doczj.com/doc/0f7307751.html," 按3个回车,密码为空这里一般不使用密钥。 最后得到了两个文件:id_rsa和id_rsa.pub 注意:密匙生成就不要改了,如果已经生成到~/.ssh文件夹下去找。 git变更项目地址 git remote set-url origin git@192.168.6.70:res_dev_group/test.git git remote -v

查看某个文件的修改历史 git log –pretty=oneline 文件名 # 显示修改历史 git show 356f6def9D3fb7f3b9032ff5aa4b9110d4cca87e # 查看更改 git push 时报错 warning: push.default is unset; ‘matching’参数是 Git 1.x 的默认行为,其意是如果你执行 git push 但没有指定分支,它将 push 所有你本地的分支到远程仓库中对应匹配的分支。而Git 2.x 默认的是 simple,意味着执行 git push 没有指定分支时,只有当前分支会被 push 到你使用 git pull 获取的代码。 根据提示,修改git push的行为: git config --global push.default matching 再次执行git push 得到解决。 git submodule的使用拉子项目代码 开发过程中,经常会有一些通用的部分希望抽取出来做成一个公共库来提供给别的工程来使用,而公共代码库的版本管理是个麻烦的事情。今天无意中发现了git的git submodule命令,之前的问题迎刃而解了。 添加 为当前工程添加submodule,命令如下: git submodule add 仓库地址路径 其中,仓库地址是指子模块仓库地址,路径指将子模块放置在当前工程下的路径。 注意:路径不能以 / 结尾(会造成修改不生效)、不能是现有工程已有的目录(不能順利 Clone) 命令执行完成,会在当前工程根路径下生成一个名为“.gitmodules”的文件,其中记录了子模块的信息。添加完成以后,再将子模块所在的文件夹添加到工程中即可。 删除 submodule的删除稍微麻烦点:首先,要在“.gitmodules”文件中删除相应配置信息。然后,执行git rm –cached命令将子模块所在的文件从git中删除。 下载的工程带有submodule

git-flow实践手册v1.1

Git flow 实践手册 参与人员 发布记录 作者简介 Elson,网名小肥鱼,花城原著居民,网络专业科班出身,英文水准估计有美国幼儿园小朋友三成功力,读书时候喜欢参加比赛,没拿过国家级奖项;毕业多年一直在IT行业打滚,曾做过Oracle ERP功能顾问,对企业管理有一定认识;也尝试过带小团队从事外包开发;擅长php,是Zend认证php工程师,另外对Java,python和ruby略有认识。不是技术狂人,不刻意追求系统运行性能。由于性格上喜欢偷懒,所以总希望能用最少的代码实现最多的功能;喜欢事情有条理,所以想尽办法避免一切可能导致情况失控的因素出现;喜欢电子商务,觉得在网上做买卖很cool,很有成就感。现供职于国内某高速成长的电子商务公司,主要从事网站系统编码工作。

一,概述 Git是一个分布式版本控制软件,由Linux的发明人Linus开发并维护,其开发的目的是为了方便成百上千的Linux内核开发人员协同开发。 Git flow是一套根据Vincent Driessen总结的Git最佳实践方法而编写的Git指令快捷命令。它主旨是方便开发人员更容易地使用Git进行版本控制。 二,安装 这里讲解的是如何在Windows上安装Git Flow。所要用到的软件都在附带的附件包里面,其中包涵以下四个文件。 首先安装Git-1.7.4-preview20110204.exe,然后分别把bin.zip文件和git-core.zip文件解压到“X:\Program Files\Git\bin”目录和“X:\Program Files\Git\libexec\git-core”下。这样子就已经把git flow安装到windows上了。 假如以前有使用TortoiseSVN的开发人员刚开始不习惯Git的使用,可以安装Tortoisegit-1.6.5.0-32bit.exe。这是一个类似TortoiseSVN的工具。可以帮助SVN用户过渡到Git上。安装完成后能在右键菜单上看到熟悉的命令。

windows10下git的初级使用方法

windows下git的初级使用方法 一下是个人在windows上的一些小结 安装与配置本地git 1、下载地址:http://msysgit.github.io/ 2、安装选项(MATLAB要求):1)PATH,Use Git from the Windows Command Prompt;2) configuring the line ending conversions,Checkout as-is, commit as-is 3、任意文件夹空白处右键,git bash,进入命令行设置用户名及邮箱 git config --global https://www.doczj.com/doc/0f7307751.html, "Your Name" git config --global user.email "email@https://www.doczj.com/doc/0f7307751.html," 4、右键插件的停用与启用: cmd进入"C:\Program Files (x86)\Git\git-cheetah"目录(64为系统) 停用:regsvr32 /u git_shell_ext64.dll 启用:regsvr32 git_shell_ext64.dll 如果启用无效,可考虑重装git,选择简单菜单,而不是默认的插件(退而求其次的办法。。) GitHub相关设置 1、https://www.doczj.com/doc/0f7307751.html,/,注册账号 2、SSH秘钥:已建立git的文件夹空白处右键git gui,帮助,Show SSH key,generate key, 则会在C:\Users\XXX\.ssh产生对应的秘钥(如果填写了密码,则每次提交或下载都需要密码)。复制内容,进入github网站,登录,添加,title随便填,将key粘贴进去

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/0f7307751.html,/p/msysgit/ 6) 大家可以试试国内提供的git服务。https://www.doczj.com/doc/0f7307751.html, 那么,简单地说,Git 究竟是怎样的一个系统呢?请注意,接下来的内容非常重要,若是理解了Git 的思想和基本的工作原理,用起来就会知其所以然,游刃

git常用命令文档

Git常用命令文档 master分支:主干、正式环境 develop分支: 开发环境 test分支:测试环境 一、创建 复制一个已创建的仓库: $ git clone ssh://user@https://www.doczj.com/doc/0f7307751.html,/repo.git 创建一个新的本地仓库: $ git init 二、本地修改 显示工作路径下已修改的文件: $ git status 显示与上次提交版本文件的不同: $ git diff 把当前所有修改添加到下次提交中: $ git add 提交本地的所有修改: $ git commit -a 提交之前已标记的变化: $ git commit 附加消息提交: $ git commit -m 'message here' 三、提交历史 从最新提交开始,显示所有的提交记录(显示hash,作者信息,提交的标题和时间): $ git log

四、分支与标签 列出所有的分支: $ git branch 切换分支: $ git checkout 创建并切换到新分支: $ git checkout -b 基于当前分支创建新分支: $ git branch 删除本地分支: $ git branch -d 更新与发布 将远程端版本合并到本地版本中: $ git pull origin master 将本地版本发布到远程端: $ git push origin : 删除远程端分支: git push origin --delete 五、合并与重置 将分支合并到当前HEAD中: $ git merge 六、撤销 放弃工作目录下的所有修改: $ git reset --hard HEAD 移除缓存区的所有文件(i.e. 撤销上次git add): $ git reset HEAD 将HEAD重置到指定的版本,并抛弃该版本之后的所有修改: 1. $ git reflog 2. $ git reset --hard

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/0f7307751.html, "yayun.tian" git config user.email yayun.tian@https://www.doczj.com/doc/0f7307751.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再次提交

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