Git 常用命令整理

最近在公司的服务器上安装了Git Server,开始从SVN转向到Git了,整理了一些在Git常用的命令。

取得Git仓库

初始化一个版本仓库

git init

Clone远程版本库

git clone git@xbc.me:wordpress.git

添加远程版本库origin,语法为 git remote add [shortname] [url]

git remote add origin git@xbc.me:wordpress.git

查看远程仓库

git remote -v

提交你的修改

添加当前修改的文件到暂存区

git add .

如果你自动追踪文件,包括你已经手动删除的,状态为Deleted的文件

git add -u

提交你的修改

git commit –m "你的注释"

推送你的更新到远程服务器,语法为 git push [远程名] [本地分支]:[远程分支]

git push origin master

查看文件状态

git status

跟踪新文件

git add readme.txt

从当前跟踪列表移除文件,并完全删除

git rm readme.txt

仅在暂存区删除,保留文件在当前目录,不再跟踪

git rm –cached readme.txt

重命名文件

git mv reademe.txt readme

查看提交的历史记录

git log

修改最后一次提交注释的,利用–amend参数

git commit --amend

忘记提交某些修改,下面的三条命令只会得到一个提交。

git commit –m "add readme.txt"
git add readme_forgotten
git commit –amend

假设你已经使用git add .,将修改过的文件a、b加到暂存区

现在你只想提交a文件,不想提交b文件,应该这样

git reset HEAD b

取消对文件的修改

git checkout –- readme.txt

基本的分支管理

创建一个分支

git branch iss53

切换工作目录到iss53

git chekcout iss53

将上面的命令合在一起,创建iss53分支并切换到iss53

git chekcout –b iss53

合并iss53分支,当前工作目录为master

git merge iss53

合并完成后,没有出现冲突,删除iss53分支

git branch –d iss53

拉去远程仓库的数据,语法为 git fetch [remote-name]

git fetch

fetch 会拉去最新的远程仓库数据,但不会自动到当前目录下,要自动合并

git pull

查看远程仓库的信息

git remote show origin

建立本地的dev分支追踪远程仓库的develop分支

git checkout –b dev origin/develop

参考资料

远程仓库的使用

何谓分支

基本的分支与合并

分支的管理

分支式工作流程

远程分支

衍合

在windows安装配置Git开发环境

上一篇文章在Ubuntu上配置Git Server后就要本地安装客户端,开始配置Git的开发环境。首先从google  code下载最新的windows的git安装包msysgit,当时我下载的是Git-1.7.4-preview20110204.exe,然后就开始安装了,开始上图:

安装Msysgit

下一步

同意GNU协议

选择安装位置,下一步

选择TrueType  Front,下一步

不创建启动文件夹

默认Git Bash,就可以了

选择使用OpenSSH

选择默认的Checkout Style

安装完成了

配置本地的Git

就这样安装好Msysgit后,就可以开始配置开发环境了,在你的工作目录建立一个新的文件夹Git,比如我的

选择Git文件夹,右键,选择Git Bash Here,会弹出shell命令行界面

生成你的Public Key

输入命令


ssh-keygen –C “你的email地址 “ –t rsa

就会为你生成一个 SSH Key,然后会询问一些保存文件的位置,设置密码神马的,直接回车,回车,回车,默认的就可以了

因为主要是在本地使用,可不使用口令,直接回车就可以了!

好了,现在为你生成了sshkey了。

设置Github帐号的Public Key

如果你有一个github的账号的话,

登陆github.Com 网站,在SSH Public Keys 设置你的SSH Public Keys

创建一个数据仓库

设置相关的信息

设置你的Email和Nickname

现在回到你的工作目录,可以选择设置你默认的email和nickname
输入命令


git config –global user.email 你的email地址
git config –global user.name "Arthur"

Clone你的项目

右键你的工作目录Git,选择Git GUI,选择克隆已有版本库

输入你在github的项目地址,例如


git@github.com:caijiamx/Magento-Theme.git

会弹出一个框出来让你是否选择信任github,输入yes

然后就会从github拉取数据了,

前面简单的介绍如何克隆版本库,现在就要正式的开始工作了。

命令行下的Git开发

新建一个工作文件夹,右键打开 Git Bash,输入


ssh git@github.com

选择yes,加入到hosts中

信任git@github.com站点

配置你的Github上Username和Token

设置你的github 用户名


git config –global github.user caijiamx

设置你的git账户的token


Git config –global github.token your token

这个token在github,com的Account Settings->Account Admin右侧找到。

我们重新开始上面介绍的从GUI拉取数据,现在我们从命令开始你的项目

Git下的开发

为你的项目添加说明文件


touch readme.txt
//输入hello world

将新建的文件添加到暂存区,输入命令


git add readme.txt

提交你的更改 输入命令


git commit –m "first commit"

添加远程服务器仓库,输入命令


git remote add origin git@github.com:directoo/Magento-Theme.git

提交你的更改到服务器,输入命令


git push origin master

参考资源

github set up git

如何设置你的SSH Key

github官方帮助教程

初次运行 Git 前的配置


	

在Ubuntu 上配置Git Server

Git的安装很容易,主要参考以下两个教程:

Install (Set Up) Git and Gitosis on Ubuntu

Git Server Setup Using Gitosis For Centos 5.2

不过在配置过程中遇到SSH Key无法验证的问题,在配置管理权限clone gitosis-admin.git时

输入

git clone git@www.xbc.me:gitosis-admin.git

总是会要求输入密码

Cloning into gitosis-admin…

git@www.xbc.me’s password:

Permission denied, please try again.

git@www.xbc.me’s password:

Permission denied, please try again.

git@www.xbc.me’s password:

Permission denied (publickey,password).

fatal: The remote end hung up unexpectedly

这个问题一直折磨了我好几天,最后经过一番痛苦的测试,找到了原因。

假设你为gitosis创建的用户为git,参考上面的教程。

先确认PukeyAuthentication 为yes,编辑ssh配置文件,添加git用户

输入命令

vim /etc/ssh/sshd_config

找到

AllowUsers root

添加git用户

AllowUsers root git

重启SSH服务,当时我就是卡在这里,虽然添加了git用户,但没有重启服务,ssh还是不认识git……

/etc/init.d/ssh restart

啊,今天真是个好日子呢……