Git初学者:权威的实用指南

好的,在看到PJ Hyett的这篇文章之后,我决定跳到最后,选择Git

因此,我需要的是Git的初学者实用指南。 “初学者”被定义为知道如何处理其编译器,在某种程度上理解Makefile是什么,并且在不十分了解它的情况下接触了源代码控制的人。

“实用”被定义为该人员不想深入了解Git在后台执行的操作,甚至不关心(或知道)它的分发。 您的答案可能暗示了这种可能性,但请尝试针对希望将“主”存储库保留在已备份且安全的“服务器”上的初学者,并将其本地存储库视为“客户端”资源。

所以:

安装/设置

使用代码

标记,分支,发布,基准

其他

其他Git初学者参考

钻研Git

我会不时浏览这些条目并对其进行“整理”,以便它们具有一致的外观/感觉,并且可以轻松地扫描列表-随意遵循简单的“标题-简要说明-指令列表-陷阱和额外信息”模板。 我还将链接到上面项目符号列表中的条目,因此以后可以轻松找到它们。


#1楼

获取最新代码

$ git pull <remote> <branch> # fetches the code and merges it into 
                             # your working directory
$ git fetch <remote> <branch> # fetches the code but does not merge
                              # it into your working directory

$ git pull --tag <remote> <branch> # same as above but fetch tags as well
$ git fetch --tag <remote> <branch> # you get the idea

这几乎涵盖了从远程存储库获取代码的最新副本的所有情况。


#2楼

如何跟踪远程分支

假设有一个远程存储库是您从中克隆本地存储库的,并且还假设该远程存储库上有一个名为“ some_branch”的分支,以下是在本地进行跟踪的方法:

# list remote branches
git branch -r

# start tracking one remote branch
git branch --track some_branch origin/some_branch

# change to the branch locally
git checkout some_branch

# make changes and commit them locally
....

# push your changes to the remote repository:
git push

#3楼

如何在远程存储库上创建分支?

假设您已从某个单个远程存储库克隆了远程存储库。

# create a new branch locally
git branch name_of_branch
git checkout name_of_branch
# edit/add/remove files    
# ... 
# Commit your changes locally
git add fileName
git commit -m Message
# push changes and new branch to remote repository:
git push origin name_of_branch:name_of_branch

#4楼

我还发现Git Internals非常有用。 它由Scott Chacon(Pro Git的作者,Git社区手册的维护者)编写。 我喜欢Git Internals的地方在于它首先关注概念,然后关注命令 ,并且它是大约100个小页面,因此可以快速消化。


#5楼

理解Git是如何工作的真正好论文是Git Parable 。 非常推荐!


#6楼

您如何比较文件的两个修订,或者当前文件和先前的修订?

比较命令是git diff

要比较文件的2个修订版本:

$ git diff <commit1> <commit2> <file_name>

那将commit1与commit2进行比较; 如果更改顺序,则文件会以相反的方式进行区分,这可能与您期望的不一样...

要将当前暂存文件与存储库进行比较:

$ git diff --staged <file_name>

要将当前未暂存的文件与存储库进行比较:

$ git diff <file_name>

#7楼

您如何查看文件修订历史?

git log -- filename

#8楼

Gity: http//macendeavor.com/gity


#9楼

这是PJ Hyett帖子的副本,因为该帖子不再可用:

Git并不难

2008年11月23日

当我们告诉人们为什么他们应该在Subversion上使用Git时,转到的行是:“ Git比Subversion做得更好,但它做得更多。”

“很多”由使Git真正发光的一堆东西组成,但是对于来自其他SCM(例如Subversion)的那些人来说可能是不堪重负。

就是说,没有什么可以阻止您使用Git的,就像您在进行过渡时使用Subversion一样。

假设您已经安装了必要的软件并在某个地方有一个远程存储库,这就是您如何获取代码并使用Subversion将更改推回的方式:

$ svn checkout svn://foo.googlecode.com/svn/trunk foo
# make your changes
$ svn commit -m "my first commit"

