Git与SVN对应

姚韬
2023-12-01

 (1)git clone 和 git pull在原理上都是复制过来,clone是在本地没有的情况下,原封不动的复制过来(从无到有),pull相当于本地有了,然后仓库又有了更新,然后给更新合并过来。
(2)pull在每次更新前的操作的目的是为了防止你写的代码去覆盖了别人改好了的代码。
(3)你的每一次提交都会保存在仓库里,覆盖的操作的确会发生,不过他自身是有冲突机制,如果有冲突可以手动解决

如果想看别人提交了什么得先Git pull一下,之后再去看log才可以看的到,否则不能看到别人最新提交的细节

那么git clone相当于SVN的 check out, 
git pull操作相当于是SVN的 update操作
commit是将修改提交到本地的仓库中去   ---------这一步在SVN中是没有的, 因为SVN没有本地管理
git的push命令相当于是 SVN的 commit    

git在commit之前需要使用 add命令 将文件添加到“缓存”中  (也就是从红字儿变成绿字儿)
如果说这些文件add之后 又不想commit了 可以通过使用 git reset HEAD FileName来将其从缓存中抹除,如果没有FileName那么会将缓存中的所有文件都给清除掉

还有个git reset -hard HEAD命令  其应该是将工作空间中修改的文件全部还原到本地版本,这个会让你的修改消失, 相当于是SVN的 revert命令, 可以相信这个后面也可以跟随文件名来
回复单个文件 (不过这个东西试了下好像不行)

git status相当于是svn的 check different命令,是用于查看当前工程里面有哪些修改的, 只不过 这个东西好像无法对单个文件或者单个文件夹使用,只能是全功能


git checkout命令可以 可以用来当revert来使用 (已经验证过,可以将修改恢复), 其还具有创建, 切换工作分支的功能

比如 git checkout lichee/brandy/u-boot-2014.07/common/cmd_mmc_verify_stress.c 就可以将该文件revert

git commit -a 可以帮你省去git add的步骤, 只对 修改或者删除的文件有效, 新文件还是要git add,否则新文件还是 untracked状态

git commit -m "ink commit"

git branch -a

 类似资料: