git
git push http://git.anchong.net/ec/web.git jinlong //提交到自己的分支
git pull http://git.anchong.net/ec/web.git master //从服务端拉新代码
服务器上
查看所有分支 git branch -a
删除某个分支 git push origin --delete 分支 比如long
推荐文章
够用一年的Git 技巧
10 个迅速提升你 Git 水平的提示
全局别名设置
vim ~/.bash_profile
填写一下内容,然后 执行source .bash_profile
alias gl="git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit'"
alias ga='git add -A'
alias gb='git branch'
alias gk='git checkout'
alias gc='git commit -m'
alias gm='git merge'
alias gs='git status'
alias gls='git log -1'
alias gr='git reset --hard'
alias hao='git push origin master:long1'
比如要把 git status 设置成快捷键 git s
git config --global alias.s status
配置文件在 vi ~/.gitconfig
打开配置文件也可以看到刚才的 alias配置
删除的话,可以直接进入 .gitconfig 文件删除
或者 git config --global unset alias.s
git config --global alias gl="git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch
常用指令
查看某个文件谁改过代码
git blame filename
概要
brew安装的东西,位置都在`/usr/local/Cellar/`文件夹下面
ps -ef|grep mysqld查看进程
kill -9进程号结束进程
git是分布式版本控制svn是集中式版本管理
设置用户名和邮箱
git config --global user.email "you@qq.com" //全局配置
git config --global user.name "your name"
克隆:git clone http://地址,把github上的项目的整个仓库克隆岛本地。克隆的东西,除了有源代码,还有历史版本仓库。但是download下载的东西没有历史版本
git help查看帮助指令
git help -a查看所有帮助指令
git help -g查看手册
git help命令查看某个指令的作用.`f`键向下翻页,`b`键向上翻页,`q`退出显示帮助的信息
概念:
add之后会存放到暂存区,暂存区不是版本库
服务器端
1.创建用户
useradd git//会自动保存在/home/目录夹下面 git用户必须必须chown -R git:git git.里面内容是什么用户无所谓
passwd git //给git用户加上密码
vi /etc/passwd查看用户密码
vi /etc/group查看用户所在组
2.禁用git用户shell登录(可选)
vi /etc/passwd
git:x:1001:1001:,,:/home/git:/bin/bash
改为
git:x:1001:1001:,,:/home/git:/bin/git-shell
3.创建文件uthorized_keys,存放客户端的公钥,使客户端能够访问git
1.cd /home/git/ mkdir .ssh
2.vi authorized_key //这一步也可以省略,下一步的重定向会直接生成这个文件
cat id_rsa.pub >> .ssh/authorized_keys //把客户端传过来的公钥重定向到authorized_keys 然后需要重启服务器,才能使用使用
4.初始化仓库
mkdir /opt/git
cd /opt/git
git init --bare test test.git
然后把他移动到git用户下面
mv test.git /home/git
5.更改文件或者目录的属主和属组
chown -R git:git test.git
客户端(MAC)
1.把服务端git克隆到本地
git clone ssh://git@innote.com:250/opt/git/test.git//如果有端口号,要写端口号,比如250。如果需要密码,就是服务端的密码。但是一般不用密码,一般用证书(公钥),将证书放在自己的服务器上
2.生成证书(建议输入密码)
ssh-keygen -t rsa 生成公钥私钥
位于~/.ssh中,id_rsa和id_rsa.pub cd 进入
*将id_rsa.pub的内容复制到服务器/home/git/.ssh/authorized_keys中
scp id_rsa.pub long@192.168.1.110: //这种方式是传到家目录'/home/long'下
用scp上传建议传到家目录下,如果传到根目录下,会提示没有权限,上传不成功
往服务器上推项目 -- git push 地址 分支(这里的分支是本地分支)
git push https://git.oschina.net/long646/test.git master
如果不想每次都写提交地址,我们可以给远程仓库起一个别名
git remote add origin(这个名字可以随便写) https://git.oschina.net/long646/test.git
git remote remove(或者rm) origin ----删除关联的远程服务器别名
以后提交的时候只需要以下代码即可
git push origin master ----origin是远程地址的简写
如果代码推不上去,我们可以用一下代码,强制推送
git push -f origin master.
git remote -v ----------------查看关联到的远程服务地址的别名
每次推代码的时候都需要输入密码,如果使用公钥的话,关联的地址智能是`git`,而不能再使用`https`了
从服务器上拉代码
git pull 代码地址 本地分支
git pull origin master
3.克隆远程仓库
git clone git@innote.com:22/opt/git/test.git
*远程登录不要密码,authorized_keys不生效的解决办法
1.ssh目录的权限必须是700 //服务端
2.ssh/authorized_keys文件权限必须600 //服务端
任何人都可以使用http协议下载github的项目,但是如果要下载git的项目,需要有权限(可以是公钥,可以是密码)
GIT下载在终端输入指令brew install git
1.Git常用命令
git config --global user.name "your name" ---设置你的仓库用户名(用于标示提交者)
git config --global user.email "email@example.com" ---设置你的仓库邮箱(用于标示提交者)
Git init初始化一个git仓库
git add --all ---添加所有更改的文件
git add filename1 ---指定添加filename1
git commit -m "commit message"---添加更改的信息,必须要有,不然报错,不建议不加
git status ---查看git当前状态
git diff filename1--查看filename1到底修改了哪些内容
git log ---查看最近的提交日志
git log --pretty=oneline ---单行显示提交日志
git reset -hard commitID ---利用git log得到的commitID返回版本
git reflog --查看命令的历史,可以找到git log看不到的commitID,因为git log只是显示当前提交日志,如果你提交了一次,退回版本后又反悔了,就能查看上次提交的commitID
git checkout --filename1利用版本库中的版本替换工作区红的文件。
功能有2:
撤销文件修改,分两种情况:
撤销工作区中的修改(没有使用git add命令添加到暂存区)
撤销暂存区中的修改(添加到了暂存区又做了修改)
再回删除的文件
工作去中文件误删了,可以通过此命令从版本库中找回
git reset HEAD fliename1撤销add,回到工作区
git rm filename1删除文件
git remote add origin https://github.com/pengloo53/learngit.git将版本地库关联到github远程库上
git push -u origin master第一次推送的时候要加上-u参数,可以将本地库的master分支与远程库的master分支关联起来;下次提交就不需要加-u了。
2.分支管理
git show 查看当前版本与上次版本的文件改动
git checkout long ----切换分支
git checkout -b long ---创建一个新的分支
git branch ----查看所在分支
git add file ----提交信息到暂存区
git commit -m "提交记录"
git reset --hard HEAD^ ---退回到上一个版本^^是上上一个
git reset --hard 3628164 ---退回某个指定的版本
git log --pretty=oneline 查看日志
忽略文件
可以在全局配置
vi ~/.gitignore_global
*~
*.DS_Store
*.idea
或者直接在项目文件下
vi .gitignore
filename
冲突解决
首先,个人觉得冲突的原因是由于两次改动了文件内容不同导致的。比如我有两个版本,一个是
master
,一个是long
,在master
分支做了a b c文件,我在long
分支下git pull
同步了两者的代码,然后我在master
A
上修改了a b ,创建c 文件提交,在long
上修改了b
,会提示b
文件有冲突。
此刻master
改了a文件,创建了c文件,但是long
并没有动,所以git pull origin master
之后, ac文件是正常的,
而不正常的b文件,会在我们pull
的时候提示CONFLICT (content): Merge conflict in b
总之跟线上合并的原则就是,谁改了,就以谁的为准,如果同时改了,就会有冲突,所以不要害怕线上的会把本地的给覆盖掉
只要出现以下提示,就是冲突的文件
long:ceshi long$ git pull origin master
From git.oschina.net:long646/ceshi
* branch master -> FETCH_HEAD
Auto-merging b
CONFLICT (content): Merge conflict in b
Automatic merge failed; fix conflicts and then commit the result.
git show 查看冲突区别
long:ceshi long$ git show
commit 50f474be11239d0d5ee716d5d9ecacf24fdbbfa7 (HEAD -> long)
Author: long <646448149@qq.com>
Date: Thu Aug 31 12:26:29 2017 +0800
long
diff --git a/b b/b
index e0b3f1b..8586b93 100644
--- a/b
+++ b/b
@@ -1 +1,2 @@
bb
+22
git diff 版本号 版本号 可以查看两个版本下的区别
git服务器搭建
sudo apt-get install git //安装git
sudo adduser git //添加git用户
git clone --bare my_project my_project.git
sudo chown -R git:git my_project.git //修改仓库的所属用户为git
git checkout -b dev创建dev分支并切换到dev.相当于git branch dev、git checkout dev两条命令
git branch查看当前分支
git merge dev合并指定分支到当前分支,如,你现在在master分支,那么执行命令就将dev分支合并到了master分支上
git branch -d dev删除dev分支
git log --graph --pretty-oneline --addrev-commit查看分支合并图
git merge --no-off-m "merge with no-ff" dev禁用[fastforward],也就是保留分支的相关信息。
git stash将工作区现场储藏起来,等以后恢复后继续工作。通常用于处理更为着急的任务时,例如:bug.
git stash list查看保存的工作现场
git stash apply恢复工作现场
git stash drop删除stash内容
git stash pop恢复的同事直接删除stash内容
git stash apply stash@{0}恢复指定的工作现场,当你保存了不只一份工作现场时
Git rm –cached文件名不再追踪
Git add文件名
Git commit –m ‘记录名’
Git commit –am “记录名”添加并提交Git log查看git日志
Git checkout –b b1创建一个分支
Git branch查看所在分支
Git checkout master回到主分支
Git merge分支名合并两个分支
Git branch –d b2删除分支
将文件名写入.gitignore文件中表示添加时忽略该文件
git checkout –[提交的名字]可以回到之前的版本
vi编辑器
vi命令模式插入模式编辑模式
插入命令---a i o
定位:-----set nu :n
删除:-----x nx dd ndd
复制和剪切--yy-p dd-p
替换和恢复--r/R u
搜索和替换--/关键词/ n :范围/要替换的关键词/替换为关键词/g或者c
保存退出----:wq ZZ :q!
使用和技巧
:r /boot把boot目录下的信息导入当前指定的位置:r !date导入当前时间!which ls查找ls路径
查看apache进程ps -ef |grep httpd
vi ~/.vimrc
1 syntax on#设置颜色
2 set nu#设置行号