以及您将如何在Git中做到这一点:

$ git clone git@github.com:pjhyett/foo.git
# make your changes
$ git commit -a -m "my first commit"
$ git push

使它在Git中实现的另一条命令。 这个额外的命令具有很大的含义,但是出于本文的目的,这就是我们正在讨论的一个额外的命令。

瞧,这确实不难。

更新:我也不会忘记,与Git相比,在Subversion中更新本地副本的等效方式分别是svn updategit pull 。 在两种情况下都只有一个命令。


#10楼

您如何设置共享团队存储库?

这里介绍了如何设置普通存储库-但是如何设置每个人都可以从中拉出和推入的团队存储库?

使用共享的NFS文件系统

例如,假设您的团队已经拥有可以使用的共享组成员身份。

mkdir /your/share/folder/project.git
cd /your/share/folder/project.git
newgrp yourteamgroup # if necessary
git init --bare --shared

要开始使用此存储库,最简单的操作是从已经使用过的本地存储库开始:

cd your/local/workspace/project
git remote add origin /your/share/folder/project.git
git push origin master

现在其他人可以克隆它并开始工作:

cd your/local/workspace
git clone /your/share/folder/project.git

使用SSH

在目标服务器上设置用户帐户。 使用无密码帐户,带密码帐户还是使用authorized_keys确实取决于所需的安全级别。 有关更多信息,请参见通过SSH配置Git

如果所有开发人员都使用同一帐户访问此共享存储库,则无需使用上述--shared选项。

按照与上述相同的方式初始化存储库后,您可以像下面这样进行初始推送:

cd your/local/workspace/project
git remote add origin user@server:/path/to/project.git
git push origin master

看到与上面相似吗? 除此之外,唯一可能发生的事情就是如果帐户具有密码,SSH会要求输入密码。 如果您在没有密码的帐户上收到此提示,则SSH服务器可能已禁用PermitEmptyPasswords

现在克隆如下所示:

cd your/local/workspace
git clone user@server:/path/to/project.git

#11楼

好吧,尽管您实际上要求我们不要“简单地”链接到其他资源,但是当已经存在一个确实不错的社区增长(并且正在增长)的资源时,这是非常愚蠢的: Git社区书 。 认真地讲,一个问题中的20多个问题将变得简洁而一致。 Git社区书籍既有HTML格式,也有PDF格式,并以清晰,格式正确和经过同行评审的答案以及可以让您直接跳到您所遇到的问题的格式来回答您的许多问题。

las,如果我的帖子真的让您不高兴,那么我将其删除。 只是这样说。


#12楼

为什么还要另外一个方法? 网上确实有很多不错的工具,例如git指南 ,非常适合入门 。 它具有良好的链接,包括git书 ,一个人可以贡献力量(托管在git hub上),并且非常适合完成这项集体任务。

在stackoverflow上,我真的很想看看您最喜欢的技巧!

我最近才发现的Mine是git stash此进行了说明,它使您能够保存当前的工作并转到另一个分支

编辑:作为前一篇文章,如果您真的更喜欢将stackoverlow格式的文章作为Wiki,我将删除此答案


#13楼

提交变更

编辑文件后,您需要将更改提交到git。 当您执行此命令时,它将要求提交消息-这只是一小段文字,告诉每个人您所做的更改。

$ git commit source/main.c

将在目录./source/中提交文件main.c。

$ git commit -a # the -a flag pulls in all modified files

将提交所有更改的文件(但不提交新文件,需要使用git-add将它们添加到索引中)。 如果只想提交某些文件,则需要先使用git-add暂存它们,然后再提交不带-a标志的文件。

提交只会更改本地存储库,而不会更改远程存储库。 如果要将提交发送到远程存储库,则需要进行推送。

$ git push <remote> <branch> # push new commits to the <branch> on the <remote> repository

对于来自CVS或SVN的用户而言,这是一个更改,因为到中央存储库的提交现在需要两个步骤。


#14楼

Git Magic是您所需要的。 品质保证,退款保证!


