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

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

[复制链接]

尚未签到

发表于 2018-9-18 10:18:24 | 显示全部楼层 |阅读模式
11. 创建和应用补丁

一个补丁指的是一个包含对源代码进行修改的文本文件。你可以将这个文件发送给某人,然后他就可以应用这个补丁到他的本地仓库

下面会创建一个分支,对这个分支所一些修改,然后创建一个补丁,并应用这个补丁到master分支

  

  


  • # Create a new branch
  • git branch mybranch
  • # Use this new branch
  • git checkout mybranch
  • # Make some changes
  • touch test05
  • # Change some content in an existing file
  • echo "New content for test01" >test01
  • # Commit this to the branch
  • git add .
  • git commit -a -m "First commit in the branch"

  • # Create a patch --> git format-patch master
  • git format-patch origin/master
  • # This created patch 0001-First-commit-in-the-branch.patch

  • # Switch to the master
  • git checkout master

  • # Apply the patch
  • git apply 0001-First-commit-in-the-branch.patch
  • # Do your normal commit in the master
  • git add .
  • git commit -a -m "Applied patch"

  • # Delete the patch
  • rm 0001-First-commit-in-the-branch.patch
  


  
12. 定义同名命令
Git允许你设定你自己的Git命令。你可以给你自己常用的命令起一个缩写命令,或者合并几条命令道一个命令上来。

下面的例子中,定义了git add-commit 命令,这个命令合并了git add . -A 和git commit -m 命令。定义这个命令后,就可以使用git add-commit -m "message" 了.

  

  


  • git config --global alias.add-commit '!git add . -A && git commit'
  

但是非常不幸,截止写这篇文章之前,定义同名命令在msysGit中还没有支持。同名命令不能以!开始。

13. 放弃跟踪文件

有时候,你不希望某些文件或者文件夹被包含在Git仓库中。但是如果你把它们加到.gitignore文件中以后,Git会停止跟踪这个文件。但是 它不会将这个文件从仓库中删除。这导致了文件或者文件夹的最后一个版本还是存在于仓库中。为了取消跟踪这些文件或者文件夹,你可以使用如下的命令

  


  • # Remove directory .metadata from git repo
  • git rm -r --cached .metadata
  • # Remove file test.txt from repo
  • git rm --cached test.txt
  • 这样做不会将这些文件从commit历史中去掉。如果你想将这些文件从commit历史中去掉,
  • 可以参考git filter-branch命令
  

14. 其他有用的命令

下面列出了在日常工作中非常有用的Git命令

Table 2. 有用的Git命令


命令


描述


git blame filename


谁创建了或者是修改了这个文件


git checkout -b mybranch   master~1


以上上个commit信息为起点,创建一条新的分支


15. 安装Git服务

如上所述,我们的操作不需要Git服务。我可以只使用文件系统或者是Git仓库的提供者,像Github或Bitbucket。但是,有时候,拥有一个自己的服务是比较方便的,在ubuntu下安装一个服务相对来说是比较容易的

确定你已经安装了ssh

  

  


  • apt-get install ssh
  

如果你还没有安装Git服务,安装它

  

  


  • sudo apt-get install git-core
  

添加一个名为git的用户

  

  


  • sudo adduser git
  

然后使用git用户进行登陆,创建一个空的仓库

  


  • # Login to server
  • # to test use localhost
  • ssh git@IP_ADDRESS_OF_SERVER

  • # Create repository
  • git init --bare example.git
  

现在你就可以向远端的仓库提交变更了

  

  


  • mkdir gitexample
  • cd gitexample
  • git init
  • touch README
  • git add README
  • git commit -m 'first commit'
  • git remote add origin git@IP_ADDRESS_OF_SERVER:example.git
  • git push origin maste
  

16. 在线的远端仓库

16.1. 克隆远端仓库

Git支持远端的操作。Git支持多种的传输类型,Git自带的协议就叫做git。下面的的命令通过git协议从克隆一个仓库

  

  


  • git clone git@github.com:vogella/gitbook.git
  

同样的,你可以通过http协议来克隆仓库

  


  • # The following will clone via HTTP
  • git clone http://vogella@github.com/vogella/gitbook.git
  

