git学习

来源:互联网 发布:微软编程一小时官网 编辑:程序博客网 时间:2024/06/05 11:15
1.Git 可以使用四种主要的协议来传输资料:
本地协议(Local),HTTP 协议,SSH(Secure Shell)协议及 Git 协议


2.在服务器(centos为例)上搭建Git:
#mkdir my   //新建目录
#git init    
#git clone --bare my_project my_project.git  //把现有仓库导出为裸仓库
#cp -r my_project.git /opt/git  //如果是不同服务器直接的拷贝,使用 scp -r my_project.git user@git.example.com:/opt/git
此时,其他通过 SSH 连接这台服务器并对 /opt/git 目录拥有可读权限的使用者,通过运行以下命令就可以克隆你的仓库。
#git clone user@git.example.com:/opt/git/my_project.git
为用户访问本服务器添加权限(账号密码):
#useradd pradmin
#passwd pradmin
(根据提示输入密码)
之后,pradmin这个用户就可以通过ssh协议访问本服务器,使用git在这个服务器上传输项目代码。
修改该仓库目录的组权限为可写,才能push代码:
# cd /opt/git/my_project.git
# git init --bare --shared



1.安装git之后,首先要做的就是设置你的用户名称与邮件地址。 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改:
$ git config --global user.name "wengjinbi"
$ git config --global user.email jinbi.weng@afmobigroup.com


2.git clone abbie.linux.com:/opt/git 
(根据提示输入账号密码)
成功之后,就会在你的当前目录中出现项目目录及代码
3.每次操作之前,一定要用git status 检查(必须)是否有未同步文件:
$git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)


        index.php


nothing added to commit but untracked files present (use "git add" to track)
类似这样,表明你新增了index.php未被跟踪(Untracked files)
则输入 git add index.php 来跟踪这个文件(同时放入暂存区 staged,放入暂存区的命令也是git add),
之后再输入git status,(git add . 是添加所有放入到暂存区)
$git add index.php
$git status
Changes to be committed:
  (use "git rm --cached <file>..." to unstage)


        new file:   index.php
类似这样,表明已跟踪但还没提交。
a.输入git rm --cached index.php 可以从暂存区中删除index.php(unstage),
b.输入git commit全部提交暂存区内的文件(提交之前请一定要用git status命令确认还有什么修改过的或新建的文件还没有 git add 过,
否则提交的时候不会记录这些还没暂存起来的变化。 这些修改过的文件只保留在本地磁盘。)
在git commit -a 后面添加 -a 可以自动把已跟踪过的文件暂存起来一并提交,省略git add暂存步骤.
$git commit -m "修改过那些文件、内容"    
$git commit -a -m "修改过那些文件、内容"


$git push   //发布版本




4.在暂存代码之后,如果有再修改本地代码,可以用git diff 查看本地代码与暂存区代码的变化:
$git diff           //不加文件名是查看所有变化,git diff index.php 是查看index.php的本地与暂存区的变化
$git diff --cached  //查看已暂存的将要添加到下次提交里的内容, Git 1.6.1以上版本支持git diff --staged,效果一样




5.忽略文件:
如果不存在.gitignore,则手动创建:
$vim .gitignore
编辑如下:
*.[oa]  //表示忽略以.o或.a结尾的文件
*~      //表示忽略以~结尾的文件
.idea/  //表示忽略.idea/及目录下的所有文件




6.从暂存区移除文件,连带从工作目录中删除,加-f 强制删除:
$git rm index.php   
其他例如:
a.删除整个目录中含.log后缀的文件:$git rm log/\*.log  
b.删除以~结尾的文件: $git rm \*~
如果只是想移除暂存区内的文件:
$git rm --cached index.php


7.移动文件(重命名):
$git mv index.php index




8.查看提交历史:
$git log


9.查看分支 
$git branch


10.创建分支 
$git branch v1.0                        //创建本地分支 
$git push origin 本地分支名:远程分支名  //推送本地分支到远程
$git branch -d v1.0 //删除本地分支
$git checkout --track origin/分支名     //跟踪远程分支 


11.切换分支
$git checkout v1.0


12.分支合并(比如要将开发中的分支(develop),合并到稳定分支(master))
$git checkout master  //首先切换到master
$git merge develop   //将develop分支合并到master分支
$git push            //合并之后必须再push出去才算完成合并
如果有冲突,则用git status查看冲突文件
解决冲突之后,用git add,git commit提交更改






13.删除分支
$git branch -d v1.0 (git branch -D v1.0 是强制删除分支)  //删除本地分支
$git push origin --delete 远程分支名   //删除远程分支


14.取消修改,恢复版本的操作:
#取消对文件的修改。还原到最近的版本,废弃本地做的修改。
git checkout -- <file>


#取消已经暂存的文件。即,撤销先前"git add"的操作
git reset HEAD <file>...


#修改最后一次提交。用于修改上一次的提交信息,或漏提交文件等情况。
git commit --amend


#回退所有内容到上一个版本
git reset HEAD^


#回退a.py这个文件的版本到上一个版本  
git reset HEAD^ a.py  


#向前回退到第3个版本  
git reset –soft HEAD~3  


#将本地的状态回退到和远程的一样  
git reset –hard origin/master  


#回退到某个版本  
git reset 057d  


#回退到上一次提交的状态,按照某一次的commit完全反向的进行一次commit.(代码回滚到上个版本,并提交git)
git revert HEAD
























0 0
原创粉丝点击