五.回滚操作
如何放弃当前的修改是我之前一直想知道的,现在有答案了。
回滚包括将stage的文件回滚到unstaged的状态和将modified的文件回滚到修改之前的状态,即回滚到版本库中最近一次提交的内容。
从staged->unstaged: git reset HEAD <文件>
从modified->unmodified:git checkout --<文件>(这个命令是git 1.6.1和之后的版本才有的,但是注意风险,因为一旦做了这个操作,修改后的内容就找不回来了)
问题:如何回滚版本库里的文件?
网上参考答案:
------------------------------------------BEGIN---------------------------------------------------
git reset是指将当前head的内容重置,不会留log信息。
git reset HEAD filename 从暂存区中移除文件
git reset –hard HEAD~3 会将最新的3次提交全部重置,就像没有提交过一样。
git reset –hard commit (38679ed709fd0a3767b79b93d0fba5bb8dd235f8) 回退到 38679ed709fd0a3767b79b93d0fba5bb8dd235f8 版本
根据–soft –mixed –hard,会对working tree和index和HEAD进行重置:
git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息
git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容
--------------------------------------------END---------------------------------------------------
六.远程版本库
从远程拷贝git clone URL
查看远程版本库的branch信息:进入克隆下来的目录,git remote,可显示远程的branch。
git remote -v可显示远程URL
当远程版本库有分支时,你可以选择添加某一个分支
git remote add <别名> <分支URL>
例如 git add pb git://github.com/paulbone/ticgit.git
现在再git remote -v就可以看到origin和pb两个branch了,其中origin是default的。
可以取出某个分支的最新代码:git fetch <分支>,可以看到pb/master便是取出的代码,它并没有合并到当前的工作目录里。如果要fetch并merge的话可以用git pull <分支>
六.分支的建立与rebase
创建分支:git branch <分支>
切换分支:git checkout <分支>
将另一个分支的内容合并到本分支:先切换到要被合并内容的分支,然后git merge <另一分支>
merge时当同一个文件同一部分产生了内容冲突时,需要手动修改冲突的文件然后再stage该文件。可以用git mergetool来图形化操作。
查看已经merge到本分支的所有分支:git branch --merged
可以删除已经merge过的分支:git branch -d <分支>
查看没有merge到本分支的所有分支:git branch --no-merged
删除没有merge过的分支:git branch -D <分支>, 即强制删除
七.远程分支