#15楼

如何配置它以忽略文件:

git忽略您不希望其跟踪的文件的功能非常有用。

要忽略一个文件或一组文件,请提供一个模式。 git的模式语法相当简单,但是功能强大。 它适用于以下所有三个不同的文件。

  • 空行不忽略任何文件,通常用作分隔符。
  • 开头的行用作注释。
  • 前缀是可选的,将否定模式。 匹配的所有否定模式将覆盖优先级较低的模式。
  • 支持高级表达式和通配符
    • 例如:模式: *。[oa]将忽略存储库中所有以.o或.a结尾的文件(对象和归档文件)
  • 如果某个模式的目录以斜杠结尾,则git只匹配该目录及其下的路径。 这从匹配中排除常规文件和符号链接。
  • 前导斜杠将匹配该路径名中的所有文件。
    • 例如:模式/*.c将匹配文件foo.c,但不匹配bar / awesome.c

gitignore(5)手册页中的好例子:

$ git status
[...]
# Untracked files:
[...]
#       Documentation/foo.html
#       Documentation/gitignore.html
#       file.o
#       lib.a
#       src/internal.o
[...]
$ cat .git/info/exclude
  # ignore objects and archives, anywhere in the tree.
  *.[oa]
$ cat Documentation/.gitignore
# ignore generated html files,
*.html
# except foo.html which is maintained by hand
!foo.html
$ git status
[...]
# Untracked files:
[...]
#       Documentation/foo.html
[...]

通常,有三种方法可以忽略未跟踪的文件。

1)忽略存储库的所有用户:

将一个名为.gitignore的文件添加到您的工作副本的根目录中。

编辑.gitignore以匹配您的首选项,应该/不应该忽略这些文件。

git add .gitignore 

完成后再提交。

2)只忽略您的存储库副本:

使用首选模式在工作副本中添加/编辑文件$ GIT_DIR / info / exclude

例如:我的工作副本是〜/ src / project1,所以我要编辑〜/ src / project1 / .git / info / exclude

你完成了!

3)在您的系统上的所有情况下都忽略:

您系统的全局忽略模式可以放在一个您想要的文件中。

我的个人被称为〜/ .gitglobalignore

然后,我可以通过以下行编辑〜/ .gitconfig文件来让git知道此文件:

core.excludesfile = ~/.gitglobalignore

你完成了!

我发现gitignore手册页是获取更多信息的最佳资源。


#16楼

git status是您的朋友,请经常使用。 非常适合回答以下问题:

  • 该命令只是做什么?
  • 我在哪个分支上?
  • 我要提交哪些更改,我忘记了什么?
  • 我上次从事此项目时(几天,几周或几个月前)是否处于中间状态?

不同于svn statusgit status即使在大型项目上也几乎立即运行。 我经常在学习git经常使用它时放心,以确保我对正在发生的事情的心理模型是准确的。 现在,我主要只是用它来提醒自己自上次提交以来发生了什么变化。

显然,如果合理配置了.gitignore,它会更加有用。


#17楼

如何创建新的项目/存储库?

git存储库只是一个包含特殊.git目录的目录。

这与“集中式”版本控制系统(如Subversion)不同,在“集中式”版本控制系统中,“存储库”托管在远程服务器上,您可以将其checkout到“工作副本”目录中。 使用git,您的工作副本就是存储库。

只需在包含您要跟踪的文件的目录中运行git init

例如,

cd ~/code/project001/
git init

这将在当前目录中创建一个.git (隐藏)文件夹。

要创建一个新项目,请使用附加参数(要创建的目录的名称)运行git init

git init project002

(This is equivalent to: mkdir project002 && cd project002 && git init)

要检查当前当前路径是否在git存储库中,只需运行git status如果它不是存储库,它将报告“严重:不是git存储库”

您还可以列出.git目录,并检查它是否包含类似于以下内容的文件/目录:

$ ls .git
HEAD         config       hooks/       objects/
branches/    description  info/        refs/

如果出于某种原因您希望“解散”存储库(您希望停止使用git跟踪该项目)。 只需在存储库的基础级别上删除.git目录。

cd ~/code/project001/
rm -rf .git/

注意:这将销毁所有修订历史记录, 所有标签以及git所做的所有事情。 它不会触摸“当前”文件(您当前可以看到的文件),但是以前的更改,已删除的文件等将无法恢复!


#18楼

您如何“标记”一组特定的修订

如何为一组特定的文件“标记”,“标记”或“发布”一组特定的修订版本,以便您以后可以随时将其拉出?

使用git tag命令。

要简单地“标记”当前修订,就可以运行。

git tag -a thetagname
git tag -a 0.1
git tag -a 2.6.1-rc1 -m 'Released on 01/02/03'

要列出当前标签,只需运行不带参数的git tag-l (小写L):

$ git tag -a thetagname # and enter a message, or use -m 'My tag annotation'
$ git tag -l
thetagname

要删除标签,请使用-d标志:

$ git tag -d thetagname 
Deleted tag 'thetagname'
$ git tag
[no output]

要标记特定(先前)的提交,只需执行..

git tag [tag name] [revision SHA1 hash]

例如:

git tag 1.1.1 81b15a68c6c3e71f72e766931df4e6499990385b

注意:默认情况下,git创建一个“轻量级”标签(基本上是对特定版本的引用)。 “正确”的方法是使用-a标志。 这将启动您的编辑器,要求您提供标记消息(与要求提交消息相同,您也可以在命令行上使用-m标志来提供标记消息)。 使用带注释的标记会创建一个具有自己的ID,日期,标记(作者)和可选的GPG签名的对象(使用-s标记)。 有关此的更多信息,请参阅这篇文章

git tag mytagwithmsg -a -m 'This is a tag, with message'

要列出带有注释的标签,请使用-n1标志显示每个标签消息的第一行( -n245显示每个注释的前245行,依此类推):

$ git tag -l -n1
mytagwithmsg    This is a tag, with message

有关更多信息,请参见git-tag(1)手册页


#19楼

控制台用户界面-跳格

安装:

apt-get install tig

用法

在git repo内部时,键入“ tig”以查看交互式日志,在任何日志上单击“ enter”以查看有关它的更多信息。 h寻求帮助,其中列出了基本功能。

琐事

“ Tig”是“ Git”。


#20楼

git的GUI


Git GUI

包含在git中-从命令行运行git gui ,Windows msysgit安装程序将其添加到“开始”菜单中。

Git GUI可以完成git所需的大部分工作。 包括阶段更改,配置git和存储库,推送更改,创建/签出/删除分支,合并以及许多其他功能。

我最喜欢的功能之一是右键单击菜单中的“ stage line”和“ stage hunk”快捷方式,它使您可以提交文件的特定部分。 您可以通过git add -i实现相同的功能,但我发现它更易于使用。

它不是最漂亮的应用程序,但是它几乎可以在所有平台上运行(基于Tcl / Tk)

屏幕截图 截屏


吉特

也包含在git中。 它是一个git历史记录查看器,可让您可视化存储库的历史记录(包括分支,在创建和合并时)。 您可以查看和搜索提交。

与git-gui配合得很好。


吉特努布

Mac OS X应用程序。 主要等效于git log ,但与github集成了一些功能(例如“网络视图”)。

外观漂亮,适合Mac OSX。您可以搜索存储库。 Gitnub最大的批评是它以线性方式(一次是单个分支)显示历史-它没有可视化分支和合并,这对于git可能很重要,尽管这是计划中的改进。

下载链接,更改日志和屏幕截图 | git仓库


GitX

打算成为“ OS X的gitk克隆”。

它可以可视化非线性分支历史记录,执行提交,查看和搜索提交,并且还具有其他一些不错的功能,例如能够“快速查找”任何修订版中的任何文件(在文件列表视图中按空格),导出任何文件。 (通过拖放)。

git-gui / gitk ,它与OS X的集成要好得多,并且即使在存储库非常大的情况下,它也快速且稳定。

原始的git信息库最近未更新(在撰写本文时已超过一年)。 在brotherbard / gitx上可以找到维护更积极的分支-它添加了“侧边栏,获取,拉取,推送,添加远程,合并,cherry-pick,变基,克隆,克隆到”

下载 | 屏幕截图 git仓库 | 兄弟叉 | 劳伦叉


SmartGit

从首页:

SmartGit是分布式版本控制系统Git的前端,可在Windows,Mac OS X和Linux上运行。 SmartGit适用于那些喜欢图形用户界面而不是命令行客户端的开发人员,以利用Git(当今功能最强大的DVCS)提高生产力。

您可以从他们的网站下载它。

下载


龟龟

Windows用户的TortoiseSVN Git版本。

它将TortoiseSVN移植到TortoiseGit最新版本1.2.1.0。此版本可以完成常规任务,例如提交,显示日志,差异两个版本,创建分支和标记,创建补丁等。 请参见发布记录的细节。 欢迎为这个项目做贡献。

下载


QGit

QGit是基于Qt / C ++的git GUI查看器。

使用qgit,您将能够以图形方式遵循不同的开发分支来浏览修订历史记录,查看补丁内容和更改的文件。

下载


gitg

gitg是针对gtk + / GNOME的git存储库查看器。 其主要目标之一是为跨多个桌面的git前端提供更统一的用户体验。 它不是在编写跨平台应用程序,而是与其他操作系统(例如OS X的GitX)的类似客户端密切协作。

特征

  • 浏览修订历史记录。
  • 处理大型存储库(在1秒内加载linux存储库,17000多个修订版)。
  • 提交更改。
  • 舞台/不舞台个人大块头。
  • 还原更改。
  • 显示修订版本的彩色差异。
  • 浏览树中的给定修订版。
  • 导出给定修订版的树的一部分。
  • 提供诸如``git log''之类的命令可以理解的任何refspec以建立历史记录。
  • 在历史记录视图中显示并在分支之间切换。

下载: 版本


彩盒

Gitbox是用于Git版本控制系统的Mac OS X图形界面。 在单个窗口中,您可以看到分支,历史记录和工作目录状态。

日常操作很容易:通过复选框进行和不进行更改。 只需单击即可提交,拉动,合并和推动。 双击更改以显示与FileMerge.app的差异。

下载


吉蒂

Gity网站没有太多信息,但是从那里的屏幕截图来看,它似乎是功能丰富的开源OS X git gui。

下载来源


融化

Meld是视觉差异和合并工具。 您可以比较两个或三个文件并在适当位置进行编辑(差异会动态更新)。 您可以比较两个或三个文件夹并启动文件比较。 您可以从流行的版本控制系统(例如CVS,Subversion,Bazaar-ng和Mercurial [ 和Git ])浏览和查看工作副本。

资料下载


片假名

Steve Dekorte的OSX版Git GUI。

一目了然,查看哪些远程分支有更改要拉,而本地存储库有更改要推。 支持add,commit,push,pull,tag和reset的git ops,还支持项目差异的可视化差异和可视化浏览,突出显示了本地更改和添加。

1个存储库免费,更多则25美元。

下载


新芽(以前是GitMac)

致力于使Git易于使用。 具有本机可可(类似于Mac)的UI,快速的存储库浏览,克隆,推/拉,分支/合并,可视化差异,远程分支,易于访问终端等。

通过使最常用的Git操作直观且易于执行,Sprout(以前称为GitMac)使Git变得用户友好。 与大多数Git工作流程兼容,Sprout非常适合设计师和开发人员,团队协作以及高级和新手用户。

下载 | 网站


Mac OSX的功能丰富的Git GUI。 30天免费试用,单用户许可证$ 59USD。

下载 | 网站


EGit

EGit是Git版本控制系统的Eclipse Team提供程序。 Git是一个分布式SCM,这意味着每个开发人员都拥有该代码每个修订版本的所有历史记录的完整副本,从而使对历史记录的查询非常快速且通用。

EGit项目正在Git的JGit Java实现之上实现Eclipse工具。

下载 | 网站


Git扩展

Windows开源-在单个软件包中安装使用Git所需的所有内容,易于使用。

Git Extensions是一个工具包,可以使在Windows上使用Git更加直观。 该外壳扩展将在Windows资源管理器中集成在一起,并在文件和目录上显示一个上下文菜单。 还有一个Visual Studio插件可以使用Visual Studio中的git。

下载

非常感谢dbr详细介绍git gui内容。


源树

SourceTree是Git,Mercurial和SVN的免费 Mac客户端。 它是由BitBucket背后的人Atlassian构建的,它似乎可以与任何VC系统同样出色地工作,该系统可以让您掌握用于所有项目的单个工具,但是它们是受版本控制的。 功能丰富且免费。

专为新手和高级用户准备的专家级功能包:

查看传出和传入变更集。 分支之间的樱桃采摘。 补丁处理,变基,隐藏/搁置等。

下载 | 网站



#21楼

推拉变更

以简化的方式,只需执行git pushgit pull 。 更改被合并,如果有冲突,git会通知您,您可以手动解决它。

首次推送到远程存储库时,您需要执行git push origin master (master是master分支)。 从那时起,您只需执行git push

使用git push --tags推送标签。


#22楼

如何安装Git

在Windows上:

安装msysgit

有几个下载:

  • Git:除非特别需要以下其他选项之一,否则请使用此选项。
  • PortableGit:如果要在PC上运行Git而不在该PC上安装(例如,从USB驱动器运行Git),请使用此选项
  • msysGit:如果您想自己开发Git,请使用它。 如果你只是想使用Git的为你的源代码,但不希望编辑Git的源代码,你不需要这个。

这还会安装一个Cygwin bash外壳程序,因此您可以在更好的外壳程序(而不是cmd.exe)中使用git ,并且还包括git-gui(可通过git gui命令或“ Start > All Programs > Git菜单访问)

Mac OS X

使用git-osx-installer ,或者您也可以从源代码安装

通过包管理器

使用您的本机软件包管理器安装git 。 例如,在Debian(或Ubuntu)上:

apt-get install git-core

或在Mac OS X上,通过MacPorts

sudo port install git-core+bash_completion+doc

…或芬克:

fink install git

…或自制软件

brew install git

在基于Red Hat的发行版上,例如Fedora:

yum install git

在Cygwin中,可以在“开发”部分下找到Git软件包

从源(Mac OS X / Linux / BSD /等)

在Mac OS X中,如果安装了开发人员工具,则可以非常轻松地从源代码编译Git。 从http://git-scm.com/下载最新版本的Git作为.tar.bz.tar.gz并解压缩(在Finder中双击)

在Linux / BSD / etc。 应该差不多。 例如,在Debian(和Ubuntu)中,您需要通过apt安装build-essential软件包。

然后在终端中, cd到您提取文件的位置(运行cd ~/Downloads/git*/应该可以),然后运行。

