git,git-svn使用中遇到的问题

原创 2017年05月13日 10:32:05

git使用注意点

这三大部分中:

working tree:就是你所工作在的目录,每当你在代码中进行了修改,working tree的状态就改变了。
index file:是索引文件,它是连接working tree和commit的桥梁,每当我们使用git-add命令来登记后,index file的内容就改变了,此时index file就和working tree同步了。
commit:是最后的阶段,只有commit了,我们的代码才真正进入了git仓库。我们使用git-commit就是将index file里的内容提交到commit中。
总结一下:
git diff:是查看working tree与index file的差别的。
git diff --cached:是查看index file与commit的差别的。
git diff HEAD:是查看working tree和commit的差别的。(你一定没有忘记,HEAD代表的是最近的一次commit的信息)

git常见的错误处理
http://blog.csdn.net/dengjianqiang2011/article/details/9260435

版本回退:
1.根据commitID
 git --hard commitID

2.上个版本
 git --hard HEAD^

撤销修改三种情景:

① 修改后 未add(添加到暂存区) 需要撤销修改时:
        git checkout -- myfile.txt 或 手动删除工作区修改
        工作区 : clean  暂存区: clean
② 修改后 add了(未commit) 再次修改文件  要撤销第二次修改时:
        git checkout -- myfile.txt (将暂存区恢复到工作区)
        暂存区有第一次的修改需要commit
③ 修改后 add了(未commit),需要撤销修改时:
        git reset HEAD myfile.txt (将暂存区修改删除)
        此时工作区的修改还未撤销
        git checkout -- myfile.txt (撤销工作区修改)
④ 修改后 add并commit了,需要撤销修改时:
        git reset --hard HEAD^  (版本回退)**


删除文件:

①修改工作区,未add。
git checkout -- test.txt
②修改工作区,add,未commit。
reset HEAD  master 覆盖 stage 回到①。
git reset HEAD -- file
  然后再使用 checkout 
git checkout -- test.txt
③修改工作区,add,未commit, 又修改工作区。
用checkout 则回到②。
用reset HEAD 则回到①。
④ 修改后 add并commit了
先从master回收处恢复到master中
  git reset --hard HEAD^
再从master中把已删除信息copy到到stage区
git reset HeAD -- test.txt
最后从stage区把已删除信息copy到工作区
git checkout -- test.txt

连接远程库:
git remote add origin git@github.com:michaelliao/learngit.git


把本地所有的内容推送到远程库:
git push -u origin master

本地提交代码到远程库:
git push origin master

合并分支:
合并某分支到当前分支:git merge <name>
git merge dev
然后切换到master,在git add . 然后再 git commit -m"xx" 最后 git push origion master 到远程库

创建特殊文件
touch .gitignore
添加到特殊文件 更改还是不起作用
git rm --cached logs/xx.log,然后更新 .gitignore 忽略掉目标文件,最后 git commit -m "We really don't want Git to track this anymore!"


git,svn协同

svn作为一个优秀源码版本的管理工具,可以适合绝大多数项目。但是因为它的采用中心化管理,不可避免的存在本地代码的备份和版本管理问题。也就是说对于尚未或暂无法提交到Subversion服务器的本地代码来说,存在着被误删除和版本更新无法回退两大情形。
git作为一个分布式版本管理工具,可以很好的解决这个问题。因为它的大多数操作是在本地进行的。这里要说的是git是如何做到既可以管理好本地代码又可以与已有的SVN中心库进行同步的。
支持去中心化,是Git与生俱来的特性,它在本地保留了从中心服务器clone出来的源码库的全部信息,这样,你在本地修改完代码后便可以直接提交到本地 的代码版本库中。本地代码的备份和版本管理的问题就这样被Git轻而一举的就解决了。而本地源码库与SVN中心源码库的同步操作则是由Git提供的 git-svn工具来完成的。
下面是一个git-svn的一般使用流程:
1、git-svn clone svn_repository
2、修改本地代码,使用git add/commit将修改提交到本地git库
3、定期使用git-svn rebase获取中心svn repository的更新
4、使用git-svn dcommit命令将本地git库的修改同步到中心svn库
检出一个已存在svn repository(类似于svn checkout)
可以通过git-svn clone命令完成这个操作: git-svn clone svn_repository_url
一般情况下git svn clone这个操作会从第一个版本开始同步,如果版本号已经到了好几万(或更高?),这个操作会相当的费时。这时可以使用参数-r$REVNUMBER:HEAD检出指定版本后的代码。
因此,更好的步骤应该是这样:
svn info svn_repository_url, 记录最后的版本号,假设是260
假设要检出最后5个版本,做个简单的减法: 260 – 5 = 255
开始clone操作了:git-svn clone -r255:HEAD svn_repository_url
从中心服务器的svn repository获取最新更新
这个操作可以通过”git-svn rebase”完成。注意这里用的是rebase,而不是update。update命令对于通过git-svn检出的svn repostory的git版本库是不可用的。
查看提交历史日志
使用”git-svn log”,加上-v选项,还可以提供每次commit操作涉及的相关文件的详细信息。
将本地代码同步到Svn服务器
完成这一操作需要通过”git-svn dcommit”命令。这个命令会将你在本地使用git commit提交到本地代码库的所有更改逐一提交到svn库中。加上-n选项,则该命令不会真正执行commit到svn的操作,而是会显示会有哪些本地 变动将被commit到svn服务器。git-svn dcommit似乎不能单独提交某个本地版本的修改,而是一次批量提交所有与svn中心版本库的差异。
提交时的冲突解决:
如果你正在提交的文件在svn服务器上已经被别人改过,就会发生提交冲突。通常解决方法如下:
首先使用git-svn rebase获取svn服务器上的最新冲突文件,比如:conflict.c,这将导致与本地conflict.c冲突,不过此时svn版本信息已经添加到本地git库中(通过git log可以查看),git-svn rebase提示你在解决conflict.c的冲突后,运行git rebase –continue完成rebase操作
打开conflict.c,修改代码,解决冲突
执行git rebase –continue,git提示:You must edit all merge conflicts and then mark them as resolved using git add
执行git add conflict.c,告知git已完成冲突解决
再次执行git rebase –continue,提示”Applying: git xxx”,此时”git xxx”版本又一次成功加入本地版本库,可通过git log查看;
执行git-svn dcommit将conflict.c的改动同步到svn中心库,到此算是完成一次冲突解决。






