初识Git

一 安装Git

  1. 配置用户名及邮箱 git config--global
    $ git config --global user.name "Your Name"
    
    $ git config --global user.email "email@example.com"

     

 

二 创建版本库

  1. 新建目录
    $ mkdir learngit $ cd learngit
  2. 版本库初始化
    $ git init Initialized empty Git repository in /Users/michael/learngit/.git/
    
    

     

  3. 添加文件到暂存区
    $ git add readme.txt
  4. 提交文件到仓库
    $ git commit -m "wrote a readme file"
  5. 查看状态
    $ git status 
    # On branch master # Changes not staged for commit:
    # (use "git add <file>..." to update what will be committed) 
    # (use "git checkout -- <file>..." to discard changes in working directory)
    # # modified: readme.txt # no changes added to commit (use "git add" and/or "git commit -a")
  6. 修改对比
    $ git diff readme.txt diff --git a/readme.txt b/readme.txt index 46d49bf..9247db6 100644 --- a/readme.txt +++ b/readme.txt @@ -1,2 +1,2 @@ -Git is a version control system. +Git is a distributed version control system. Git is free software.

三 版本回退

  1. 版本日志
    $ git log commit 3628164fb26d48395383f8f31179f24e0882e1e0 
    Author: Michael Liao <askxuefeng@gmail.com> Date: Tue Aug 20 15:11:49 2013 +0800 append GPL commit ea34578d5496d7dd233c827ed32a8cd576c5ee85
    Author: Michael Liao <askxuefeng@gmail.com> Date: Tue Aug 20 14:53:12 2013 +0800 add distributed commit cb926e7ea50ad11b8f9e909c05226233bf755030 
    Author: Michael Liao <askxuefeng@gmail.com> Date: Mon Aug 19 17:51:55 2013 +0800 wrote a readme file
  2. 简写日志
    $ git log --pretty=oneline 
    3628164fb26d48395383f8f31179f24e0882e1e0 append GPL 
    ea34578d5496d7dd233c827ed32a8cd576c5ee85 add distributed 
    cb926e7ea50ad11b8f9e909c05226233bf755030 wrote a readme file
  3. 返回上一版本
    $ git reset --hard HEAD^
  4. 返回指定版本
    $ git reset --hard 3628164
    HEAD is now at 3628164 append GPL
  5. 命令历史
    $ git reflog 
    ea34578 HEAD@{0}: reset: moving to HEAD^ 3628164 HEAD@{1}: commit: append GPL 
    ea34578 HEAD@{2}: commit: add distributed cb926e7 HEAD@{3}: commit (initial): wrote a readme file
  6. 撤销工作区修改
    $ git checkout -- readme.txt
  7. 撤销暂存区修改
    $ git reset HEAD readme.txt 
    Unstaged changes after reset: M readme.txt
  8. 删除文件
    $ git rm test.txt rm 'test.txt' 
    $ git commit -m "remove test.txt" 
    [master d17efd8] remove test.txt 1 file changed, 1 deletion(-) delete mode 100644 test.txt
  9. 撤消删除
    $ git checkout -- test.txt

三 远程仓库

  1. 创建SSH kEY
    $ ssh-keygen -t rsa -C "youremail@example.com"
  2. .ssh/id_rsa 私钥 ./ssh/id_rsa.pub 公钥
  3. 关联远程仓库
    $ git remote add origin git@github.com:xiaobingch/gittest.git
  4. 取消关联远程仓库
    $ git remote remove origin
  5.  第一次推送本地内容到远程仓库
    $ git push -u origin master
  6. 推送本地最新内容到远程仓库
    $ git push origin master
  7. 克隆远程仓库
    $ git clone git@github.com:xiaobingch/gittest3.git
     Cloning into 'gittest3'... remote: Counting objects: 3, done. 
    remote: Total 3 (delta 0), reused 0 (delta 0) Receiving objects: 100% (3/3), done.

