安装配置
安装客户端 msysgit
github是服务端,要想在自己电脑上使用git我们还需要一个git客户端,我这里选用msysgit,这个只是提供了git的核心功能,而且是基于命令行的。
如果想要图形界面的话只要在msysgit的基础上安装TortoiseGit即可。
msysgit是Windows版的Git,从 http://msysgit.github.io/ 下载,然后按默认选项安装即可。
安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功了。
国内下载路径 https://npm.taobao.org/mirrors/git-for-windows/
配置
以spreading为例
创建 ssh key
ssh-keygen -t rsa -C your_email@youremail.com
ssh-keygen
的位置在 D:\Program Files\Git\usr\bin
Example
ssh-keygen -t rsa -C navicester@qq.com
后面的 your_email@youremail.com 改为自己的邮箱,之后会要求确认路径和输入密码,这里使用默认的一路回车就行。成功的话会在 ~/
下生成 .ssh
文件夹,打开 id_rsa.pub
,复制里面的 key,回到 github,进入 settings,左边选择 SSH keys,Add SSH Key,title 随便填,粘贴 key。
Window的生成路径在 C:\Users\asus\.ssh
验证 ssh key
ssh -T git@github.com
ssh -T -v git@github.com 可以打印debug信息
如果是第一次的会提示是否 continue,输入 yes 就会看到:You've successfully authenticated, but GitHub does not provide shell access,这就表示已成功连上 github。
常见问题 1:关于ssh连接主机,git连接github失败的问题
创建仓库 New repository
github上点击右上角加号,选择 New repository
Note : 163账号被封,无法接收邮件
Git 基本操作
创建项目
git init
添加远程地址
git remote add origin git@github.com:navicester/spreading.git
获取项目
克隆到本地 (spreading)
我们要做的就是把 github 上面建立的仓库克隆到本地,在此之前还需要设置 username 和 email,因为 github 每次 commit 都会记录他们。
git config --global user.name your name
git config --global user.email your_email@youremail.com
Example
git config --global user.name navicester git config --global user.email navicester@qq.com
git clone git@github.com:navicester/spreading.git
需要注意的是:github 提供了 3 种 url 路径(HTTPS,SSH,Subversion),一般如果账号处于登录状态,那么我们可以用 SSH,就像上面的代码,如果没有登录的话,只能用 HTTPS 的 url 了
直接修改.git/config
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
hideDotFiles = dotGitOnly
[remote "origin"]
url = git@github.com:navicester/lwc.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[remote "heroku"]
url = https://git.heroku.com/lwc-ws.git
fetch = +refs/heads/*:refs/remotes/heroku/*
基本快照
Git 的工作就是创建和保存你的项目的快照及与之后的快照进行对比。本章将对有关创建与提交你的项目的快照的命令作介绍。
我们可以修改克隆到本地的项目,修改完成后先要 add 修改的文件(. 表示全部),然后填写 commit,最后在 push 到 github。
git push <远程主机名> <本地分支名>:<远程分支名>
git push https://git.oschina.net/beckwen/WinFingerprintDriver.git LocalBin:wk
git add .
git commit -m 'update'
git push [origin master]
git add
git status
git diff
git commit
git reset HEAD
git rm
git mv
如何撤销(add)文件修改和版本回退
放弃对git管理的文件修改
git checkout bb.txt
git放弃对当前文件夹的所有文件的修改?
git checkout .
放弃对没有被git管理的文件修改
如果是撤销所有的已经add的文件:
git reset HEAD .
如果是撤销某个文件或文件夹:
git reset HEAD -filename
如何撤销commit
git reset --hard <commit_id>
git push origin HEAD –force
其他:
>
根据–soft –mixed –hard,会对working tree和index和HEAD进行重置:
git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息
git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容
HEAD 最近一个提交
HEAD^ 上一次
<commit_id> 每次commit的SHA1值. 可以用git log 看到,也可以在页面上commit标签页里找到.
git 支持中文
git config –global core.quotepath false
或者在~/.gitconfig中加入这句也可以
[core]
quotepath = false
Pull
git pull <远程主机名> <远程分支名>:<本地分支名>
git pull username@ipaddr:远端repository名 <远端分支名> <本地分支名>
或者是:
git pull origin <远端分支名> <本地分支名>
git pull https://git.oschina.net/beckwen/WinFingerprintDriver.git wk:LocalBin
这条命令将从远端git库的远端分支名获取到本地git库的一个本地分支中。其中,如果不写本地分支名,则默认pull到本地当前分支。
- 运行时碰到错误 > D:\eclipse-workspace\virtualdir\lwc_test\lwc>git push ...... To git@github.com:navicester/lwc.git ! [rejected] master -> master (non-fast-forward) error: failed to push some refs to 'git@github.com:navicester/lwc.git' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (e.g. hint: 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.
有如下几种解决方法:
1.使用强制push的方法:
$ git push -u origin master -f
这样会使远程修改丢失,一般是不可取的,尤其是多人协作开发的时候。
2.push前先将远程repository修改pull下来
$ git pull origin master
$ git push -u origin master
3.若不想merge远程和本地修改,可以先创建新的分支:
$ git branch [name]
然后push
$ git push -u origin [name]
gitignore
比如我要忽略sumlime项目文件 lwc.sublime-project lwc.sublime-workspace
touch .gitignore #创建gitignore隱藏文件
vim .gitignore #编辑文件,加入指定文件
#下面是我的gitignore文件的内容
#忽略gitignore文件
.gitignore
#忽略后缀缀名为.o和.a的文件
*.[oa]
#或有sublime项目文件
lwc.sublime-project
lwc.sublime-workspace
Git 查看提交历史
git log
分支管理 branch
查看分支
查看所有分支
git branch -a
查看本地分支
git branch
查看远程分支
git branch -r
git branch --remote
没有参数时,git branch 会列出你在本地的分支。 当你执行 git init 的时候,缺省情况下 Git 就会为你创建"master"分支。 如果我们要手动创建一个分支。执行 git branch (branchname) 即可。 加上-a参数可以查看远程分支,远程分支会用红色表示出来(如果你开了颜色支持的话)
创建分支
git branch (branchname)
创建远程分支(本地分支push到远程):
git push origin [name]
切换分支
git checkout (branchname)
git checkout -b (branchname)
删除分支
删除本地分支
git branch -d (branchname)
删除本地分支,首先切换到别的分支,然后才能删除某个分支
-d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用-D选项
删除远程的Git分支
git push origin --delete (branchname)
或者
git push origin :heads/[name]
分支合并
合并本地分支
git merge
git merge b
假设当前分支为dev,上面的命令就是将本地的b分支代码合并到当前分支dev中
合并远程分支
合并远程分支,和前面的几乎一样,
git merge origin/b
远程分支b被合并到本地当前分支dev中了。
重命名本地分支
git branch -m oldname newname
重命名远程分支
在git中重命名远程分支,其实就是先删除远程分支,然后重命名本地分支,再重新提交一个远程分支。
push本地分支代码到远端服务器
git push origin branch_name
如果远端服务器没有该分支,将会自动创建
pull远端分支代码到本地对应分支
git pull origin branch_name
remote
remote server/remote repository/remote branch local repository/local branch
master就是local branch,origin/master是remote branch(master is a branch in the local repository. remotes/origin/master is a branch named master on the remote named origin) 需要注意的是,remotes/origin/master和origin/master的指向是相同的
git remote -v
log
D:\eclipse-workspace\git_python_spreading\spreading>git remote -v
origin git@github.com:navicester/spreading.git (fetch)
origin git@github.com:navicester/spreading.git (push)
克隆指定分支
git clone -b 分支名仓库地址
SAE Git代码部署说明
用户名 SAE安全邮箱 密码 SAE安全密码
在你应用的git代码目录里,添加一个新的git远程仓库 sae
$ git remote add sae https://git.sinacloud.com/papillon
编辑代码并将代码部署到 sae
的版本1。
$ git add .
$ git commit -am "make it better"
$ git push sae master:1
$ git pull sae 2
SAE支持Git、SVN、代码打包上传三种提交方式,具体请参考:http://www.sinacloud.com/doc/sae/tutorial/code-deploy.html#git
Issue
Issue#1 SSL certificate problem
Cloning into 'rec'...
fatal: unable to access 'https://gerrit.akraino.org/r/rec/': SSL certificate problem: self signed certificate in certificate chain
Solution:
git config --global http.sslVerify false
参考文档
- http://www.runoob.com/git/git-tutorial.html
- Git查看、删除、重命名远程分支和tag
评论
留言请先登录或注册! 并在激活账号后留言!