git是个了不起但却复杂的源代码管理系统。它能支持复杂的任务,却因此经常被认为太过复杂而不适用于简单的日常工作。让我们诚实一记吧:Git是复杂的,我们不要装作它不是。但我仍然会试图教会你用(我的)基本的Git和远程代码库干活的工作步骤

安装Git

在大多数*nix系统(Linux、OS X)上,Git已经被安装了。你通过发送下面的命令,可以通过Git自身,把它更新到最新的的开发版本(不推荐)。
在Windows上,你可以在这里下载Git的安装程序。如果你真的需要其他系统的安装程序,Mac OS X安装文件在这里,Linux的操作指导在这里。
  • 终端指令
  • 操作命令(终端快捷操作)   1 a.ls命令(查看当前文件夹下的文件或者子目录)   2 b.pwd(查看当前操作目录)   3 c.cd+空格+子目录名称(切换子目录)   4 d.cd+空格+..(退回上一级目录)   5 e.clear清除屏幕信息   6 f.mkdir+空格+文件夹(创建一个目录)   7 g.rm+空格-f空格 删除   8 3.相对路径和绝对路径(路径两种表达方式)   9 1./代表硬盘根目录(/uses/tarena/doc)   10 2.相对路径:相当于当前操作状态下的文件(或目录)的位置
  • 用git管理源代码
  • 输入指令cd命令, 拖入文件目录
  • 输入指令ls -l命令,查看当前文件夹下的文件或者子目录
  • 输入指令git init命令
  • 输入指令git add . —-all命令 进行初始化
  • 输入指令git commit -m “初始化”命令 提交代码

设置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找到。

转载于:https://www.cnblogs.com/jordanYang/p/5373500.html

使用Git管理源代码相关推荐

  1. 使用git进行源代码管理

    git是一款非常流行的分布式版本控制系统,使用Local Repository追踪代码的修改,通过Push和Pull操作,将代码changes提交到Remote Repository,或从Remote ...

  2. 好代码是管出来的——使用Git来管理源代码

    软件开发过程中一个重要的产出就是代码,软件的编码过程一般是由一个团队共同完成,它是一个并行活动,为了保证代码在多人开发中能够顺利完成,我们需要使用代码版本控制工具来对代码进行统一存储,并追踪每一份代码 ...

  3. 【git】源代码管理工具 GIT的使用步骤的详细讲解

    是否显示隐藏文件夹的终端命令: defaults write com.apple.finder AppleShowAllFiles YES defaults write com.apple.finde ...

  4. 面向 Visual Studio 开发者的 Git 内部源代码

    在我撰写的 Git DevOps 文章 (msdn.com/magazine/mt767697) 中,我介绍了 Git 版本控制系统 (VCS) 与可能已经很熟悉的集中式 VCS 的区别.然后,我演示 ...

  5. git blob_如何使用Git管理二进制Blob

    git blob 读: 第1部分:什么是Git? 第2部分:Git入门 第3部分:创建第一个Git存储库 第4部分:如何在Git中还原旧文件版本 第5部分:3个用于Git的图形工具 第6部分:如何构建 ...

  6. 使用Git管理多媒体文件

    导读 Git 是专用于源代码版本控制的工具.因此,Git 很少被用于非纯文本的项目以及行业.然而,异步工作流的优点是十分诱人的,尤其是在一些日益增长的行业中,这种类型的行业把重要的计算和重要的艺术创作 ...

  7. git 删除git管理_使用Git管理多媒体文件

    git 删除git管理 Git是专门为源代码版本控制而设计的,因此,主要用于纯文本格式的项目和行业很少使用它. 但是,异步工作流的优点很有吸引力,尤其是在越来越多的行业中,将严肃的计算与认真的艺术创作 ...

  8. git管理大项目或者大文件

    git 是追踪代码库演进的最佳选择,并且它能让你与你的同事间高效协作.当你想要追踪的库非常巨大时会发生什么? 在这篇文章里,我会尝试着给你一些想法和技巧来恰当地处理不同种类的大仓库. 两种大代码库 如 ...

  9. Windows 下使用Git管理Github项目

    Git Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理.最初由Linus Torvalds编写,用作Linux内核代码的管理.在推出后,Git在其它项目中也取得 ...

最新文章

  1. Design Pattern - Builder(C#)
  2. Dataset之babyboom.dat:babyboom.dat数据集的简介、安装、使用方法之详细攻略
  3. 【练习】不同排序算法执行时间比较
  4. 写段QTP脚本与大家一起分享
  5. 7.2 伪逆和线性方程 $A\mathbf{x}=\mathbf{b}$
  6. 深入探究VC —— 编译器cl.exe(1)
  7. web 服务器被配置为不列出此目录的内容。_三级网络技术考前选择题12—WWW服务器...
  8. GEE、USGS、地理空间数据云上下载武汉地区的影像数据
  9. 网吧游戏服务器制作教程,网吧服务器系统环境部署
  10. 德国人的智慧--生活是具体的
  11. 台式机win10正确安装Realtek声卡驱动后右下角的小喇叭还是有一个红差,前置耳机无法使用
  12. python中如何将矩阵合并并多一个维度
  13. solr自带智能拼音收藏
  14. CMWAP和CMNET 的主要区别与适用范围
  15. 百度资源(站长)平台怎么提交收录?
  16. 9.数据采集与监控知识点
  17. python计算存款_第一部分:趣味算法入门;第七题:最佳存款方案
  18. 从零开发Vscode上传图片插件
  19. 叮当桌面助手使用教程
  20. 微型计算机硬故障举例,计算机信息系统维护与维修

热门文章

  1. (续)我对09毕业生说两句
  2. 社会生活中常用的14条著名法则
  3. sh脚本每天创建一个文件夹_我每天创建一个月的视频。 这就是发生的事
  4. 使用Wireshark进行DNS协议解析
  5. 黑盒测试之功能分解法
  6. 零基础怎么学UI设计
  7. 如何使用OWASP Dependency Check的命令行(CLI)模式进行依赖库安全漏洞扫描
  8. Interesting visualization tools for profiling.
  9. 数据结构(队列实现篇)
  10. 5 分钟一次理解 Spring IOC !