来自:http://blog.jobbole.com/53573/

工作步骤

我会展示以下的步骤,通常能帮我独自在一台或多台机器上做项目。
  1. 创建一个远程的空代码库(在BitBucket上)
  2. 在本地代码库添加一个项目
  3. 在分支上开发新功能
  4. a) 保留新功能 或者 b) 丢弃它们
  5. 也许,回到某个早先的时间点
  6. 将本地代码库推送到远程代码库
  7. 在另一台机器上取得远程代码库

安装Git

在大多数*nix系统(Linux、OS X)上,Git已经被安装了。你通过发送下面的命令,可以通过Git自身,把它更新到最新的的开发版本(不推荐)。
git clone https://github.com/git/git
在Windows上,你可以在这里下载Git的安装程序。如果你真的需要其他系统的安装程序,Mac OS X安装文件在这里,Linux的操作指导在这里。

创建一个远程代码库

很多人喜欢用Github。我个人更喜欢BitBucket,因为它提供了不限制的私有代码库,那是我最需要的。你可以将下列指令转换到Github上,这些过程是相同的。
那么,去到www.bitbucket.org并注册一个账号。一旦完成,登录后点击最上方的“create(创建)”按钮。照着填写表格,勾选私有代码库。你可不想让其他人来偷窥你的Facebook的杀手级应用的源代码,对吧。
你现在可以离开BitBucket了,我们在已经有了所有那里需要的东西了。

设置Git

在我们能用Git工作之前,我们需要做个一次性的配置。为了Git能跟踪到谁做了修改,我们需要设置你的用户名。我强烈建议你使用与注册 BitBucket账号相同的用户名和电子邮箱地址。发送这些命令,相应地替换掉其中的“your_username”和 “your_email@domain.com”(注意引号):
git config --global user.name "your_username"
git config --global user.email your_email@domain.com

我们也会设定推送(push)的默认值为‘simple’。要了解这是什么意思,快速阅读我之前发布的关于推送的默认值(非必须)。发送这条命令:
git config --global push.default simple
我们都设好了。你无需在你的机器上再重复这些配置,但如果你在另一台机器上工作的话,不要忘记这些配置。如果你忘记做初始的配置,Git不会允许你提交任何东西,这会让你困扰。

创建一个本地代码库

作为例子,我们会假装我们有一个网站(无所谓技术)存在于我们机器上的‘workspace’文件夹下的’my_site’文件夹内。在命令行中,去到你的站点的根文件夹。在OS X和Linux上:
cd ~/workspace/my_site/
在Windows上:
cd c:\workspace\my_site
我们首先需要告诉Git这个文件夹是我们需要跟踪的项目。所以我们发送这个命令来初始化一个新的本地Git代码库
git init
Git会在my_site文件夹内创建一个名为.git的隐藏文件夹,那就是你的本地代码库。

加载(Stage)文件

我们现在需要命令Git我们需要加载(stage)所有项目文件。发送:
git add .
最后的“.”符号的意思是“所有文件、文件夹和子文件夹”。假如我们只想要把特定文件添加到源代码控制中去,我们可以指定它们:
git add my_file, my_other_file

提交文件

现在,我们想要提交已加载(staged)的文件。阅读“添加一个时间点,在这里你的文件处在一个可还原的状态”。我们提交我们的文件时,总是附带着有意义的注释,描述了它们现在的状态。我一直用“initial commit”来作为第一个提交的注释。
git commit -m "initial commit"
就这样。现在你随时都可以回滚到这个提交状态。如果你有需要检查你现在的已加载(staged)和未加载(unstaged)文件的状态、提交等,你可以询问git的状态:
git status

创建分支

建立分支是你创建代码的独立版本的动作,独立于你的主干分支。默认地,每次你提交到Git的文件都会被储存到“master(主干)”分支。
现在我们来说说,你想要向项目里添加一个功能,但你想要能够回滚到现在版本,以防出现差错,或者你决定要放弃这个功能。这就是你创建分支的时候了。创建并同时切换到你新建的分支,发送:
git checkout -b new_feature
或者,你可以先创建一个分支然后手动切换,就像这样:
git branch new_featuregit checkout new_feature
要看你现在项目下所有的分支,发送这个:
git branch
现在你可以在你的项目上无所顾忌地做任何你想做的:任何时候,你都可以回到你创建分支前的状态。注意,你同时可以有多个分支,甚至可以从一个分支上再创建一个分支。

