02、如何使用GIT_02

2018-10-22  本文已影响0人  go以恒

[toc]

github

第1步:创建SSH

Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:

$ ssh-keygen -t rsa -C "youremail@example.com"

Key目录
linux:

/root/.ssh

windows:

C:\Users\yourname\.ssh

第2步:登陆GitHub

登陆GitHub,打开“Account settings”,“SSH Keys”页面:

然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容

第一次git初始化
git init
git add .
git commit -m "first commit" 

给github地址起别名
git remote add origin https://github.com/wenhai94/test.git
添加到master分支
git push -u origin master
GitHub命令
命令 解释
git push -u origin master/dev 把本地代码推到 GitHub
git klong GitHub地址 把 GitHub master 分支文件,拉到本地
git pull origin master/dev 把 GitHub master/dev 分支文件,拉到本地
git fetch origin master/dev 把 GitHub master/dev 分支文件,拉到版本库
git merge origin/master 把 git fetch 的文件跟本地的文件合并
git rebase origin/master 同 git merge,但不会产生分支记录
git remote 查看远程库的信息
参数:
-v 显示更详细的信息

如果要把本地分支往远程推送,那么,哪些分支需要推送,哪些不需要呢?

多人模式

命令

命令 解释
git checkout -b dev origin/dev 创建远程origin的dev分支到本地并切换到dev
git branch --set-upstream-to=origin/dev dev 指定本地dev分支与远程origin/dev分支的链接

总结:

多人协作的工作模式通常是这样:
小结

rebase

命令 解释
git rebase 把分叉的提交历史“整理”成一条直线

总结:

标签管理

命令 解释
git tag <name> 给最近的分支版本创建新标签
git tag 查看所有标签
git tag <name> <commit id> 根据commit id创建新标签
$ git tag -a v0.1 -m "version 0.1 released" 1094adb 创建带有说明的标签,,用-a指定标签名,-m指定说明文字
git show <tagname> 查看tag的说明文字
git tag -d v0.1 删除标签
git push origin <tagname> 推送某个标签到远程
git push origin --tags 推送全部尚未推送到远程的本地标签
git push origin :refs/tags/v0.9 删除远程标签

使用GitHub

总结

多仓库同步

命令 解释
git remote add origin git@gitee.com:XXXX/learngit.git 关联Git的远程库
git remote -v 查看远程库信息
git remote rm origin 删除已关联的名为origin的远程库
image

忽略特殊文件

有些时候,你必须把某些文件放到Git工作目录中,但又不能提交它们,比如保存了数据库密码的配置文件啦,等等,每次git status都会显示Untracked files ...,有强迫症的童鞋心里肯定不爽

这个问题解决起来也很简单,在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。

GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:https://github.com/github/gitignore

忽略文件的原则是:

检验.gitignore的标准是git status命令是不是说working directory clean

有些时候,你想添加一个文件到Git,但发现添加不了,原因是这个文件被.gitignore忽略了:

$ git add App.class
The following paths are ignored by one of your .gitignore files:
App.class
Use -f if you really want to add them.

如果你确实想添加该文件,可以用-f强制添加到Git:

$ git add -f App.class

或者你发现,可能是.gitignore写得有问题,需要找出来到底哪个规则写错了,可以用git check-ignore命令检查:

$ git check-ignore -v App.class
.gitignore:3:*.class    App.class

Git会告诉我们,.gitignore的第3行规则忽略了该文件,于是我们就可以知道应该修订哪个规则。

配置别名

有没有经常敲错命令?比如git statusstatus这个单词真心不好记。

如果敲git st就表示git status那就简单多了,当然这种偷懒的办法我们是极力赞成的。

我们只需要敲一行命令,告诉Git,以后st就表示status

$ git config --global alias.st status

好了,现在敲git st看看效果。

当然还有别的命令可以简写,很多人都用co表示checkoutci表示commitbr表示branch

$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch

以后提交就可以简写成:

$ git ci -m "bala bala bala..."

--global参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有用。

在撤销修改一节中,我们知道,命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区。既然是一个unstage操作,就可以配置一个unstage别名:

$ git config --global alias.unstage 'reset HEAD'

当你敲入命令:

$ git unstage test.py

实际上Git执行的是:

$ git reset HEAD test.py

配置一个git last,让其显示最后一次提交信息:

$ git config --global alias.last 'log -1'

这样,用git last就能显示最近一次的提交:

$ git last
commit adca45d317e6d8a4b23f9811c3d7b7f0f180bfe2
Merge: bd6ae48 291bea8
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Thu Aug 22 22:49:22 2013 +0800

    merge & fix hello.py

甚至还有人丧心病狂地把lg配置成了:

git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

来看看git lg的效果:

image

为什么不早点告诉我?别激动,咱不是为了多记几个英文单词嘛!

配置文件

配置Git的时候,加上--global是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用。

配置文件放哪了?每个仓库的Git配置文件都放在.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

别名就在[alias]后面,要删除别名,直接把对应的行删掉即可。

而当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中:

$ cat .gitconfig
[alias]
    co = checkout
    ci = commit
    br = branch
    st = status
[user]
    name = Your Name
    email = your@email.com

配置别名也可以直接修改这个文件,如果改错了,可以删掉文件重新通过命令配置。

上一篇 下一篇

猜你喜欢

热点阅读