四 分支管理

  1. 创建并切换至分支dev
    $ git checkout -b dev Switched to a new branch 'dev'
  2. 查看分支
    $ git branch
  3. 创建分支
    $ git branch dev
  4. 切换分支
    $ git checkout dev
  5. 合并分支(Fast-forword快速模式)删除分支后无log
    $ git merge dev 
    Updating d17efd8..fec145a Fast-forward readme.txt | 1 + 1 file changed, 1 insertion(+)
  6. 查看分支合并情况
    $ git log --graph --pretty=oneline --abbrev-commit
    * 59bc1cb conflict fixed |\ | * 75a857c AND simple * | 400b400 & simple |/ * fec145a branch test ...
  7. 删除分支
    $ git branch -d dev
     Deleted branch dev (was fec145a)
  8. 强制上传分支(未合并)
    $ git branch -D feature-vulcan 
    Deleted branch feature-vulcan (was 756d4af).
  9. 冲突:Git用<<<<<<<=======>>>>>>>标记出不同分支的内容
  10. 合并分支(– no-ff普通模式)删除分支后保留log
    $ git merge --no-ff -m "merge with no-ff" 
    dev Merge made by the 'recursive' strategy. readme.txt | 1 + 1 file changed, 1 insertion(+)
  11. 储藏工作现场
    $ git stash 
    Saved working directory and index state WIP on dev: 6224937 add merge HEAD is now at 6224937 add merge
  12. 恢复工作现场 
    $ git stash pop//恢复后删除stash内容
    
    $ git stash apply stash@{0}//恢复后不删除stash内容
  13. 查看stash列表
    $ git stash list stash@{0}: WIP on dev: 6224937 add merge
  14. 删除stash
    $ git stash drop
  15. 查看远程分支信息
    $ git remote -v origin
    git@github.com:michaelliao/learngit.git (fetch) origin 
    git@github.com:michaelliao/learngit.git (push)
  16. 推送到远程分支
    $ git push origin master
  17. 抓取远程分支
    $ git pull 
    Auto-merging hello.py CONFLICT (content): Merge conflict in hello.py 
    Automatic merge failed; fix conflicts and then commit the result

五 标签管理

  1. 添加标签
    $ git tag v1.0
  2. 添加带有说明的标签
    $ git tag -a v0.1 -m "version 0.1 released" 3628164
  3. 查看标签
    $ git tag v1.0
  4. 查看标签详细信息
    $ git show v0.9 
    commit 622493706ab447b6bb37e4e2a2f276a20fed2ab4 
    Author: Michael Liao <askxuefeng@gmail.com> 
    Date: Thu Aug 22 11:22:08 2013 +0800 add merge ...
  5. 对某次提交打标签
    $ git tag v0.9 6224937
  6. 删除标签
    $ git tag -d v0.1 
    Deleted tag 'v0.1' (was e078af9)
  7. 远程删除标签
    $ git push origin :refs/tags/v0.9 
    To git@github.com:michaelliao/learngit.git - [deleted] v0.9
  8. 推送标签到远程
    $ git push origin v1.0
  9. 一次性推送多个标签
    $ git push origin --tags 
    Counting objects: 1, done. Writing objects: 100% (1/1), 554 bytes, done. 
    Total 1 (delta 0), reused 0 (delta 0)
    To git@github.com:michaelliao/learngit.git * [new tag] v0.2 -> v0.2 * [new tag] v0.9 -> v0.9

自定义Git

  1. 指定git AUTO颜色
    $ git config --global color.ui true
  2. 忽略文件:在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。
    *.py[cod]
    *.so
    *.egg
    *.egg-info
    dist
    build
  3. 强制添加被忽略的文件
    $ git add -f App.class
  4. 配置别名 
    $ git config --global alias.co checkout
    $ git config --global alias.ci commit
    $ git config --global alias.br branch
  5. 配置文件 放在.git/config文件中:
    $ cat .git/config 
    [core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
        ignorecase = true
        precomposeunicode = true
    [remote "origin"]
        url = git@github.com:michaelliao/learngit.git
        fetch = +refs/heads/*:refs/remotes/origin/*
    [branch "master"]
        remote = origin
        merge = refs/heads/master
    [alias]
        last = log -1

转载于:https://www.cnblogs.com/xiaobingch/p/10036653.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值