Ada*_*vis 854 git version-control
好的,在看到PJ Hyett的这篇文章之后,我决定跳到最后并与Git一起去.
所以我需要的是初学者对Git 的实用指南."初学者"被定义为知道如何处理编译器的人,在某种程度上理解Makefile是什么,并触及源代码控制而不理解它.
"实用"被定义为这个人不想详细了解Git在后台做什么,甚至不关心(或知道)它是分布式的.您的回答可能暗示了可能性,但尝试瞄准想要在备份和安全的"服务器"上保留"主"存储库的初学者,并将其本地存储库视为仅仅是"客户端"资源.
所以:
我会不时地查看这些条目并"整理"它们以便它们具有一致的外观/感觉并且很容易扫描列表 - 随意按照简单的"标题 - 简要说明 - 说明列表 - 陷阱和额外信息"模板.我还将链接到上面的项目符号列表中的条目,以便以后轻松找到它们.
dbr*_*dbr 118
git存储库只是一个包含特殊.git目录的目录.
这与"集中式"版本控制系统(如subversion)不同,其中"存储库"托管在远程服务器上,您checkout将其置于"工作副本"目录中.使用git,您的工作副本就是存储库.
只需git init在包含您要跟踪的文件的目录中运行即可.
例如,
cd ~/code/project001/
git init
Run Code Online (Sandbox Code Playgroud)
这将.git在当前目录中创建一个(隐藏)文件夹.
要创建一个新项目,请git init使用另一个参数(要创建的目录的名称)运行:
git init project002
(This is equivalent to: mkdir project002 && cd project002 && git init)
Run Code Online (Sandbox Code Playgroud)
要检查当前当前路径是否在git存储库中,只需运行git status- 如果它不是存储库,它将报告"致命:不是git存储库"
您还可以列出.git目录,并检查它包含类似于以下内容的文件/目录:
$ ls .git
HEAD config hooks/ objects/
branches/ description info/ refs/
Run Code Online (Sandbox Code Playgroud)
如果出于某种原因你希望"去git"一个存储库(你希望停止使用git来跟踪该项目).只需删除.git存储库基础级别的目录即可.
cd ~/code/project001/
rm -rf .git/
Run Code Online (Sandbox Code Playgroud)
警告:这将破坏所有修订历史记录,所有标记,git所做的一切.它不会触及"当前"文件(您当前可以看到的文件),但以前的更改,删除的文件等将无法恢复!
dyl*_*nfm 110
包含在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 OS X.您可以搜索存储库.Gitnub最大的批评是它以线性方式显示历史(一次只显示一个分支) - 它不会显示分支和合并,这对于git来说很重要,尽管这是一个有计划的改进.
打算成为"OS X的gitk克隆".
它可以可视化非线性分支历史,执行提交,查看和搜索提交,还有一些其他很好的功能,如能够"快速查看"任何修订版本中的任何文件(按文件列表视图中的空格),导出任何文件(通过拖放).
它远远更好地融入比OS X git-gui/ gitk和速度快且稳定,即使非常大仓库.
最初的git repository pieter最近没有更新(写作时间超过一年).在brotherbard/gitx上有一个更积极维护的分支- 它添加了"侧边栏,提取,拉动,推送,添加远程,合并,樱桃挑选,rebase,克隆,克隆到"
下载 | 截图 | git存储库 | 兄弟叉 | laullon叉
从主页:
SmartGit是分布式版本控制系统Git的前端,可在Windows,Mac OS X和Linux上运行.SmartGit适用于喜欢通过命令行客户端使用图形用户界面的开发人员,使用Git(今天功能最强大的DVCS)提高效率.
您可以从他们的网站下载.
适用于Windows用户的TortoiseSVN Git版本.
它将TortoiseSVN移植到TortoiseGit最新版本1.2.1.0此版本可以完成常规任务,例如提交,显示日志,差异两个版本,创建分支和标记,创建补丁等等.有关详细信息,请参见ReleaseNotes.欢迎贡献这个项目.
QGit是一个基于Qt/C++构建的git GUI查看器.
使用qgit,您将能够浏览修订历史记录,查看修补程序内容和更改的文件,以图形方式跟踪不同的开发分支.
gitg是一个git存储库查看器,目标是gtk +/GNOME.其主要目标之一是为跨多个桌面的git前端提供更统一的用户体验.这不是编写跨平台应用程序,而是与其他操作系统(如GitX for OS X)的类似客户端密切合作.
Gitbox是Git版本控制系统的Mac OS X图形界面.在单个窗口中,您可以看到分支,历史记录和工作目录状态.
日常操作很简单:使用复选框进行舞台和非舞台更改.单击即可提交,拉取,合并和推送.双击更改以使用FileMerge.app显示差异.
Gity网站没有太多信息,但从那里的截图看来,它似乎是一个功能丰富的开源OS X git gui.
Meld是一个视觉差异和合并工具.您可以比较两个或三个文件并对其进行编辑(差异动态更新).您可以比较两个或三个文件夹并启动文件比较.您可以从流行的版本控制系统浏览和查看工作副本,例如CVS,Subversion,Bazaar-ng和Mercurial [ 和Git ].
Steve Dekorte为OSX提供的Git GUI.
一目了然,看看哪些远程分支有拉动变化,本地仓库有变化推动.支持添加,提交,推送,拉取,标记和重置的git操作,以及项目hieracy的视觉差异和可视化浏览,突出显示本地更改和添加.
1个存储库免费,25美元以上.
着重于让Git易于使用.具有本机Cocoa(类似mac)UI,快速存储库浏览,克隆,推/拉,分支/合并,可视差异,远程分支,轻松访问终端等.
通过使最常用的Git动作直观且易于执行,Sprout(以前的GitMac)使Git用户友好.Sprout与大多数Git工作流程兼容,非常适合设计人员和开发人员,团队协作以及高级和新手用户.
适用于Mac OSX的功能丰富的Git GUI.30天免费试用,单用户许可证价格为59美元.
EGit是Git版本控制系统的Eclipse Team提供程序.Git是一个分布式SCM,这意味着每个开发人员都拥有代码每个修订版的所有历史记录的完整副本,从而可以非常快速和通用地查询历史记录.
EGit项目是在Git的JGit Java实现之上实现Eclipse工具.
适用于Windows的开源 - 在单个软件包中安装使用Git所需的一切,易于使用.
Git Extensions是一个工具包,可以让Windows上的Git更直观.shell扩展将在Windows资源管理器中集成,并在文件和目录上显示上下文菜单.还有一个Visual Studio插件可以使用Visual Studio中的git.
非常感谢dbr详细介绍了git gui的东西.
SourceTree是Git,Mercurial和SVN 的免费 Mac客户端.由BitBucket背后的人Atlassian构建,它似乎与任何VC系统同样有效,它允许您掌握用于所有项目的单个工具,但它们是版本控制的.功能丰富,免费.
适用于新手和高级用户的专家就绪和功能丰富:
查看传出和传入的更改集.分支之间的樱桃挑选.补丁处理,rebase,藏匿/搁置等等.
Bri*_*aro 56
让git忽略你不希望它跟踪的文件的能力是非常有用的.
要忽略文件或文件集,请提供模式.git的模式语法相当简单,但功能强大.它适用于我将提到的所有三个不同的文件.
来自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
[...]
Run Code Online (Sandbox Code Playgroud)
通常,有三种不同的方法可以忽略未跟踪的文件.
1)忽略存储库的所有用户:
将名为.gitignore的文件添加到工作副本的根目录中.
编辑.gitignore以匹配您/不应忽略哪些文件的首选项.
git add .gitignore
Run Code Online (Sandbox Code Playgroud)
当你完成时提交.
2)仅忽略您的存储库副本:
使用您的首选模式在工作副本中添加/编辑文件$ GIT_DIR/info/exclude.
例如:我的工作副本是〜/ src/project1所以我要编辑〜/ src/project1/.git/info/exclude
你完成了!
3)在所有情况下,忽略您的系统:
系统的全局忽略模式可以放在一个名为您希望的文件中.
我个人叫做〜/ .gitglobalignore
然后我可以通过使用以下行编辑〜/ .gitconfig文件让git知道这个文件:
core.excludesfile = ~/.gitglobalignore
Run Code Online (Sandbox Code Playgroud)
你完成了!
我发现gitignore手册页是获取更多信息的最佳资源.
dbr*_*dbr 47
你如何'标记''标记'或'释放'特定文件集的特定修订集,以便你可以随后拉出那个?
使用git tag命令.
要简单地"标记"当前版本,您只需运行..
git tag -a thetagname
git tag -a 0.1
git tag -a 2.6.1-rc1 -m 'Released on 01/02/03'
Run Code Online (Sandbox Code Playgroud)
要列出当前标记,只需运行git tag不带参数,或者-l(小写L):
$ git tag -a thetagname # and enter a message, or use -m 'My tag annotation'
$ git tag -l
thetagname
Run Code Online (Sandbox Code Playgroud)
要删除标记,请使用以下-d标记:
$ git tag -d thetagname
Deleted tag 'thetagname'
$ git tag
[no output]
Run Code Online (Sandbox Code Playgroud)
要标记特定(先前)提交,您只需执行..
git tag [tag name] [revision SHA1 hash]
Run Code Online (Sandbox Code Playgroud)
例如:
git tag 1.1.1 81b15a68c6c3e71f72e766931df4e6499990385b
Run Code Online (Sandbox Code Playgroud)
注意:默认情况下,git会创建一个"轻量级"标记(基本上是对特定修订的引用)."正确"的方式是使用-a旗帜.这将启动您的编辑器,询问标记消息(与要求提交消息相同,您也可以使用该-m标志在命令行上提供标记消息).使用带注释的标记创建一个具有自己的ID,日期,标记(作者)和可选的GPG签名(使用-s标记)的对象.
有关此问题的更多信息,请参阅此文章
git tag mytagwithmsg -a -m 'This is a tag, with message'
Run Code Online (Sandbox Code Playgroud)
要列出带注释的标签,请使用该-n1标志显示每个标签消息的1行(-n245以显示每个注释的前245行,依此类推):
$ git tag -l -n1
mytagwithmsg This is a tag, with message
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅git-tag(1)手册页
ash*_*ods 46
使用GIT的工作流示例.
Git非常灵活,能够很好地适应任何工作流程,但是不强制执行特定的工作流程可能会产生负面影响,使得很难理解除了线性"备份"工作流程之外你可以使用git做什么,以及如何有用的分支可以例如.
这篇博文很好地解释了一个非常简单但有效的工作流程,使用git很容易设置.
引自博客文章:我们认为origin/master是主要的分支,HEAD的源代码总是反映生产就绪状态:
工作流已经变得非常流行,已经创建了一个实现这个工作流的项目:git-flow
很简单的工作流程的简单说明,您可以在开发中进行所有更改,并且只有在代码处于生产状态时才能掌握:

现在假设您想要处理新功能或重构模块.你可以创建一个新的分支,我们可以称之为"功能"分支,这需要一些时间并且可能会破坏一些代码.一旦您的功能"足够稳定"并希望将其"更接近"生产,您就可以将功能分支合并到开发中.当合并后所有错误都被整理出来并且您的代码通过所有测试时,您可以将更改推送到master.
在这个过程中,您会发现一个可怕的安全漏洞,必须立即修复.你可以有一个名为hotfixes的分支,它可以使更改比正常的"develop"分支更快地恢复生产.
在这里,您可以看到此功能/修补程序/开发/生产工作流程的外观(在博客文章中有详细解释,我再说一遍,博客文章详细解释了整个过程,并且比我做得更好) .

Ada*_*vis 39
这是PJ Hyett的帖子的副本,因为它不再可用:
Git并不难
2008年11月23日
当我们告诉人们为什么他们应该使用Git而不是Subversion时,首先要说的是,"Git比Subversion做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 update和git pull.两种情况下只有一个命令.
dbr*_*dbr 33
安装msysgit
有几个下载:
这也安装了一个Cygwin bash shell,所以你可以使用git更好的shell(比cmd.exe),还包括git-gui(可通过git gui命令或Start > All Programs > Git菜单访问)
使用git-osx-installer,或者也可以从源代码安装
git使用本机包管理器安装.例如,在Debian(或Ubuntu)上:
apt-get install git-core
Run Code Online (Sandbox Code Playgroud)
或者在Mac OS X上,通过MacPorts:
sudo port install git-core+bash_completion+doc
Run Code Online (Sandbox Code Playgroud)
......或者说:
fink install git
Run Code Online (Sandbox Code Playgroud)
......或自制语:
brew install git
Run Code Online (Sandbox Code Playgroud)
在基于Red Hat的发行版上,例如Fedora:
yum install git
Run Code Online (Sandbox Code Playgroud)
在Cygwin中,Git包可以在"devel"部分找到
在Mac OS X中,如果安装了Developer Tools,则可以非常轻松地从源代码编译Git.下载最新版本的Git的作为.tar.bz或.tar.gz从http://git-scm.com/,并提取它(在Finder中双击)
在Linux/BSD /等.它应该是一样的.例如,在Debian(和Ubuntu)中,您需要通过安装build-essential包apt.
然后在终端中,cd你解压缩文件(运行cd ~/Downloads/git*/应该工作),然后运行..
./configure && make && sudo make install
Run Code Online (Sandbox Code Playgroud)
这将把Git安装到默认位置(/usr/local- 所以git会在/usr/local/bin/git)
它会提示您输入密码(for sudo),这样就可以写入/usr/local/目录,只能由"root"用户访问,因此需要sudo!
如果您要将它安装在不同的地方(因此Git的文件不与其他工具混合使用),请使用--prefixconfigure命令:
./configure --prefix=/usr/local/gitpath
make
sudo make install
Run Code Online (Sandbox Code Playgroud)
这会将git二进制文件安装到/usr/local/bin/gitpath/bin/git- 所以你不必每次都输入,你应该$PATH通过在你的下面添加以下行来添加~/.profile:
export PATH="${PATH}:/usr/local/bin/gitpath/bin/"
Run Code Online (Sandbox Code Playgroud)
如果您没有sudo访问权限,则可以使用--prefix=/Users/myusername/bin并安装到主目录中.记得添加~/bin/到$PATH
脚本x-git-update-to-latest-version自动化了很多这样的:
这个脚本更新我的git repo的本地克隆(localy at
~/work/track/git),然后配置,安装(at/usr/local/git-git describe)并更新/usr/local/git符号链接.这样,我可以
/usr/local/git/bin在我PATH和我总是使用最新版本.此脚本的最新版本还会安装手册页.你需要调整你
MANPATH的/usr/local/git/share/man目录.
Dea*_*her 32
假设你做了一个拉,将它合并到你的代码中,并决定你不喜欢它.使用git-log或tig,找到你想要回到的地方的哈希值(可能是你在拉/合并之前的最后一次提交)复制哈希,然后执行:
# Revert to a previous commit by hash:
git-reset --hard <hash>
Run Code Online (Sandbox Code Playgroud)
您可以使用HEAD ^作为先前提交的快捷方式,而不是哈希.
# Revert to previous commit:
git-reset --hard HEAD^
Run Code Online (Sandbox Code Playgroud)
Asg*_*sen 31
这里描述了如何设置普通存储库- 但是如何设置一个团队存储库,每个人都可以从中拉出和推送?
假设您的团队已经拥有可以使用的共享组成员身份.
mkdir /your/share/folder/project.git
cd /your/share/folder/project.git
newgrp yourteamgroup # if necessary
git init --bare --shared
Run Code Online (Sandbox Code Playgroud)
要开始使用此存储库,最简单的方法是从您已经使用的本地存储库开始:
cd your/local/workspace/project
git remote add origin /your/share/folder/project.git
git push origin master
Run Code Online (Sandbox Code Playgroud)
其他人现在可以克隆它并开始工作:
cd your/local/workspace
git clone /your/share/folder/project.git
Run Code Online (Sandbox Code Playgroud)
在目标服务器上设置用户帐户.您是否使用没有密码的帐户,使用密码或使用的帐户authorized_keys确实取决于您所需的安全级别.看看配置的Git通过SSH一些更多的信息.
如果所有开发人员使用同一帐户访问此共享存储库,则无需使用上述--shared选项.
以与上面相同的方式启动存储库后,您可以像这样执行初始推送:
cd your/local/workspace/project
git remote add origin user@server:/path/to/project.git
git push origin master
Run Code Online (Sandbox Code Playgroud)
看到与上面的相似之处?唯一可能发生的事情是,如果帐户有密码,SSH会要求输入密码.如果您在没有密码的帐户上收到此提示,则SSH服务器可能已禁用PermitEmptyPasswords.
克隆现在看起来像这样:
cd your/local/workspace
git clone user@server:/path/to/project.git
Run Code Online (Sandbox Code Playgroud)
Pet*_*rns 28
git status是你的朋友,经常使用它.适合回答以下问题:
不像,说svn status,git status跑近了,瞬间即使在大项目.我经常发现它在学习git经常使用它时让人放心,以确保我所发生的事情的心智模型是准确的.现在我大多只是用它来提醒自己自从我上次提交以来我已经改变了什么.
显然,如果您的.gitignore配置得当,它会更有用.
Ada*_*vis 27
编辑完文件后,需要将更改提交给git.执行此命令时,它将询问提交消息 - 这只是一个简单的文本,告诉每个人你已经改变了什么.
$ git commit source/main.c
Run Code Online (Sandbox Code Playgroud)
将目录中的main.c文件提交./source/
$ git commit -a # the -a flag pulls in all modified files
Run Code Online (Sandbox Code Playgroud)
将提交所有已更改的文件(但不提交新文件,需要使用git-add将这些文件添加到索引中).如果您只想提交某些文件,那么您需要先使用git-add暂存它们,然后在不使用-a标志的情况下进行提交.
提交仅更改本地存储库,而不是远程存储库.如果要将提交发送到远程存储库,则需要进行推送.
$ git push <remote> <branch> # push new commits to the <branch> on the <remote> repository
Run Code Online (Sandbox Code Playgroud)
对于来自CVS或SVN的人来说,这是一个变化,因为提交到中央存储库现在需要两个步骤.
Mar*_*ier 27
调用git存储库中的默认分支master.
要创建新的分支使用
git branch <branch-name>
Run Code Online (Sandbox Code Playgroud)
查看当前存储库类型中所有分支的列表
git branch
Run Code Online (Sandbox Code Playgroud)
如果要切换到另一个分支,则可以使用
git checkout <branch-name>
Run Code Online (Sandbox Code Playgroud)
创建一个新分支并一步切换到它
git checkout -b <branch-name>
Run Code Online (Sandbox Code Playgroud)
要删除分支,请使用
git branch -d <branch-name>
Run Code Online (Sandbox Code Playgroud)
要使用当前分支的更改创建分支,请执行
git stash
git stash branch <branch-name>
Run Code Online (Sandbox Code Playgroud)
Jer*_*all 21
$ 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
Run Code Online (Sandbox Code Playgroud)
这几乎涵盖了从远程存储库获取代码的最新副本的所有情况.
Mar*_*ier 16
如果要合并分支(例如,masterto release),请确保当前分支是您要合并到的目标分支(使用git branch或git status查看当前分支).
然后用
git merge master
Run Code Online (Sandbox Code Playgroud)
(master您要与当前分支合并的分支的名称).
如果有任何冲突,您可以使用
git diff
Run Code Online (Sandbox Code Playgroud)
要查看您必须解决的待处理冲突.
Jor*_*dan 16
我也发现Git Internals非常有用.它由Scott Chacon(Pro Git的作者和Git Community Book的维护者)撰写.我喜欢Git Internals的是它首先关注概念然后关注命令,并且它是~100个小页面,它很容易消化.
inn*_*naM 12
假设有一个远程存储库,您从中克隆了本地存储库,并且还假设该远程存储库上有一个名为"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
Run Code Online (Sandbox Code Playgroud)
kre*_*ret 10
比较命令是git diff.
要比较文件的2个修订版:
$ git diff <commit1> <commit2> <file_name>
Run Code Online (Sandbox Code Playgroud)
这使commit1与commit2区别开来; 如果你改变顺序,那么文件会反过来,这可能不是你所期望的......
要将当前暂存的文件与存储库进行比较:
$ git diff --staged <file_name>
Run Code Online (Sandbox Code Playgroud)
要将当前的非暂存文件与存储库进行比较:
$ git diff <file_name>
Run Code Online (Sandbox Code Playgroud)
apt-get install tig
Run Code Online (Sandbox Code Playgroud)
在git repo中输入'tig',查看交互式日志,在任何日志上点击'enter'以查看有关它的更多信息.h寻求帮助,其中列出了基本功能.
"Tig"是"Git"倒退.
假设您已从某个远程存储库克隆了远程存储库.
# 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
Run Code Online (Sandbox Code Playgroud)
:在分支名称之前使用远程执行推送
git push origin :mybranchname
Run Code Online (Sandbox Code Playgroud)
是origin您的遥控器mybranchname的名称和要删除的分支的名称
http://help.github.com/remotes/
推拉变化
以简化的方式,只做git push和git pull.合并更改,如果存在冲突,git会通知您,您可以手动解决.
当您第一次推送到远程存储库时,您需要执行a git push origin master(master作为主分支).从那以后你就做了git push.
用标签推送标签git push --tags.
首先转到空目录,使用"git init"将其作为存储库,然后将远程仓库克隆到您自己的存储库中.
git clone user@host.com:/dir/to/repo
Run Code Online (Sandbox Code Playgroud)
无论你最初克隆的地方是"git pull"默认拉出的地方.
小智 5
在Windows上使用Msysgit在 Stack Overflow post Setup Git Server中严格添加Tim答案中的链接.
它完美地告诉我如何使用msysgit在Windows上设置Git ,这是一篇非常详细的文章.
Rebase解释摘自GIT的实用指南 - Travis Swicegood
第三章
16.通过重新定位重写历史
重新提交是Git中的一个概念,在传统的版本控制世界中没有对应的概念.使用git rebase,您可以通过各种方式重写存储库的历史记录.它是Git中最强大的命令之一,这使它成为最危险的命令之一.
rebase进行一系列提交(通常是一个分支)并在另一个提交(通常是另一个分支中的最后一次提交)之上重放它们.父提交会更改,以便重新计算所有提交ID.对于拥有代码的其他开发人员而言,这可能会导致问题,因为ID不匹配.使用git rebase有一个简单的经验法则:在本地提交中尽可能多地使用它.一旦您与其他开发人员共享更改,通常不值得麻烦.
| 归档时间: |
|
| 查看次数: |
692994 次 |
| 最近记录: |