怎么修改gitgit 以修改历史提交交的代码

中国领先的IT技术网站
51CTO旗下网站
关于Git的撤销命令:如何在Git中撤销一切
当你完成了一次新的提交(commit),Git会及时存储当前时刻仓库(repository)的快照(snapshot);你能够使用Git将项目回退到任何之前的版本。
作者:来源:CocoaChina| 09:54
任何一个版本控制系统中,最有用的特性之一莫过于 &撤销(undo)&操作。在Git中,&撤销&有很多种含义。
当你完成了一次新的提交(commit),Git会及时存储当前时刻仓库(repository)的快照(snapshot);你能够使用Git将项目回退到任何之前的版本。
下文中,我将列举几个常见的、需要&撤销&的场景,并且展示如何使用Git来完成这些操作。
一、撤销一个公共修改 Undo a &public& change
场景:你刚刚用git push将本地修改推送到了GitHub,这时你意识到在提交中有一个错误。你想撤销这次提交。
使用撤销命令:git revert
发生了什么:git revert将根据给定SHA的相反值,创建一个新的提交。如果旧提交是&matter&,那么新的提交就是&anti-matter&&&旧提交中所有已移除的东西将会被添加进到新提交中,旧提交中增加的东西将在新提交中移除。
这是Git最安全、也是最简单的&撤销&场景,因为这样不会修改历史记录&&你现在可以git push下刚刚revert之后的提交来纠正错误了。
二、修改最近一次的提交信息 Fix the last commit message
场景:你只是在最后的提交信息中敲错了字,比如你敲了git commit -m &Fxies bug #42&,而在执行git push之前你已经意识到你应该敲&Fixes bug #42&。
使用撤销命令:git commit &amend或git commit --amend -m &Fixes bug #42&
发生了什么:git commit &amend将使用一个包含了刚刚错误提交所有变更的新提交,来更新并替换这个错误提交。由于没有staged的提交,所以实际上这个提交只是重写了先前的提交信息。
三、撤销本地更改 Undo &local& changes
场景:当你的猫爬过键盘时,你正在编辑的文件恰好被保存了,你的编辑器也恰在此时崩溃了。此时你并没有提交过代码。你期望撤销这个文件中的所有修改&&将这个文件回退到上次提交的状态。
使用撤销命令:git checkout --
发生了什么:git checkout将工作目录(working directory)里的文件修改成先前Git已知的状态。你可以提供一个期待回退分支的名字或者一个确切的SHA码,Git也会默认检出HEAD&&即:当前分支的上一次提交。
注意:用这种方法&撤销&的修改都将真正的消失。它们永远不会被提交。因此Git不能恢复它们。此时,一定要明确自己在做什么!(或许可以用git diff来确定)
四、重置本地修改 Reset &local& changes
场景:你已经在本地做了一些提交(还没push),但所有的东西都糟糕透了,你想撤销最近的三次提交&&就像它们从没发生过一样。
使用撤销命令:git reset或git reset --hard
发生了什么:git reset将你的仓库纪录一直回退到指定的最后一个SHA代表的提交,那些提交就像从未发生过一样。默认情况下,git reset会保留工作目录(working directory)。这些提交虽然消失了,但是内容还在磁盘上。这是最安全的做法,但通常情况是:你想使用一个命令来&撤销&所有提交和本地修改&&那么请使用--hard参数吧。
五、撤销本地后重做 Redo after undo &local&
场景:你已经提交了一些内容,并使用git reset &hard撤销了这些更改(见上面),突然意识到:你想还原这些修改!
使用撤销命令:git reflog和git reset, 或者git checkout
发生了什么:git reflog是一个用来恢复项目历史记录的好办法。你可以通过git reflog恢复几乎任何已提交的内容。
你或许对git log命令比较熟悉,它能显示提交列表。git reflog与之类似,只不过git reflog显示的是HEAD变更次数的列表。
一些说明:
1. 只有HEAD会改变。当你切换分支时,用git commit提交变更时,或是用git reset撤销提交时,HEAD都会改变。但当你用git checkout --时, HEAD不会发生改变。(就像上文提到的情形,那些更改根本就没有提交,因此reflog就不能帮助我们进行恢复了)
git reflog不会永远存在。Git将会定期清理那些&不可达(unreachable)&的对象。不要期望能够在reflog里找到数月前的提交记录。
reflog只是你个人的。你不能用你的reflog来恢复其他开发者未push的提交。
因此,怎样合理使用reflog来找回之前&未完成&的提交呢?这要看你究竟要做什么:
1. 如果你想恢复项目历史到某次提交,那请使用git reset --hard
2. 如果你想在工作目录(working direcotry)中恢复某次提交中的一个或多个文件,并且不改变提交历史,那请使用git checkout--
3. 如果你想确切的回滚到某次提交,那么请使用git cherry-pick。
六、与分支有关的那些事 Once more, with branching
场景:你提交了一些变更,然后你意识到你正在master分支上,但你期望的是在feature分支上执行这些提交。
使用撤销命令:git branch feature, git reset --hard origin/master, 和 git checkout feature
发生了什么:你可能用的是git checkout -b来建立新的分支,这是创建和检出分支的便捷方法&&但实际你并不想立刻切换分支。git branch feature会建立一个叫feature的分支,这个分支指向你最近的提交,但是你还停留在master分支上。
git reset --hard将master回退至origin/master,并忽略所有新提交。别担心,那些提交都还保留在feature上。
最后,git checkout将分支切换到feature,这个分支原封不动的保留了你最近的所有工作。
七、事半功倍处理分支 Branch in time saves nine
场景:你基于master新建了一个feature分支,但是master分支远远落后与origin/master。现在master分支与origin/master同步了,你期望此刻能在feature下立刻commit代码,并且不是在远远落后master的情况下。
使用撤销命令:git checkout feature和git rebase master
发生了什么:你也许已经敲了命令:git reset(但是没用--hard,有意在磁盘上保存这些提交内容),然后敲了git checkout -b,之后重新提交更改,但是那样的话,你将失去本地的提交记录。不过,一个更好的方法:
使用git rebase master可以做到一些事情:
1.首先,它定位你当前检出分支和master之间的共同祖先节点(common ancestor)。
2.然后,它将当前检出的分支重置到祖先节点(ancestor),并将后来所有的提交都暂存起来。
3.最后,它将当前检出分支推进至master末尾,同时在master最后一次提交之后,再次提交那些在暂存区的变更。
八、批量撤销/找回 Mass undo/redo
场景:你开始朝一个既定目标开发功能,但是中途你感觉用另一个方法更好。你已经有十几个提交,但是你只想要其中的某几个,其他的都可以删除不要。
使用撤销命令:git rebase -i
发生了什么:-i将rebases设置为&交互模式(interactive mode)&。rebase开始执行的操作就像上文讨论的一样,但是在重新执行某个提交时,它会暂停下来,让你修改每一次提交。
rebase &i将会打开你的默认文本编辑器,然后列出正在执行的提交,就像这样:
前两列最关键:第一列是选择命令,它会根据第二列中的SHA码选择相应的提交。默认情况下,rebase &i会认为每个更改都正通过pick命令被提交。
要撤销一个提交,直接在编辑器删除对应的行就可以了。如果在你的项目不再需要这些错误的提交,你可以直接删除上图中的第1行和3-4行。
如果你想保留提交但修改提交信息,你可以使用reword命令。即,将命令关键字pick换成reword(或者r)。你现在可能想立刻修改提交消息,但这么做不会生效&&rebase &i将忽略SHA列后的所有东西。现有的提交信息会帮助我们记住0835fe2代表什么。当你敲完rebase &i命令后,Git才开始提示你重写那些新提交消息。
如果你需要将2个提交合并,你可以用squash或者fixup命令,如下图:
squash和fixup都是&向上&结合的&&那些用了这些合并命令(编者按:指squash、fixup)的提交,将会和它之前的提交合并:上图中,43e85将会合并成一个提交,而38f5e4e和af67f82将会合并成另一个提交。
当你用squash时,Git将会提示是否填写新的提交消息;fixup则会给出列表中第一个提交的提交信息。在上图中,af67f82是一个&Ooops&信息,因为这个提交信息已经同38f5e4e一样了。但是你可以为43e85合并的新提交编写提交信息。
当你保存并退出编辑器时,Git将会按照从上到下的顺序执行你的提交。你可以在保存这些提交之前,修改提交的执行顺序。如果有需要,你可以将af67f82和0835fe2合并,并且可以这样排序:
九、修复早先的提交 Fix an earlier commit
场景:之前的提交里落下了一个文件,如果先前的提交能有你留下的东西就好了。你还没有push,并且这个提交也不是最近的提交,因此你不能用commit &amend。
使用撤销命令:git commit --squash和git rebase --autosquash -i
发生了什么:git commit &squash将会创建一个新的提交,该提交信息可能像这样&squash! Earlier commit&。(你也可以手写这些提交信息,commit &squash只是省得让你打字了)。
如果你不想为合并的提交编写信息,也可以考虑使用命令git commit --fixup。这种情况下,你可能会使用commit --fixup,因为你仅希望在rebase中使用之前的提交信息。
rebase --autosquash &i将会启动rebase交互编辑器,编辑器会列出任何已完成的squash!和fixup!提交,如下图:
当使用--squash和&fixup时,你或许记不清你想修复的某个提交的SHA码&&只知道它可能在一个或五个提交之前。你或许可以使用Git的^和~操作符手动找回。HEAD^表示HEAD的前一次提交。HEAD~4表示HEAD前的4次提交,加起来总共是前5次提交。
十、停止跟踪一个已被跟踪的文件 Stop tracking a tracked file
场景:你意外将application.log添加到仓库中,现在你每次运行程序,Git都提示application.log中有unstaged的提交。你在.gitignore中写上&*.log&,但仍旧没用&&怎样告诉Git&撤销&跟踪这个文件的变化呢?
使用撤销命令: git rm --cached application.log
发生了什么:尽管.gitignore阻止Git跟踪文件的变化,甚至是之前没被跟踪的文件是否存在,但是,一旦文件被add或者commit,Git会开始持续跟踪这个文件的变化。类似的,如果你用git add &f来&强制&add,或者覆盖.gitignore,Git还是会继续监视变化。所以以后最好不要使用&f来add .gitignore文件。
如果你希望移除那些应当被忽略的文件,git rm &cached可以帮助你,并将这些文件保留在磁盘上。因为这个文件现在被忽略了,你将不会在git status中看到它,也不会再把这个文件commit了。
以上就是如何在Git上撤销的方法。如果你想学习更多Git命令用法,可以移步下面相关的文档:
【编辑推荐】
【责任编辑: TEL:(010)】
大家都在看猜你喜欢
原创聚焦热点原创热点
24H热文一周话题本月最赞
讲师:89647人学习过
讲师:133431人学习过
讲师:250779人学习过
精选博文论坛热帖下载排行
本书全面深入地介绍了在网络的日常管理中,网络管理员必须掌握的知识,包括系统基本管理、性能调优、故障恢复、域控制器管理、存储资源管理...
订阅51CTO邮刊1222人阅读
很多时候,在 Git 上工作的时候,你也许会由于某种原因想要修订你的提交历史。Git 的一个卓越之处就是它允许你在最后可能的时刻再作决定。你可以在你即将提交暂存区时决定什么文件归入哪一次提交,你可以使用 stash 命令来决定你暂时搁置的工作,你可以重写已经发生的提交以使它们看起来是另外一种样子。这个包括改变提交的次序、改变说明或者修改提交中包含的文件,将提交归并、拆分或者完全删除——这一切在你尚未开始将你的工作和别人共享前都是可以的。
在这一节中,你会学到如何完成这些很有用的任务以使你的提交历史在你将其共享给别人之前变成你想要的样子。
改变最近一次提交
改变最近一次提交也许是最常见的重写历史的行为。对于你的最近一次提交,你经常想做两件基本事情:改变提交说明,或者改变你刚刚通过增加,改变,删除而记录的快照。
如果你只想修改最近一次提交说明,这非常简单:
$ git commit --amend
这会把你带入文本编辑器,里面包含了你最近一次提交说明,供你修改。当你保存并退出编辑器,这个编辑器会写入一个新的提交,里面包含了那个说明,并且让它成为你的新的最近一次提交。
如果你完成提交后又想修改被提交的快照,增加或者修改其中的文件,可能因为你最初提交时,忘了添加一个新建的文件,这个过程基本上一样。你通过修改文件然后对其运行git add或对一个已被记录的文件运行git rm,随后的git commit --amend会获取你当前的暂存区并将它作为新提交对应的快照。
使用这项技术的时候你必须小心,因为修正会改变提交的SHA-1值。这个很像是一次非常小的rebase——不要在你最近一次提交被推送后还去修正它。
修改多个提交说明
要修改历史中更早的提交,你必须采用更复杂的工具。Git没有一个修改历史的工具,但是你可以使用rebase工具来衍合一系列的提交到它们原来所在的HEAD上而不是移到新的上。依靠这个交互式的rebase工具,你就可以停留在每一次提交后,如果你想修改或改变说明、增加文件或任何其他事情。你可以通过给git rebase增加-i选项来以交互方式地运行rebase。你必须通过告诉命令衍合到哪次提交,来指明你需要重写的提交的回溯深度。
例如,你想修改最近三次的提交说明,或者其中任意一次,你必须给git rebase -i提供一个参数,指明你想要修改的提交的父提交,例如HEAD~2或者HEAD~3。可能记住~3更加容易,因为你想修改最近三次提交;但是请记住你事实上所指的是四次提交之前,即你想修改的提交的父提交。
$ git rebase -i HEAD~3
再次提醒这是一个衍合命令——HEAD~3..HEAD范围内的每一次提交都会被重写,无论你是否修改说明。不要涵盖你已经推送到中心服务器的提交——这么做会使其他开发者产生混乱,因为你提供了同样变更的不同版本。
运行这个命令会为你的文本编辑器提供一个提交列表,看起来像下面这样
pick f7f3f6d changed my name a bit
pick 310154e updated README formatting and added blame
pick a5f4a0d added cat-file
# Rebase 710f0f8..a5f4a0d onto 710f0f8
# Commands:
p, pick = use commit
e, edit = use commit, but stop for amending
s, squash = use commit, but meld into previous commit
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
很重要的一点是你得注意这些提交的顺序与你通常通过log命令看到的是相反的。如果你运行log,你会看到下面这样的结果:
$ git log --pretty=format:&%h %s& HEAD~3..HEAD
a5f4a0d added cat-file
310154e updated README formatting and added blame
f7f3f6d changed my name a bit
请注意这里的倒序。交互式的rebase给了你一个即将运行的脚本。它会从你在命令行上指明的提交开始(HEAD~3)然后自上至下重播每次提交里引入的变更。它将最早的列在顶上而不是最近的,因为这是第一个需要重播的。
你需要修改这个脚本来让它停留在你想修改的变更上。要做到这一点,你只要将你想修改的每一次提交前面的pick改为edit。例如,只想修改第三次提交说明的话,你就像下面这样修改文件:
edit f7f3f6d changed my name a bit
pick 310154e updated README formatting and added blame
pick a5f4a0d added cat-file
当你保存并退出编辑器,Git会倒回至列表中的最后一次提交,然后把你送到命令行中,同时显示以下信息:
$ git rebase -i HEAD~3
Stopped at 7482e0d... updated the gemspec to hopefully work better
You can amend the commit now, with
git commit --amend
Once you’re satisfied with your changes, run
git rebase --continue
这些指示很明确地告诉了你该干什么。输入
$ git commit --amend
修改提交说明,退出编辑器。然后,运行
$ git rebase --continue
这个命令会自动应用其他两次提交,你就完成任务了。如果你将更多行的 pick 改为 edit ,你就能对你想修改的提交重复这些步骤。Git每次都会停下,让你修正提交,完成后继续运行。
你也可以使用交互式的衍合来彻底重排或删除提交。如果你想删除”added cat-file”这个提交并且修改其他两次提交引入的顺序,你将rebase脚本从这个
pick f7f3f6d changed my name a bit
pick 310154e updated README formatting and added blame
pick a5f4a0d added cat-file
改为这个:
pick 310154e updated README formatting and added blame
pick f7f3f6d changed my name a bit
当你保存并退出编辑器,Git 将分支倒回至这些提交的父提交,应用310154e,然后f7f3f6d,接着停止。你有效地修改了这些提交的顺序并且彻底删除了”added cat-file”这次提交。
压制(Squashing)提交
交互式的衍合工具还可以将一系列提交压制为单一提交。脚本在 rebase 的信息里放了一些有用的指示:
# Commands:
p, pick = use commit
e, edit = use commit, but stop for amending
s, squash = use commit, but meld into previous commit
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
如果不用”pick”或者”edit”,而是指定”squash”,Git 会同时应用那个变更和它之前的变更并将提交说明归并。因此,如果你想将这三个提交合并为单一提交,你可以将脚本修改成这样:
pick f7f3f6d changed my name a bit
squash 310154e updated README formatting and added blame
squash a5f4a0d added cat-file
当你保存并退出编辑器,Git 会应用全部三次变更然后将你送回编辑器来归并三次提交说明。
# This is a combination of 3 commits.
# The first commit's message is:
changed my name a bit
# This is the 2nd commit message:
updated README formatting and added blame
# This is the 3rd commit message:
added cat-file
当你保存之后,你就拥有了一个包含前三次提交的全部变更的单一提交。
拆分提交就是撤销一次提交,然后多次部分地暂存或提交直到结束。例如,假设你想将三次提交中的中间一次拆分。将”updated README formatting and added blame”拆分成两次提交:第一次为”updated README formatting”,第二次为”added blame”。你可以在rebase -i脚本中修改你想拆分的提交前的指令为”edit”:
pick f7f3f6d changed my name a bit
edit 310154e updated README formatting and added blame
pick a5f4a0d added cat-file
然后,这个脚本就将你带入命令行,你重置那次提交,提取被重置的变更,从中创建多次提交。当你保存并退出编辑器,Git 倒回到列表中第一次提交的父提交,应用第一次提交(f7f3f6d),应用第二次提交(310154e),然后将你带到控制台。那里你可以用git reset HEAD^对那次提交进行一次混合的重置,这将撤销那次提交并且将修改的文件撤回。此时你可以暂存并提交文件,直到你拥有多次提交,结束后,运行git rebase
--continue。
$ git reset HEAD^
$ git add README
$ git commit -m 'updated README formatting'
$ git add lib/simplegit.rb
$ git commit -m 'added blame'
$ git rebase --continue
Git在脚本中应用了最后一次提交(a5f4a0d),你的历史看起来就像这样了:
$ git log -4 --pretty=format:&%h %s&
1c002dd added cat-file
9b29157 added blame
35cfb2b updated README formatting
f3cc40e changed my name a bit
再次提醒,这会修改你列表中的提交的 SHA 值,所以请确保这个列表里不包含你已经推送到共享仓库的提交。
核弹级选项: filter-branch
如果你想用脚本的方式修改大量的提交,还有一个重写历史的选项可以用——例如,全局性地修改电子邮件地址或者将一个文件从所有提交中删除。这个命令是filter-branch,这个会大面积地修改你的历史,所以你很有可能不该去用它,除非你的项目尚未公开,没有其他人在你准备修改的提交的基础上工作。尽管如此,这个可以非常有用。你会学习一些常见用法,借此对它的能力有所认识。
从所有提交中删除一个文件
这个经常发生。有些人不经思考使用git add .,意外地提交了一个巨大的二进制文件,你想将它从所有地方删除。也许你不小心提交了一个包含密码的文件,而你想让你的项目开源。filter-branch大概会是你用来清理整个历史的工具。要从整个历史中删除一个名叫password.txt的文件,你可以在filter-branch上使用--tree-filter选项:
$ git filter-branch --tree-filter 'rm -f passwords.txt' HEAD
Rewrite 6b9b3cf04e7c8c3f36a8cb6a0fc2bd (21/21)
Ref 'refs/heads/master' was rewritten
--tree-filter选项会在每次检出项目时先执行指定的命令然后重新提交结果。在这个例子中,你会在所有快照中删除一个名叫 password.txt 的文件,无论它是否存在。如果你想删除所有不小心提交上去的编辑器备份文件,你可以运行类似git filter-branch --tree-filter 'rm -f *~' HEAD的命令。
你可以观察到 Git 重写目录树并且提交,然后将分支指针移到末尾。一个比较好的办法是在一个测试分支上做这些然后在你确定产物真的是你所要的之后,再 hard-reset 你的主分支。要在你所有的分支上运行filter-branch的话,你可以传递一个--all给命令。
将一个子目录设置为新的根目录
假设你完成了从另外一个代码控制系统的导入工作,得到了一些没有意义的子目录(trunk, tags等等)。如果你想让trunk子目录成为每一次提交的新的项目根目录,filter-branch也可以帮你做到:
$ git filter-branch --subdirectory-filter trunk HEAD
Rewrite 856f0bf61e41a27326cdae8f09fe708d679f596f (12/12)
Ref 'refs/heads/master' was rewritten
现在你的项目根目录就是trunk子目录了。Git 会自动地删除不对这个子目录产生影响的提交。
全局性地更换电子邮件地址
另一个常见的案例是你在开始时忘了运行git config来设置你的姓名和电子邮件地址,也许你想开源一个项目,把你所有的工作电子邮件地址修改为个人地址。无论哪种情况你都可以用filter-branch来更换多次提交里的电子邮件地址。你必须小心一些,只改变属于你的电子邮件地址,所以你使用--commit-filter:
$ git filter-branch --commit-filter '
if [ &$GIT_AUTHOR_EMAIL& = &schacon@localhost& ];
GIT_AUTHOR_NAME=&Scott Chacon&;
GIT_AUTHOR_EMAIL=&&;
git commit-tree &$@&;
git commit-tree &$@&;
这个会遍历并重写所有提交使之拥有你的新地址。因为提交里包含了它们的父提交的SHA-1值,这个命令会修改你的历史中的所有提交,而不仅仅是包含了匹配的电子邮件地址的那些。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:15133次
排名:千里之外
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'2011年8月 移动平台大版内专家分月排行榜第二2011年7月 移动平台大版内专家分月排行榜第二2011年3月 移动平台大版内专家分月排行榜第二
2012年8月 移动平台大版内专家分月排行榜第三2012年7月 移动平台大版内专家分月排行榜第三
2011年8月 移动平台大版内专家分月排行榜第二2011年7月 移动平台大版内专家分月排行榜第二2011年3月 移动平台大版内专家分月排行榜第二
2012年8月 移动平台大版内专家分月排行榜第三2012年7月 移动平台大版内专家分月排行榜第三
2011年11月 专题开发/技术/项目大版内专家分月排行榜第二2011年8月 专题开发/技术/项目大版内专家分月排行榜第二
2011年8月 移动平台大版内专家分月排行榜第二2011年7月 移动平台大版内专家分月排行榜第二2011年3月 移动平台大版内专家分月排行榜第二
2012年8月 移动平台大版内专家分月排行榜第三2012年7月 移动平台大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。如何使用egit将本地代码提交到托管平台 - 知乎专栏
{"debug":false,"apiRoot":"","paySDK":"/api/js","wechatConfigAPI":"/api/wechat/jssdkconfig","name":"production","instance":"column","tokens":{"X-XSRF-TOKEN":null,"X-UDID":null,"Authorization":"oauth c3cef7c66aa9e6a1e3160e20"}}
{"database":{"Post":{"":{"contributes":[],"title":"如何使用egit将本地代码提交到托管平台","author":"kai-fa-xiao-neng-shou","content":"本文将讲述如何使用eclipse中的egit插件,将代码提交到git托管平台。Eclipse版本:4.7.0 自带egit插件云端托管平台:本地git工具安装&环境配置a) 如果没有安装git客户端,请到下 载最新版本安装完成,运行Git Bash,在弹出终端进行如下配置b) egit安装查看自己的eclipse是否已经安装了egit插件,打开eclipse的主页,点击【help】菜单,选择【About Eclipse】选项,点击【Installation Details】按钮,查看安装详细。本文下 载安装版本为eclipse 4.7.0,默认安装了egit插件。如果eclipse没有自带egit,也可以选择【Install New Software…】在线安装。c) egit配置用户信息在【windows】-&【Preferences】-&【Git】-&【Configuration】下配置用户名,邮箱信息。可以直接选择电脑中已经存在的.gitconfig文件,也可以点击“Add Entry…”在弹出的对话框中添加,例如:Key填user.name,Value填姓名信息。提交代码到本地仓库a)创建本地仓库鼠标选中要发布的项目,单击右键,【Team】-& 【Share Project】-&【Git】,点击Next。勾选Use or create repository in parent folder of project,选中要发布的项目,点击Create Repository,点击Finish完成。提示:不选中Create Repository的时候,Finish是置灰的不可选状态。此时,本地git仓库创建完成,在项目的根目录下产生了一个.git文件夹,eclipse的项目文件夹图标也都有“问号”显示,这表示这些已经修改的文件还未被git版本管理系统跟踪。b) 提交代码到本地暂存区。鼠标选中要发布的项目,单击右键,【Team】-& 【Add to index】,将本地未修改的文件加入暂存区,eclipse的项目文件夹图标也有“加号”显示。c) 提交代码到本地仓库鼠标选中要发布的项目,单击右键,【Team】-& 【commit…】,将本地未修改的文件提交到本地仓库。在弹出的对话框中,commit Message 写上提交的简要描述,建议详细写明前后修改的背景,影响范围等信息;下面的Author和Committer会自动根据.gitconfig的配置信息不全。d) 查看提交历史记录鼠标选中要查看的项目,单击右键,【Team】-& 【Show in History】,此时仓库中已创建了master分支。3.配置本地和云端仓库的ssh秘钥a) 本地生成ssh密钥。运行 Git Bash, 在弹出的终端中输入下面命令。在回车中会提示你输入一个密码,不输入一路回车即可。b) 拷贝ssh密钥到开发云页面。PC端Git Bash执行命令拷贝公钥开发云端粘贴公钥d) egit选择ssh秘钥在【windows】-&【Preferences】-&【Network Connections】-&【SSH2】中加载已经产生的私钥4. 推送本地代码到软件开发云a) 在开发云端新建代码仓库 图片中未选择“允许生成README文件”和任何模板,建立了一个空仓库。b) 复制仓库地址点击下图标红图标,复制开发云仓库的地址。c) 推送本地代码到开发云仓库鼠标选中要推送的项目,单击右键,选择【Team】-& 【Push Branch master】在URL中填写复制的开发云仓库地址,Host 和Repository path会自动补全,连接协议类型选择SSH,选择Next就可以成功推送到远端了。d) 在开发云查看提交记录总结,eclipse的很多版本都已经支持了egit插件的使用,对于习惯使用eclipseIDE的开发者来说,egit的方便与快捷,极大的降低了git工具的学习成本。","updated":"T06:38:58.000Z","canComment":false,"commentPermission":"anyone","commentCount":0,"collapsedCount":0,"likeCount":0,"state":"published","isLiked":false,"slug":"","isTitleImageFullScreen":false,"rating":"none","titleImage":"","links":{"comments":"/api/posts//comments"},"reviewers":[],"topics":[{"url":"/topic/","id":"","name":"Git"}],"adminClosedComment":false,"titleImageSize":{"width":0,"height":0},"href":"/api/posts/","excerptTitle":"","tipjarState":"closed","annotationAction":[],"sourceUrl":"","pageCommentsCount":0,"hasPublishingDraft":false,"snapshotUrl":"","publishedTime":"T14:38:58+08:00","url":"/p/","lastestLikers":[],"summary":"本文将讲述如何使用eclipse中的egit插件,将代码提交到git托管平台。Eclipse版本:4.7.0 自带egit插件云端托管平台:本地git工具安装&环境配置a) 如果没有安装git客户端,请到下 载最新版本安装完成,运行Git Bash,在…","reviewingCommentsCount":0,"meta":{"previous":null,"next":null},"annotationDetail":null,"commentsCount":0,"likesCount":0,"FULLINFO":true}},"User":{"kai-fa-xiao-neng-shou":{"isFollowed":false,"name":"开发小能手","headline":"","avatarUrl":"/da8e974dc_s.jpg","isFollowing":false,"type":"people","slug":"kai-fa-xiao-neng-shou","bio":"软件开发","hash":"8ac9aeef437e7a7b93ad5d947fa008fe","uid":657200,"isOrg":false,"description":"","profileUrl":"/people/kai-fa-xiao-neng-shou","avatar":{"id":"da8e974dc","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false,"badge":{"identity":null,"bestAnswerer":null}}},"Comment":{},"favlists":{}},"me":{},"global":{},"columns":{"next":{}},"columnPosts":{},"columnSettings":{"colomnAuthor":[],"uploadAvatarDetails":"","contributeRequests":[],"contributeRequestsTotalCount":0,"inviteAuthor":""},"postComments":{},"postReviewComments":{"comments":[],"newComments":[],"hasMore":true},"favlistsByUser":{},"favlistRelations":{},"promotions":{},"switches":{"couldAddVideo":false},"draft":{"titleImage":"","titleImageSize":{},"isTitleImageFullScreen":false,"canTitleImageFullScreen":false,"title":"","titleImageUploading":false,"error":"","content":"","draftLoading":false,"globalLoading":false,"pendingVideo":{"resource":null,"error":null}},"drafts":{"draftsList":[],"next":{}},"config":{"userNotBindPhoneTipString":{}},"recommendPosts":{"articleRecommendations":[],"columnRecommendations":[]},"env":{"isAppView":false,"appViewConfig":{"content_padding_top":128,"content_padding_bottom":56,"content_padding_left":16,"content_padding_right":16,"title_font_size":22,"body_font_size":16,"is_dark_theme":false,"can_auto_load_image":true,"app_info":"OS=iOS"},"isApp":false},"sys":{}}

我要回帖

更多关于 git提交代码修改名字 的文章

 

随机推荐