设为首页 收藏本站
查看: 711|回复: 0

[经验分享] Git教程【译】(一)

[复制链接]

尚未签到

发表于 2018-9-18 10:16:27 | 显示全部楼层 |阅读模式
原文出处:http://www.vogella.com/articles/Git/article.html

翻译说明:个人出于兴趣爱好翻译这篇Git教程(google 搜索git tutorial排名第一的文章)。学习git最初的原因是为了了解GitHub,译者水平有限,有不足之处欢迎指正。希望这边译文对你能有帮助。转载请链接出处。

  Git教程
本教程通过命令行来阐述分布版本控制系统Git的使用。演示系统选取的是Linux(Ubuntu),但是在其他系统上也能功能,例如Windows系统。

内容索引

1. Git

1.1. Git是何方神圣?

1.2. 重要的术语

1.3. 索引(stage)

2. 安装

3. 配置

3.1. 用户信息

3.2. 高亮显示

3.3. 忽略特定的文件

3.4. 使用.gitkeep来追踪空的文件夹

4. 开始操作Git

4.1. 创建内容

4.2. 创建仓库、添加文件和提交更改

4.3. diff命令和commit修改

4.4. Status, Diff和Commit Log

4.5. 更正提交的信息 - git amend

4.6. 删除文件

5. 远端仓库(remote repositories)

5.1. 设置一个远端的Git仓库

5.2. 推送修改到其他的仓库

5.3. 添加远端仓库

5.4. 显示已有的远端仓库

5.5. 克隆仓库

5.6. 拉取(Pull)修改

6. 还原更改

7. 标记

8. 分支和合并

8.1. 分支

8.2. 合并

8.3. 删除分支

8.4. 推送(Push)一个分支到远端仓库

9. 解决合并冲突

10. 变基(Rebase)

10.1. 在同一分支中应用Rebase Commit

10.2. Rebasing 多个分支

10.3. Rebase最佳实践

11. 创建和应用补丁

12. 定义同名命令

13. 放弃跟踪文件

14. 其他有用的命令

15. 安装Git服务

16. 在线的远端仓库

16.1. 克隆远端仓库

16.2. 添加远端仓库

16.3. 通过http和代理服务器进行远端操作

17. Git服务提供商

17.1. GitHub

17.2. Bitbucket

18. Git的图形接口

19. Kindle版本教程

20. 问题与讨论

21. 链接和文章

1. Git

1.1. Git是何方神圣?

Git是用C语言开发的分布版本控制系统。版本控制系统可以保留一个文件集合的历史记录,并能回滚文件集合到另一个状态(历史记录状态)。另一个状 态可以是不同的文件,也可以是不同的文件内容。举个例子,你可以将文件集合转换到两天之前的状态,或者你可以在生产代码和实验性质的代码之间进行切换。文 件集合往往被称作是“源代码”。在一个分布版本控制系统中,每个人都有一份完整的源代码(包括源代码所有的历史记录信息),而且可以对这个本地的数据进行 操作。分布版本控制系统不需要一个集中式的代码仓库。

当你对本地的源代码进行了修改,你可以标注他们跟下一个版本相关(将他们加到index中),然后提交到仓库中来(commit)。Git保存了所 有的版本信息,所以你可以转换你的源代码到任何的历史版本。你可以对本地的仓库进行代码的提交,然后与其他的仓库进行同步。你可以使用Git来进行仓库的 克隆(clone)操作,完整的复制一个已有的仓库。仓库的所有者可以通过push操作(推送变更到别处的仓库)或者Pull操作(从别处的仓库拉取变 更)来同步变更。

Git支持分支功能(branch)。如果你想开发一个新的产品功能,你可以建立一个分支,对这个分支的进行修改,而不至于会影响到主支上的代码。

Git提供了命令行工具;这个教程会使用命令行。你也可以找到图形工具,譬如与Eclipse配套的EGit工具,但是这些都不会在这个教程中进行描述。

1.2. 重要的术语

表 1. Git 术语


术语


定义


仓库(Repository)


一个仓库包括了所有的版本信息、所有的分支和标记信息。在Git中仓库的每份拷贝都是完整的。仓库让你可以从中取得你的工作副本。


分支(Branches)


一个分支意味着一个独立的、拥有自己历史信息的代码线(code line)。你可以从已有的代码中生成一个新的分支,这个分支与剩余的分支完全独立。默认的分支往往是叫master。用户可以选择一个分支,选择一个分支叫做checkout.


标记(Tags)


一个标记指的是某个分支某个特定时间点的状态。通过标记,可以很方便的切换到标记时的状态,例如2009年1月25号在testing分支上的代码状态


提交(Commit)


提交代码后,仓库会创建一个新的版本。这个版本可以在后续被重新获得。每次提交都包括作者和提交者,作者和提交者可以是不同的人


URL


URl用来标识一个仓库的位置


修订(Revision)



用来表示代码的一个版本状态。Git通过用SHA1 hash算法表示的id来标识不同的版本。每一个 SHA1>
1.3. 索引

Git 需要将代码的变化显示的与下一次提交进行关联。举个例子,如果你对一个文件继续了修改,然后想将这些修改提交到下一次提交中,你必须将这个文件提交到索引中,通过git add file命令。这样索引可以保存所有变化的快照。

新增的文件总是要显示的添加到索引中来。对于那些之前已经提交过的文件,可以在commit命令中使用-a 选项达到提交到索引的目的。

