这里就不做git的相关介绍跟安装了
1创建版本库
$ git init
如何重新初始化 rm -rf .git
注意: 不要把仓库建在中文目录下,可能出问题. .git是个隐藏目录,不要乱碰.(你的每一次代码修改它都帮你记录着呢)
2添加文件
$ git status //查看更改状况
git add //把文件提交到暂存区
git add . :他会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件。
git add -u :他仅监控已经被add的文件(即tracked file),他会将被修改的文件提交到暂存区。add -u 不会提交新文件(untracked file)。(git add --update的缩写)
git add -A :是上面两个功能的合集(git add --all的缩写)
git commit -m "备注更改信息" //提交到版本库
3把代码推到远程仓库
先为本地库添加远程库 $ git remote add origin https://git.oschina.net/lianshou/test.git 意思是:添加1个远程库,代号是origin,地址是 https://....test.git
再git push origin master 意思是,把本地的版本(默认是master),推到代号为origin的远程库去. 这个过程会让你输入用户名/密码,即你注册时的账户密码.
4团队合作
其他人怎么得到你提交的代码?
git clone 代码地址 master
你又如何得到仓库里别人提交的最新代码?
git pull <远程主机名> <远程分支名>:<本地分支名>
比如,要取回origin
主机的next
分支,与本地的master
分支合并,需要写成下面这样 -git pull origin next:master
如果远程分支(next
)要与当前分支合并,则冒号后面的部分可以省略。上面命令可以简写为:git pull origin next
如果想把本地的某个分支test提交到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫test的分支,那么可以这么做。
你又如何推送代码到服务器?
$ git push origin test:master // 提交本地test分支作为远程的master分支 //好像只写这一句,远程的github就会自动创建一个test分支
$ git push origin test:test // 提交本地test分支作为远程的test分支
如果想删除远程的分支呢?类似于上面,如果:左边的分支为空,那么将删除:右边的远程的分支。
$ git push origin :test // 刚提交到远程的test将被删除,但是本地还会保存的,不用担心
git clone 与 git pull有什么区别?
从远程服务器克隆一个一模一样的版本库到本地,复制的是整个版本库,叫做clone.(clone是将一个库复制到你的本地,是一个本地从无到有的过程),git pull相当于是从远程获取最新版本并merge(合并)到本地 git pull = git fetch + git merge,git fetch更安全一些
git clone是远程操作的第一步,通常是从远程主机克隆一个版本库,eg:$ git clone ## 该命令会在本地主机生成一个目录,与远程主机的版本库同名,如果要是制定不同的目录名,可以将目录名作为git clone 命令的第二个参数
从远程服务器获取到一个branch分支的更新到本地,并更新本地库,叫做pull.(pull是指同步一个在你本地有版本的库内容更新的部分到你的本地库),git pull 作用是,取回远程主机某个分支的更新,再与本地的指定分支合并。它的完整格式稍稍有点复杂。eg:$ git pull ##远程主机(origin) #远程分之(next)#:#本地分之(master)#
如果远程分支是与当前分支合并,则冒号后面的部分可以省略。eg:$ git pull #远程主机(origin)# #远程分之(next)# 相当于1. $ git fetch origin
5版本切换
git log 查看项目的日志,如果感觉log有点乱,可以git log --pretty=oneline,或者git log --oneline 让日志单行显示.按q退出
git reflog查看所有历史版本id
切换为head的前1版本,git reset --hard HEAD^
切换为head的前2版本,git reset --hard HEAD^^
切换为head的前100版本,git reset --hard HEAD~100
如果想返回到最新的版本,可以使用命令git reset --hard commit_id来实现,,例$ git reset --hard 6207e59
Git提供了一个命令git reflog,该命令按照之前经过的所有的commit路径按序来排列,用来记录你的每一次命令
6分支处理
查看所有分支 git branch
查看所有远程分支 git branch -a
拉取远程分支到本地 git checkout -b 本地分支名 remotes/origin/远程分支名
切换到dev分支 git checkout dev创建dev分支 git branch dev
创建并查看分组简写 git checkout -b
合并分支到master:在分支提交版本库的前提下回到主分支 $ git merge 分知名
合并某个commit到另一个分支:git log 查询版本历史,然后 git cherry-pick <commit id>
7远程仓库
添加远程库 命令:git remote add <远程库名> <远程库地址>
注: 远程库名一般叫origin,但并非强制,你可以自己起名.
修改远程库名称 git remote rename <旧名称> <新名称>
查看远程仓库 查看远程仓库:git remote 查看仓库地址:git remote -v
删除远程库 命令:git remote remove <远程库名>
8公钥登陆
我们push本地仓库到远程时,总要输入用户名/密码,这很不方便. 配置公钥,可以避免频繁输用户名/密码的麻烦.
1. 配置ssh格式的远程仓库地址
git remote add 远程仓库名 远程仓库地址 例: git remote add gitaddr git@git.oschina.net:lianshou/test.git
2. 创建ssh key
ssh-keygen -t rsa -C "youremail@example.com",把邮件地址换成你自己的邮件地址,一直回车,不用输入密码.完成后,可以在用户主目录里找 到.ssh目录,内有id_rsa和id_rsa.pub两个文件. id_rsa是私钥,id_rsa.pub是公钥. 这两把钥匙是成对的,可以让分别持有私钥和公钥的双方相互认识.
3. 把公钥放在服务器
用记事本打开id_rsa.pub,复制公钥内容. 登陆git.oschina.net,如下图,填入公钥并保存