由于以前折腾过svn,虽然最终没有用成功,但是也算有经验,git入门还是比较简单的。
在新目录下建立初始化版本库 : git init
git add file
git add file2
git commit -m "add files"
git reset --hard HEAD^ (HEAD表示最新版本,^表示上一个版本 ^^表示上面第二个版本,HEAD~100表示前面第100个)
可以通过git reset --hard 89123432 来得到版本 数字为 commit以后给的版本id(svn的版本id为1 2 3递增,但是git是分布式的,避免多地不同用户的重复使用了很长的id)
可以通过 git log 查看提交的操作与版本号
可以通过 git diff file 来查看文件的更改
如果关闭窗口以后记不得 id,可以通过git reflog来查看所操作的历史记录与版本号, 再通过git reset --hard id来恢复版本
git checkout -- file可以恢复上一次git add 或者是git commit之后的所有操作
要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git
;
关联后,使用命令git push -u origin master
第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master
推送最新修改;
分布式版本系统的最大好处之一是在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作,而SVN在没有联网的时候是拒绝干活的!当有网络的时候,再把本地提交推送一下就完成了同步,真是太方便了!
要克隆已有的远程库,可以通过 git clone 来操作:
git clone git@github.com:wllck/gitskills.git
Git鼓励大量使用分支:
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
开发一个新feature,最好新建一个分支;
如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>
强行删除。
需要修复bug时(此时在dev分支工作未完成未提交),我们会通过创建新的bug分支(在master分支创建)进行修复,然后合并,最后删除;
当手头工作没有完成时,先把工作现场git stash
一下,然后去修复bug,修复后,再git stash pop
,回到工作现场。
多人协作的工作模式通常是这样:
-
首先,可以试图用
git push origin branch-name
推送自己的修改; -
如果推送失败,则因为远程分支比你的本地更新,需要先用
git pull
试图合并; -
如果合并有冲突,则解决冲突,并在本地提交;
-
没有冲突或者解决掉冲突后,再用
git push origin branch-name
推送就能成功!
如果git pull
提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name
。
这就是多人协作的工作模式,一旦熟悉了,就非常简单。
命令简化:通过alias.来简化“”内的原始命令
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"