Git

  • Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目

版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统

git与svn的区别:

gitsvn
分布式版本控制系统集中式版本控制系统
将项目缓存在本地再推送到服务器直接与服务器进行交互
不需联网需联网
不易冲突易冲突
旨在代码管理旨在项目管理
适用于单项目开发适用于多项目并行开发适用于单项目开发。
用于通过网络多人开发同一项目适用于企业内部

工作区,暂存区,版本库,本地仓库

  • 工作区Workspace:就是你在电脑里能看到的目录,即你代码放的那个文件夹。即时性强,对文件的所有更改都会立刻提现在这里。
  • 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
  • 暂存区 Index / Stage:git add以后,当前对文件的更改会保存到这个区
  • 本地仓库Repository:git commit以后,当前暂存区里对文件的更改会提交到本地仓库
  • 远程仓库Remote:远程仓库名一般叫origin。git push以后,本地仓库里优先于远程仓库的commit会被push到远程仓库

补充命令

1、从 reset --HARD 中恢复提交

使用git reflog命令就好了. (由 Gittenberg 提供)

2、Diff

如果你想查看两个分支之间有什么不同之处,你只需要这样做:git diff branch1..branch2

3、通过正则表达式匹配提交信息并显示

使用 git show :/fixes 命令,你可以找到提交信息中包含传入的字符串(这个例子中是fixes)的最近的提交。

4、限制 git push的默认行为

如果你运行git push,默认的行为是将所有的分支提交到远程代码库。这可能会导致很多问题,如果你不想这么做,你可以:git config --global push.default tracking

更新: Git 2.0 移除了这个默认的行为 http://blog.nicoschuele.com/posts/git-2-0-changes-push-default-to-simple

5、切换到一个分支 rebase 并 merge 到 master

可以这样做:git rebase HEAD feature && git rebase HEAD @{-2}

6、Git 保存工作状态

如果由于你的工作还没有完成,但此时又有紧急的是找上你,你可以使用git stash来保存这些修改,提交你紧急的任务,之后再用 git stash pop恢复到你保存时的状态。

7、别名

你还在为一次又一次的输入 checkout 而感到讨厌吗?现在就去尝试:git config --global alias.co checkout。你就可以通过:git co master 命令来切换到master了。

8、重命名一个本地分支

使用:git branch -m old-name new-name` 你可以很容易的重命名一个本地分支。

9、搜索作者名称

你可以通过使用`git log --author=Matheus`` 来搜索一个指定作者的提交记录。

10、给git status加上参数

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