合并分支

当你对你的新功能满意了的时候,你想要把它加到主干分支上。当你在你的新功能分支上时,你首先需要加载(stage)并且提交你的文件:
git add .git commit -m "adds my new feature"
然后你移到你的主干分支:
git checkout master
像这样合并:
git merge new_feature
此时,你的主干分支和你的新功能分支会变成一样的了。

丢弃分支

相反,如果你打算丢弃你在分支里做的修改,你首先需要加载(stage)你的文件并且在分支里提交:
git add .git commit -m "feature to be discarded"
然后,你移到主干分支:
git checkout master
现在,你的代码处于你创建分支之前的状态了。

删除一个分支

如果你要把你的分支合并到主干分支,从主干(master)分支上发送:
git branch -d new_feature
假如修改已经合并了,它只会删除分支。假如分支没有合并,你会得到一个错误信息。删除一个未合并的分支(通常你不想保留的修改),你需要发送一样的命令附带一个大写D。意思是“强制删除分支,无论如何我不想要它了。”:
git branch -D new_feature

回滚到之前的提交状态

在某些时候,你可能想要回到之前的代码版本。首先,你需要找到你想回到哪个版本。要看所有的完成了的提交,发送:
git log
这会输出你的提交的历史记录,像这样:
commit ca82a6dff817ec66f44342007202690a93763949Author: your_username your_email@domain.comDate:   Mon Nov 4 12:52:11 2013 -0700    changes the frontpage layout
commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7Author: your_username your_email@domain.comDate:   Mon Nov 4 11:40:33 2013 -0700    adds my new feature
commit a11bef06a3f659402fe7563abf99ad00de2209e6Author: your_username your_email@domain.comDate:   Mon Nov 4 10:37:28 2013 -0700    initial commit

如果你想回到“adds my new feature”这个提交,简单地用提交的ID做签出(checkout)(我通常只用到ID开头的9个字符)
git checkout 085bb3bcb
你也可以签出到一个新的分支,像这样:
git checkout -b my_previous_version 085bb3bcb
只是别太疯狂了!你的分支越复杂,就越难确定你真正在做什么。

推送到远程代码库

在第一次你想推送一个本地代码库到远程代码库时,你需要把它添加到你的项目配置里。像这样做:
git remote add origin https://your_username@bitbucket.org/your_username/name_of_remote_repository.git
注意这里的“origin”只是一个习惯。它是你的远程代码库的别名,但是你可以用其他任何你喜欢的词。你甚至可以有多个远程代码库,你只需要给它们起不同的别名。
之后,你想要推送你的本地代码库的主干分支到你的远程代码库:
git push origin master
如果你使用Bitbucket,在这时,你会被请求输入你的密码。照做,你的本地代码库会被推送到你的远程代码库上。

取得远程代码库的一份本地拷贝

如果你还没有一份远程代码库的本地版本(例如,如果你在另一台机器上开始工作,这台机器上还没有用过这个项目),你首先需要拷贝(clone)它。去到你的代码库想要拷贝到的文件夹下,并发送:
git clone https://your_username@bitbucket.org/your_username/name_of_remote_repository.git
另一方面,如果你已经在本地的项目上工作了,只是想从远程代码库上取得它最新的版本,移动到项目的根目录下,并发送:
git pull origin master

别名

Git允许你为你常用的命令创建快捷方式(别名)。例如,如果你不想每次都输入git commit -m “some comment”,而是输入git c “some comment”,你可以向你的git全局配置里添加一个别名来实现,像这样:
git config --global alias.c 'commit -m'
这是我使用的别名列表:
git config --global alias.c 'commit -m'
git config --global alias.co 'checkout'
git config --global alias.cob 'checkout -b'
git config --global alias.br 'branch'
git config --global alias.m 'merge'
git config --global alias.a 'add .'
git config --global alias.s 'status'
git config --global alias.dbr 'branch -d'

进一步

当然,还有比这些更多的Git内容。如果你想要更了解Git,我推荐官方文档和教程,你可以在http://git-scm.com/documentation找到。

