终端上设置git
http://blog.163.com/xianfuying@126/blog/static/21960005201181482518631/
在~/.ssh的位置vi id_rsa.pub
拷贝的时候id_rsa.pub里面从
sh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQE....................................
到email地址结束。
第一次生成的key居然Access denied了。。
重新搞了一个成功。
然后
git remote add origin git@github.com:用户名/项目名称.git
git pull origin master 就PULL一个以前folk的项目下来了。
下次在自己的服务器上试试。
Guides: Tell git your user name and email address
Git needs to know your username and email address to properly tag your commits. This is normally done on a global level: [~]$ git config --global user.name "lubin"
[~]$ git config --global user.email lubin.z@gmail.com
You can override these settings on a per-repo basis: [~/path/to/repo]$ git config user.name "lubin"
[~/path/to/repo]$ git config user.email lubin.z@gmail.com
This change will only affect future commits. Past commits will retain the username and address they were committed with. Some tools will assume your github config is in the same place (http://github.com/blog/180-local-github-config): [~]$ git config --global github.user lubin
[~]$ git config --global github.token 6ef8395fecf207165f1a82178ae1b984
搞砸了,怎么恢复?
删光本地文件,这时候pull会说 already-up-to-date
那么checkout 上一版的hash id:
git checkout AAAAB3NzaC1yc2EAAAABIwAAAQE..
这样本地版本就低于远程的,再pull就可以恢复回去了!
有了搞砸之前的文件,可以重头来过。
但是改好后,可以commit,并不能push成功。
马上push会出现:
HEAD detached at 0d731b8
nothing to commit, working directory clean
由于脱离了head,指向的是一次commit的id
必须:
git checkout master
会提示:
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
这样做之前备份好之前修改好的代码,或者,根本就只是在脱离头部的时候将上一版拷出去改的也可以。
回到head,放入最新的文件,commit,push成功。
如果一开始就没有备份,那么只好git clone 后接git remote -v查询到的git库地址即可。
有一点要注意的是,clone下来如果git项目文件夹被覆盖一次,需要终端cd .. 然后重新进入该目录,否则会:
fatal: Unable to read current working directory: No such file or directory
切勿惊慌。。。
如果只是working tree被改坏了,文件没有什么改动,可以reset --keep
git reset [--hard|soft|mixed|merge|keep] [<commit>或HEAD]
重设working tree中发生变化的文件。
index,执行git add的操作,会对文件创建索引,所有被跟踪的文件索引会放入index,表示文件被修改待提交
working tree,当前工作区,被修改但未被add的文件,存储在工作区
ORIG_HEAD,用于指向前一个操作状态,每次的commit或者pull或者reset,git 都会把老的HEAD拷贝到.git/ORIG_HEAD,通过对ORIG_HEAD的引用可 以指向前一次的操作状态 、hard(慎用)
重设index和working tree,所有改变都会被丢弃,包括文件的修改、新增、删除等操作,并把HEAD指向<commit>,
因此通过git log查看版本提交记录,被reset的版本记录会被丢弃,但可以通过git reflog查看 、soft
不重设index和working tree,仅仅将HEAD指向<commit>,表示已经commit的文件会取消commit,
通过git status查看,文件会处于待commit状态“Changes to be committed” 、mixed(默认)
重设index,但不重设working tree,表示已经被add的文件,被取消add,
通过git status查看,文件会处于待添加索引状态 “Changes not staged for commit” 、merge
重设index,重设working tree中发生变化的文件,但是保留index和working tree不一致的文件 、keep
重设index,重设working tree中发生变化的文件
reset
曾经有前辈误删了commit之后用cherry-pick找回来
git reflog
502dd0f HEAD@{}: HEAD~: updating HEAD
147b3b5 HEAD@{}: commit: test3
502dd0f HEAD@{}: commit: test2
0692c03 HEAD@{}: commit (initial): test1 git reset --hard 502dd0f
git cherry-pick 147b3b5
如果明知自己的代码没作什么修改,不是最新的,可以Fetch对方的代码,
但这并不会覆盖自己的旧文件,就算没有冲突,也还是需要merge,否则就只加入新文件。
git reset --hard HEAD
git clean -f -d
git fetch origin master
上面的reset可以清除一些已经删掉了的文件无意义的存在于index又无法rm的情况。
. git fetch:相当于是从远程获取最新版本到本地,不会自动merge git fetch origin master
git log -p master..origin/master
git merge origin/master
以上命令的含义:
首先从远程的origin的master主分支下载最新的版本到origin/master分支上
然后比较本地的master分支和origin/master分支的差别
最后进行合并 上述过程其实可以用以下更清晰的方式来进行: git fetch origin master:tmp
git diff tmp
git merge tmp
从远程获取最新的版本到本地的test分支上
之后再进行比较合并 . git pull:相当于是从远程获取最新版本并merge到本地
git pull origin master
fetch和pull
git log --pretty online 更好看的log列表方式
git log --graph 用图表形式显示log
在HEAD后面跟^一个代表前一个版本,跟2两个表示前2个版本,~2也表示前2个版本。
git cat-file -p 分页显示文件内容
tree .git 用unix命令显示文件夹结构
touch 用unix命令新增一个文件,比如 touch hello.txt
mv 用unix命令移动文件,比如 mv aaa ../
-t 在unix命令中表示type
reset负责的是从responsitories到index的部分,会干掉index中有记录的文件。
checkout负责的是从index到working tree的部分,可与reset连用形成一次完整修改。
git reflog 查看丢失的commit id ,对于reset干掉的记录也可以显示,然后reset到那个id即可恢复index。
前面讲到的git reset只是在本地仓库中回退版本,而远程仓库的版本不会变化,这样,即时本地reset了,但如果再git pull,那么,远程仓库的内容又会和本地之前版本的内容进行merge,这并不是我们想要的东西,这时可以用 以下 方法来解决这个问题:
#删除远程的xxx分支
git push origin :xxx
注意是分支,不是commit id
对于一些只pull不push的库,可以每次pull之前用git checkout -f 来否定自己的修改 与git reset --hard HEAD 差不多。
常常的会发现比起remote add, 直接clone会获得更完整的工程信息。
1. 最简单直接的命令
git clone xxx.git
2. 如果想clone到指定目录
git clone xxx.git "指定目录"
3. clone时创建新的分支替代默认Origin HEAD(master)
git clone -b [new_branch_name] xxx.git
4. clone 远程分支
git clone 命令默认的只会建立master分支,如果你想clone指定的某一远程分支(如:dev)的话,可以如下:
A. 查看所有分支(包括隐藏的) git branch -a 显示所有分支,如:
* master
remotes/origin/HEAD -> origin/master
remotes/origin/dev
remotes/origin/master
B. 在本地新建同名的("dev")分支,并切换到该分支
git checkout -t origin/dev 该命令等同于:
git checkout -b dev origin/dev
如果是先在本地建立了空的分支,要merge远程分支,只需要查看branch -a 后,merge远程分支
例如本地分支 master,远程分支 origin/master
git checkout master
git merge origin/master
另外有个git show HEAD 和log - p 显示效果差不多。
终端上设置git的更多相关文章
- Windows系统上设置 Git Bash 的 Font 及 Locale
在windows 上使用 Git Bash 可以获得 unix 命令 操作体验. 但是初始的Git Bash的字体及语系都很不方便,需要自己设置. 在Git Bash的命令窗体上边框点击鼠标右键可以进 ...
- android studio在windows上设置git/ssh
windows果然是与众不同的,凡事都要那么麻烦一点点(当然..是对程序员来说..) 一开始,我想用cygwin里的git,就省得我再多装一套软件,配置也可以统一,但事实证明不行 在android s ...
- 『现学现忘』Git基础 — 7、设置Git Bash终端默认路径
目录 1.Git Bash默认路径 2.如何查看Git Bash终端默认路径 3.如何修改Git Bash终端的默认路径 4.拓展:指定目录进入Git Bash终端 5.注意事项 如果您不熟悉Git命 ...
- 转:sublime上使用git连接github
"工欲善其事,必先利其器." 这是古人的教诲,也是一个高效率的工程师需要遵循的法则之一.从大学开始写Java使用了JBuilder,Eclipse,后来写PHP用了Zend,写Ja ...
- WebStorm和sublime上使用git连接github(转)
WebStorm使用git连接github的方法: 用webstorm上传代码时,首先要先下载git,网址一搜就可以搜到,安装git,并且把ssh配置到github上.然后开始配置webstorm,打 ...
- 如何在服务器上搭建git服务器
参考文章: http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137583770 ...
- 如何在Window上使用Git
开始的时候同事只给了一个地址,类似这样:git@111.111.1.1:ABCDEF (1)如何在Windows上使用Git 有一篇博客不错:http://www.tuicool.com/articl ...
- CentOs上搭建git服务器
CentOs上搭建git服务器 首先安装setuptools wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0 ...
- 设置 git config 的一些默认配置
设置 git status的颜色. git config --global color.status auto 一.Git已经在你的系统中了,你会做一些事情来客户化你的Git环境.你只需要做这些设置一 ...
随机推荐
- docker 下 安装rancher 笔记
sudo yum update 更新系统环境 curl -sSL https://get.docker.com/ | sh 安装最新docker版本 systemctl start docker.se ...
- JAAS authentication in Tomcat example--reference
In this tutorial you will learn how to configure JAAS authentication in Tomcat using the HTTP Basic ...
- linux共享windows资料
linux 只有NTFS格式不能访问,其的都可以.1.用fdisk -l 查看分区表.2.然后用mount -t vfat /mnt/hda1 /dev/hda1 就可以了./mnt/hda1是一普通 ...
- 关于css中伪类及伪元素的总结
css中的伪类和伪元素总是混淆,今天参考了很多资料,也查看了部分文档,现将伪类及伪元素总结如下: 一.由来: 伪类和伪元素的引入都是因为在文档树里有些信息无法被充分描述,比如CSS没有"段落 ...
- spring事务管理学习
spring事务管理学习 spring的事务管理和mysql自己的事务之间的区别 参考很好介绍事务异常回滚的文章 MyBatis+Spring 事务管理 spring中的事务回滚例子 这篇文章讲解了@ ...
- C# 如何创建接口以及使用接口的简单Demo(转载!)
//No:1 首先,我们要封装一个接口,接口中不要实现具体的方法(说白了这就是一个架子而已!) using System;using System.Collections.Generic;using ...
- CentOS 6.5下搭建NFS文件服务器
环境介绍:服务器: 192.168.0.1客户机: 192.168.0.2安装软件包:服务器和客户机都要安装nfs 和 rpcbind 软件包:yum -y install nfs-utils rpc ...
- 转-SecureCRT设置
原帖地址:http://www.2cto.com/os/201410/341569.html 一.基本设置 1.修改设置 为了SecureCRT用起来更方便,需要做一些设置,需要修改的有如下几处: 1 ...
- 用html/css做的一个登入小界面(图片瀑布流)
一个登入效果简易图:(色彩搭配有点乱,嘻嘻,可以在代码处改成自己喜欢的颜色) css样式的代码: style.css: @charset "utf-8";/* CSS Docume ...
- Servlet(三)
重定向 服务器向浏览器发送一个302状态码以及一个Location消息头(该消息头的值是一个地址,称之为重定向地址),浏览器收到后会立即向重定向的地址发出请求,使用相应对象的API方法实现(respo ...