16.2. 添加远端仓库

如果你克隆了一个远端仓库,那么原先的仓库就叫做origin

你可以push修改到origin中,通过 git push origin 命令. 当然,push到一个远端的仓库需要对仓库的写权限

你可以通过git remote add name gitrepo 命令添加多个仓库。例如,你可以通过http协议再次添加之前clone过来的仓库:

  


  • // Add the https protocol
  • git remote add githttp https://vogella@github.com/vogella/gitbook.git
  

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

如果你的防火墙屏蔽了出http以外的所有协议,那么使用http协议来获取仓库是非常好的方法。.

Git同样支持通过代理服务器使用http协议。下面的Git命令会展示这一点。你可以为所有的程序设置代理服务器或者只是为Git服务提供。

下面的例子用到了环境变量

  


  • # Linux
  • export httphttp_proxy=http://proxy:8080
  • # On Windows
  • # Set httphttp_proxy=http://proxy:8080
  • git clone http://dev.eclipse.org/git/org.eclipse.jface/org.eclipse.jface.snippets.git
  • # Push back to the origin using http
  • git push origin
  

下面的例子只是用到了Git的配置

  

  


  • // Set proxy for git globally
  • git config --global http.proxy http://proxy:8080
  • // To check the proxy settings
  • git config --get http.proxy
  • // Just in case you need to you can also revoke the proxy settings
  • git config --global --unset http.proxy
  


  
17. Git服务提供商
除了假设自己的服务,你也可以使用Git服务提供商提供的服务。最流行的Git服务提供网站是GitHub和Bitbucket。它们都提供了有限制的免费服务

17.1. GitHub

可以通过 https://github.com/ 访问GitHub. GitHub上所有的公开仓库都是免费的。如果你想在上面使用私有的仓库,那么就需要付费给GitHub

GitHub需要你创建ssh的公钥私钥。生成一份Ubuntu的公钥私钥可以访问 ssh key creation in Ubuntu ,Windows环境可以访问msysgit ssh key generation .

在GitHub上创建一个账户和一个仓库以后。你会收到如何将你的项目上传到GitHUb的指南,其中的命令大致如下:

  

  


  • Global setup:
  • Set up git
  •   git config --global user.name "Your Name"
  •   git config --global user.email your.email@gmail.com

  • Next steps:
  •   mkdir gitbook
  •   cd gitbook
  •   git init
  •   touch README
  •   git add README
  •   git commit -m 'first commit'
  •   git remote add origin git@github.com:vogella/gitbook.git
  •   git push -u origin master

  • Existing Git Repo?
  •   cd existing_git_repo
  •   git remote add origin git@github.com:vogella/gitbook.git
  •   git push -u origin master
  

17.2. Bitbucket

可以通过 https://bitbucket.org/ 访问Bitbucket. Bitbucket 提供了无限制了公共仓库和只能有五个人访问的私有仓库。如果你需要超过五个人访问私有仓库,就需要付费给Bitbucket

18. Git的图形接口

这个教程主要说明Git命令行的使用。完成了这个教程以后,你可能想要找到一个Git的图形工具

Git提供了两个图形工具。 gitk能够展示仓库的历史信息、git gui 让你可以通过编辑器来完成Git操作

Eclipse EGit 项目提供了Git与Eclipse的集成,在最新的Eclipse版本中可以找到

19. Kindle版本教程

这个教程提供了Kindle版本

20. 问题与讨论

在提出问题之前,请先查看 vogella FAQ. 如果你有任何的问题或者是从文章中找到错误,那么可以使用www.vogella.com Google Group.  我自己写了一个简短的列表 how to create good questions  可能会对你有用.

21. 链接和文章

Git homepage

EGit - Teamprovider for Eclipse

Video with Linus Torwalds on Git

Progit book - Free Git book

Video casts about Git

http://code.google.com/p/msysgit/ Git on Windows

http://github.com/guides/git-cheat-sheet Git Cheat Sheets

  




运维网声明 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-589722-1-1.html 上篇帖子: Git教程【译】(二) 下篇帖子: 使用git管理自己的代码--简单使用流程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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