http://blog.chinaunix.net/uid-11639156-id-3077471.html




svn转型到Git过程中,一直有使用git svn场景,针对一些遇到的问题和常用功能总结一下:


1.git svn导出: 
git svn clone “svn路径”


2.git svn提交: 
git add .(或者对应的X文件) 
git commit -m “log信息” 
前两部可以合并成 git commit -am “log信息” 
git svn dcommit(最后一步提交到了svn上)


3.git svn更新: 
git svn rebase


4.git svn部分提交: 
git add “xx文件” 
git commit -m “log信息” 
git stash(重要一步,把本地未提交的文件缓存) 
git svn dcommit 
git stash apply恢复本地修改。


5.git svn更新后冲突处理:
update-index --refresh: command returned error: 1




网上提到的解决方式是本地做branch然后先更新在merge,我觉得比较麻烦。我的方式: 
1.git stash 
2.git svn rebase 
3. git stash apply 
4. 如果提示冲突:git修改就可以了。


6.放弃本地修改: 
git reset –hard HEAD


7.git svn 创建分支: 
git svn branch “xx branch” -m “xxx log”。创建远程svn服务器的branch,附上log信息。

8.git远程仓库地址连接有问题重新连接新的远程地址操作:
(1) 修改命令 
git remte origin set-url URL 
(2)先删后加 
git remote rm origin 
git remote add origin git@github.com:Liutos/foobar.git 
(3) 直接修改config文件


vi命令


保存命令:
按ESC键 跳到命令模式,然后:
:w   保存文件但不退出vi
:w file 将修改另外保存到file中,不退出vi
:w!   强制保存,不推出vi
:wq  保存文件并退出vi
:wq! 强制保存文件,并退出vi
q:  不保存文件,退出vi
:q! 不保存文件,强制退出vi
:e! 放弃所有修改,从上次保存文件开始再编辑














相关文章推荐

Git Rebase教程: 用Git Rebase让时光倒流

https://linux.cn/article-4046-1.html 想象一下你正在开发一个激进的新功能。这将是很灿烂的但它需要一段时间。您这几天也许是几个星期一直在做这个。 ...

GIT版本控制 — GIT与SVN的相互转换 (三)

git-svn   git-svn用于Git和SVN的转换,可以把Git仓库迁移成SVN仓库,反之亦可。 详细介绍可见[1],或者命令行输入git-svn。   Bidirectional ...
  • zhangskd
  • zhangskd
  • 2015年02月14日 15:48
  • 20950

git svn处理冲突

来源:http://stackoverflow.com/questions/112839/how-to-resolve-a-conflict-with-git-svn After some go...
  • enlangs
  • enlangs
  • 2015年04月01日 14:06
  • 1102

apicloud git-svn 地址冲突,导致代码管理功能不可用.这个问题是由 windows 系统自身DLL加载机制引起的.一般重启电脑即可解决

今天突然apicloud就不好用了,无法检出代码也无法提交代码,想了很多办法都无果. 报错: git-svn 地址冲突,导致代码管理功能不可用.这个问题是由 windows 系统自身DLL加载机制...

Git和SVN共存的方法

刚工作的时候都是用的cvs和svn,对git不熟悉,随着工作的需要,打分支和版本管理的需要,熟悉起来了git,这一用不可收拾,比svn远远好用,尤其是版本分支管理上,切换分支的方便性,现在这家公司还是...

git-svn使用用法

  • 2013年05月28日 12:55
  • 450KB
  • 下载

git&gerrit 使用过程中遇到的问题及解决方法

公司中使用git进行代码管理, 使用gerrit 来做code review及权限管理。 在使用的过程中, 遇到了不少问题, 现把它分享出来, 供大家参考。 1 push 失败 【现象】git p...

IntelliJ IDEA使用git中遇到的问题

在idea中如果使用图形界面操作git,会遇到一些问题,下面就是记录个人在使用过程中的问题。 首先我在cms_add_model新建了一个文件,假如新建了个类GitTest.java,则你切换到add...

Android Studio 使用 git 遇到的问题

1. 无法commit 因为会检查代码,就算没有错误,只有警告它也会让你无法提交。不会像单个文件的提交一样,提示你选择Review还是继续commit。所以就取消提交页面的“Perform co...

git的使用及遇到的问题(本地代码托管到github)

1.首先下载git,下载地址https://git-scm.com/downloads 选择自己电脑的对应版本 2.下载安装:一直next即可 3.博主用的是window系统故以window为例(...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:git,git-svn使用中遇到的问题
举报原因:
原因补充:

(最多只允许输入30个字)