2. 安装

在Ubuntu上,你可以通过apt来安装git命令行工具

  

  


  • sudo apt-get install git-core
  

对于其他的Linux版本,请查看相关的软件包安装工具使用方法

msysgit项目提供了Windows版本的Git,地址是http://code.google.com/p/msysgit/

3. 配置

你可以在.gitconfig文件中防止git的全局配置。文件位于用户的home目录。 上述已经提到每次提交都会保存作者和提交者的信息,这些信息都可以保存在全局配置中。

后续将会介绍配置用户信息、高亮显示和忽略特定的文件

3.1. 用户信息

通过如下命令来配置用户名和Email

  


  • # Configure the user which will be used by git

  • # Of course you should use your name

  • git config --global user.name "Example Surname"

  • # Same for the email address

  • git config --global user.email "your.email@gmail.com"

  • # Set default so that all changes are always pushed to the repository

  • git config --global push.default "matching"
  

获取Git配置信息,执行以下命令:

  

  


  • git config --list
  

3.2. 高亮显示

以下命令会为终端配置高亮

  


  • git config --global color.status auto
  • git config --global color.branch auto
  

3.3. 忽略特定的文件

可以配置Git忽略特定的文件或者是文件夹。这些配置都放在.gitignore文件中。这个文件可以存在于不同的文件夹中,可以包含不同的文件匹配模式。为了让Git忽略bin文件夹,在主目录下放置.gitignore文件,其中内容为bin。

同时Git也提供了全局的配置,core.excludesfile。

3.4. 使用.gitkeep来追踪空的文件夹

Git会忽略空的文件夹。如果你想版本控制包括空文件夹,根据惯例会在空文件夹下放置.gitkeep文件。其实对文件名没有特定的要求。一旦一个空文件夹下有文件后,这个文件夹就会在版本控制范围内。

4. 开始操作Git

后续将通过一个典型的Git工作流来学习。在这个过程中,你会创建一些文件、创建一个本地的Git仓库、提交你的文件到这个仓库中。这之后,你会克隆一个仓库、在仓库之间通过pull和push操作来交换代码的修改。注释(以#开头)解释了命令的具体含义

让我们打开命令行开始操作吧

4.1. 创建内容

下面创建一些文件,它们会被放到版本控制之中

  


  • #Switch to home
  • cd ~/
  • # Create a directory
  • mkdir ~/repo01
  • # Switch into it
  • cd repo01
  • # Create a new directory
  • mkdir datafiles
  • # Create a few files
  • touch test01
  • touch test02
  • touch test03
  • touch datafiles/data.txt
  • # Put a little text into the first file
  • ls >test01
  


  
4.2. 创建仓库、添加文件和提交更改
每个Git仓库都是放置在.git文件夹下.这个目录包含了仓库的所有历史记录,.git/config文件包含了仓库的本地配置。

以下将会创建一个Git仓库,添加文件倒仓库的索引中,提交更改。

  

  


  • # Initialize the local Git repository
  • git init
  • # Add all (files and directories) to the Git repository
  • git add .
  • # Make a commit of your file to the local repository
  • git commit -m "Initial commit"
  • # Show the log file
  • git log
  

4.3. diff命令与commit更改

通过git diff命令,用户可以查看更改。通过改变一个文件的内容,看看git diff命令输出什么,然后提交这个更改到仓库中

  

  


  • # Make some changes to the file
  • echo "This is a change" > test01
  • echo "and this is another change" > test02

  • # Check the changes via the diff command
  • git diff

  • # Commit the changes, -a will commit changes for modified files
  • # but will not add automatically new files
  • git commit -a -m "These are new changes"
  

4.4. Status, Diff 和 Commit Log

下面会向你展示仓库现有的状态以及过往的提交历史

  

  


  • # Make some changes in the file
  • echo "This is a new change" > test01
  • echo "and this is another new change" > test02

  • # See the current status of your repository
  • # (which files are changed / new / deleted)

  • git status
  • # Show the differences between the uncommitted files
  • # and the last commit in the current branch
  • git diff

  • # Add the changes to the index and commit
  • git add . && git commit -m "More chaanges - typo in the commit message"

  • # Show the history of commits in the current branch
  • git log
  • # This starts a nice graphical view of the changes
  • gitk --all
  

4.5. 更正提交的信息 - git amend

通过git amend命令,我们可以修改最后提交的的信息

上述的提交信息中存在错误,下面会修改这个错误

  

  


  • git commit --amend -m "More changes - now correct"
  

4.6. 删除文件

如果你删除了一个在版本控制之下的文件,那么使用git add .不会在索引中删除这个文件。需要通过带-a选项的git commit命令和-A选项的git add命令来完成


  


  • # Create a file and put it under version control
  • touch nonsense.txt
  • git add . && git commit -m "a new file has been created"
  • # Remove the file
  • rm nonsense.txt
  • # Try standard way of committing -> will not work
  • git add . && git commit -m "a new file has been created"
  • # Now commit with the -a flag
  • git commit -a -m "File nonsense.txt is now removed"
  • # Alternatively you could add deleted files to the staging index via
  • git add -A .
  • git commit -m "File nonsense.txt is now removed"
  




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-589720-1-1.html 上篇帖子: 怎么用git clone 远程的所有分支 下篇帖子: Git教程【译】(二)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表