使用Git和远程代码库相关推荐

  1. git 删除本地分支和远程分支、本地代码回滚和远程代码库回滚

    [git 删除本地分支] git branch -D br [git 删除远程分支] git push origin :br  (origin 后面有空格) git代码库回滚: 指的是将代码库某分支退 ...

  2. git远程代码回滚_【GIT】git 删除本地分支和远程分支、本地代码回滚和远程代码库回滚...

    git branch -D br [git 删除远程分支] git push origin :br  (origin 后面有空格) git代码库回滚: 指的是将代码库某分支退回到以前的某个commit ...

  3. 使用git向远程厂库提交代码时rejcted错误

    在使用git向远程厂库提交代码时: 有的小朋友会出现 Push rejected: Push to origin/master was rejected 出现这样的问题应该是本地厂库和远程厂库没有管理 ...

  4. 本地连接远程代码库——生成公钥SSH Key(Linux版)

    一.问题描述 在linux服务器上连接远程gitlab代码库,报错Please make sure you have the correct access rights and the reposit ...

  5. Git建立远程代码仓库和本地代码仓库

    Git建立远程代码仓库和本地代码仓库 使用Git管理代码,需要有两个仓库.一个是远程代码仓库,一个是本地代码仓库. 远程仓库是用来托管代码的平台,比如说Github,GitLab,Gerrit,码云G ...

  6. eclipse git 取远程代码_【JAVA】Eclipse中使用git进行pull远程代码

    当使用eclipse或者MyEclipse进行pull远程代码的时候,或者github的代码的时候报如下错误代码: 代表我们没有配置我们的Git地址,这里我教大家配置一下.首先下面是错误代码: The ...

  7. git更新远程代码到本地仓库的命令

    方式一 (远程代码下载到本地新建分支:对比区别后在合并) 查看远程分支 git remote -v $ git remote -v origin https://github.com/shangshe ...

  8. git 更新远程代码到本地仓库

    git fetch 的简单用法:更新远程代码到本地仓库 方式一 (远程代码直接下载合并到本地) 1. 查看远程仓库 $ git remote -v eoecn https://github.com/e ...

  9. Git提交远程代码时出现remote Incorrect username or password ( access token )

    在使用Git进行项目代码提交的最后一步操作的时候,出现了一个问题,remote: Incorrect username or password ( access token ) git出错截图: 造成 ...

  10. Intelij IDEA管理git之远程代码冲突解决方案

    本博文所说的代码冲突是指:项目托管在git服务器上面,两个人同时修改了同一个文件导致的冲突问题. 问题解决:工具:intelij IDEA 2016.2 为了构造一个冲突的环境用于书写这篇博客,本人采 ...

最新文章

  1. C#中Base64之编码,解码方法
  2. leetcode 226. Invert Binary Tree
  3. DB2中导出数据库的所有DDL脚本
  4. 洛谷 P2731 骑马修栅栏 Riding the Fences
  5. java集合(4)-Set集合
  6. qt 不显示 mysql 数据表中的内容_qt 数据库操作总结
  7. 2014-08-26 遇到的小问题
  8. win7硬盘安装工具_如何重装电脑安装Win7 系统?最简单,最便捷的办法,值得收藏...
  9. 请详细描述listview与gridview的异同点_一建考试中,实在不会的怎么办?教你从题目中获取得分点!...
  10. 进程线程的调度阻塞唤醒
  11. 四则运算2扩展---c++
  12. -webkit-filter
  13. 那些让人忍不住推荐的思维导图软件
  14. java随机生成中文名、性别、手机号、住址、email
  15. max函数的线性化方法
  16. uni-app uView UI框架 下载安装教程
  17. 这个 api 管理工具悄悄开源了,快来看看
  18. git官网 中文教程 使用手册 说明书
  19. css实现文字或者div盒子水平垂直居中的方法
  20. JS中对象用点(.)和方括号([])的区别

热门文章

  1. paip.终端服务器超出了最大允许连接数的解决
  2. paip.账务系统的安全性
  3. VSCODE: 快速生成html框架
  4. (转)投资很难赚到你不信的那份钱︱投资道
  5. Julia: 引用、copy与数组
  6. 【招】阿里云技术战略高级专家
  7. 【优化充电】基于matlab蒙特卡洛算法求解电动汽车充电优化问题【含Matlab源码 1164期】
  8. 【DCVRP】基于matlab遗传和粒子群算法求解带容量的车辆路径规划问题【含Matlab源码 1034期】
  9. 【图像去噪】基于matlab GUI均值+中值+空间+高斯滤波图像去噪【含Matlab源码 763期】
  10. 【图像分割】基于matlab GUI FCMKFCM MRI图像分割【含Matlab源码 582期】