./configure && make && sudo make install

这会将Git安装到默认位置( /usr/local - git将在/usr/local/bin/git

它将提示您输入密码(对于sudo ),这样它就可以写入/usr/local/目录,该目录只能由“ root”用户访问,因此需要sudo!

如果您要将其安装在单独的位置(因此Git的文件不会与其他工具混在一起),请在配置命令中使用--prefix

./configure --prefix=/usr/local/gitpath
make
sudo make install

这会将git二进制文件安装到/usr/local/bin/gitpath/bin/git -因此您不必每次都键入该二进制文件,您应该通过$PATH下行添加到~/.profile来添加到$PATH ~/.profile

export PATH="${PATH}:/usr/local/bin/gitpath/bin/"

如果您没有sudo访问权限,则可以使用--prefix=/Users/myusername/bin并安装到主目录中。 记住将~/bin/添加到$PATH

脚本x-git-update-to-latest-version自动执行许多操作:

该脚本更新了我的git repo本地副本(本地语言位于~/work/track/git ),然后进行配置,安装(在/usr/local/git - git describe )并更新了/usr/local/git符号链接。

这样,我可以将/usr/local/git/bin放在PATH并且始终使用最新版本。

此脚本的最新版本也将安装手册页。 您需要调整您的MANPATH以包含/usr/local/git/share/man目录。


#23楼

Git重置

假设您提出了要求,将其合并到您的代码中,然后决定您不喜欢它。 使用git-log或tig,找到要返回的哈希(可能是上拉/合并之前的最后一次提交),然后复制哈希,然后执行以下操作:

# Revert to a previous commit by hash:
git-reset --hard <hash>

您可以使用HEAD ^作为上一次提交的快捷方式,而不是使用哈希。

# Revert to previous commit:
git-reset --hard HEAD^

#24楼

签出代码

首先转到一个空目录,使用“ git init”将其设置为存储库,然后将远程存储库克隆到您自己的存储库中。

git clone user@host.com:/dir/to/repo

无论您最初从哪里克隆,默认情况下都是从“ git pull”那里克隆的。


#25楼

Pro Git免费书籍绝对是我的最爱,尤其是对于初学者。


#26楼

GIT的工作流程示例。

Git非常灵活,可以很好地适应任何工作流程,但是不执行特定的工作流程可能会带来负面影响,使您难以理解除了线性“备份”工作流程以外,您可以用git做些什么,例如分支的有用程度。

这篇博客很好地解释了一个非常简单但有效的工作流程,使用git可以很容易地对其进行设置。

引用博客文章:我们认为origin / master是HEAD源代码始终反映生产就绪状态的主要分支:

工作流已经变得非常流行,以至于创建了一个实现该工作流的项目: git-flow

一个简单的工作流程的很好的说明,您可以在开发中进行所有更改,并且仅在代码处于生产状态时才推动掌握:

简单的工作流程

现在,假设您要使用新功能或重构模块。 您可以创建一个新分支,我们称之为“功能”分支,这将花费一些时间并可能破坏一些代码。 一旦您的功能“足够稳定”并且想要将其“更紧密地”投入生产,就可以将功能分支合并到开发中。 当合并后所有的错误都已解决,并且您的代码通过了所有测试之后,您便将更改推入了master。

在所有这些过程中,您会发现一个可怕的安全漏洞,必须立即修复。 您可能有一个名为hotfix的分支,该分支进行的更改比正常的“ develop”分支更快速地将其推送回生产环境。

在这里,您可以说明此功能/修补程序/开发/生产工作流程的外观(在博客文章中对此进行了很好的解释,我再重复一次,该博客文章比我更详细地解释了整个过程,并且比我做得更好。 。

Git工作流程示例


#27楼

如何删除远程存储库上的分支?

在分支名称前使用:进行远程推送

git push origin :mybranchname

origin是您的远程名称,而mybranchname是要删除的分支的名称

http://help.github.com/remotes/


#28楼

我从正式的Git教程开始 。 我认为这对初学者来说已经足够实用了(按照您的定义,我曾经是,现在仍然是初学者!我几乎不掌握makefile,我只使用过Apache Subversion等)。


#29楼

您如何分支?

git存储库中的默认分支称为master

创建一个新的分支使用

git branch <branch-name>

要查看当前存储库类型中所有分支的列表

git branch

如果要切换到另一个分支,可以使用

git checkout <branch-name>

创建一个新分支并一步切换到该分支

git checkout -b <branch-name>

要删除分支,请使用

git branch -d <branch-name>

要创建一个具有当前分支更改的分支,请执行

git stash
git stash branch <branch-name>

#30楼

您如何合并分支?

如果要合并分支(例如masterrelease ),请确保您当前的分支是您要合并到的目标分支(使用git branchgit status查看您当前的分支)。

然后使用

git merge master

(其中master是要与当前分支合并的分支的名称)。

如果有任何冲突,您可以使用

git diff

要查看未解决的冲突,您必须解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值