1. git init
建立个git库及完成git初始化,生成一个名为.git的文件夹,所有git的数据和资源都放到这个文件内。
2. git clone
git clone url
eg:git clone git://github/your_github_user/your_git_repository.git
3. git status
查看当前git库的文件状态,git有三种状态:未暂存、已暂存、已入库
git status -s
简短单行格式,可以用于编写脚本的判断
' ' = unmodified M = modified A = added D = deleted R = renamed C = copied U = updated but unmerged
已暂存 未暂存 Meaning
-------------------------------------------------
[ MD] not updated
M [ MD] updated in index
A [ MD] added to index
D [ M] deleted from index
R [ MD] renamed in index
C [ MD] copied in index
[MARC] index and work tree matches
[ MARC] M work tree changed since index
[ MARC] D deleted in work tree
-------------------------------------------------
D D unmerged, both deleted
A U unmerged, added by us
U D unmerged, deleted by them
U A unmerged, added by them
D U unmerged, deleted by us
A A unmerged, both added
U U unmerged, both modified
-------------------------------------------------
? ? untracked
! ! ignored
-------------------------------------------------
eg: git status -s
已 未 filename
M build.py //修改了git库里的文件,已经add进暂存区
M build.sh //修改了git库里的文件,还没有add进暂存区
D test.sh // 删除了git库里文件test.sh,还没有add进暂存区
? ? sldgjasg //不是git库内的文件,没有add到暂存区内,也就是说这个是新加的文件
4. git add
git add filename 添加文件到暂存区内
git add . 添加当前目录下所有未暂存的文件到暂存区内,注意:使用命令前确保环境干净,否则不要用这个命令,把其他没有用的东西添加进去了
git rm file 删除暂存区内和git库的文件,直接rm 不能删除掉暂存区内的file
git rm . 见git add .
5. git commit
将当前git 库的修改记录到git库中,填写git log 信息,shift +zz
git commit -m "直接填写git log 信息 不用进去编辑模式"
git commit --amend【很好用的命令】
修改上一次的提交,包括git log 和git 库里面的内容,需要先 git add git rm 添加删除指定的文件到暂存区内,否则没有暂存的文件不会改到提交内
git commit --amend --author="沐天 <test@test.com>" --file=/home/test/test_gitlog_gitcommit_message
更改上次提交的作者和邮箱为 沐天 test@test.com,git log message 用/home/test/test_gitlog_gitcommit_message代替
6. git log
查看提交历史记录
commit ID SHA 值 作者的名字<邮箱> 和提交时间 提交信息说明及commit信息
commit message 提交信息可以根据项目要求设置特定的模板,
如 git config --global commit.template /home/work/.gitmsg.template(及编辑.gitmsg.template文件内容就是commit message模板信息,下次直接 git commit 就会自动弹出 填好模板信息的commit message 界面,自己填下参数,如BUG id 模块 要件 等等用于项目质量统计的)
作者和邮箱也可以这样改,如:
$git config --global user.name "你的名字"
$git config --global user.email "你的mail地址"
git config --global
设置当前用户的git config 参数设置,即相当于改~/.gitconfig的文件
git config --system
设置系统全局的git config 参数设置,即相当于改/etc/gitconfig的文件
git会优先选择范围最小的,及当前的.git/config > ~/.gitconfig >/etc/gitconfig
git log -p -n
查看最近n次提交的diff及修改内容
eg: git log -p -1
commit 4f235f69f2bd9eef5fe92c5c9f14f6600de03775
Author: test <test@test.com>
Date: Sun Apr 28 14:51:34 2013 +0800
add somefile to my repository
diff --git a/create-all-commit-patch-new4-26.sh b/create-all-commit-patch-new4-26.sh
new file mode 100755
index 0000000..38f716f
--- /dev/null
+++ b/create-all-commit-patch-new4-26.sh
@@ -0,0 +1,110 @@
+#!/bin/bash
+
+rm -f result-bug-check.list
+DATESTR=`date '+%Y-%m-%d'`
+OUTDIR=~/patch-outdir/$1/$2
+LOCALDIR=$PWD
+rm -rf $OUTDIR
+mkdir -p $OUTDIR
......省略
git log --name-status
查看提交历史记录中每个提交修改了那些文件,挺使用的,往往查找谁改了那些文件可以这样查看,也可以git blame filename
eg:git log --name-status
commit a7042334b29eaa6a50b040425f29869a2e5d5dd9
Author: test <test@test.com>
Date: Sat Apr 13 16:52:35 2013 +0800
add gerrit-2.1.4.war of google
A gerrit-2.1.4.war
git log --stat
每个提交做了那些改动
eg:git log --stat
commit 4f235f69f2bd9eef5fe92c5c9f14f6600de03775
Author: test <test@test.com>
Date: Sun Apr 28 14:51:34 2013 +0800
add somefile to my repository
ssh/authorized_keys | 1 +
ssh/id_rsa | 27 +++++++++++++++++++++++++++
ssh/id_rsa.pub | 1 +
3 file changed, 29 insertions(+), 0 deletions(-)
git log --oneline
显示单行的git log信息
7. git remote
远程仓库操作命令
$ git clone git://github/your_github_user/your_git_repository.git
下载个远程git 库后
$ git remote
$ origin
可以看到我们的远程仓库名
$ git remote -v
origin git://github/your_github_user/your_git_repository.git (fetch)
origin git://github/your_github_user/your_git_repository.git (push)
及我们对 origin进行操作可以上传下载远程的git 库
git fetch origin
下载更新远程库git://github/your_github_user/your_git_repository.git 到本地库里面
git push origin 当前分支名:master --tags
将本地的当前分支推到远程的master分支上,没有那个分支的话会自动创建,--tags是联通本地的tag一起推上去
git push origin :master
注意:在:前没有分支则是删除远程的master分支,切勿马虎操作,后果很严重!
git remote add test git://github/your_github_user/your_git_repository.git
添加远程仓库test
git remote rename test test123
修改test仓库名改为test123
git remote rm test123
删除远程仓库test123
8. git tag
非常重要的标签,每次升级或者版本变动必须打上相应的TAG,这样可以同过TAG 间查看之间的提交,利用TAG切新的分支,做rebase分支等等 很多很多,不要忘了打TAG
git tag tagname
新建tag
git tag -d tagname
删除tag
9. git branch
创建分支
git branch test123
以当前分支创建分支 test123
git branch test1234 test
用分支test创建新分支test1234
git branch test12345 V1.0
用tag V1.0 创建新分支test12345
git branch -d test12345
删除test12345分支
10. git checkout
切换分支和清除暂存文件
git checkout test1234
切换到分支test1234上
git checkout -f
清除当前分支已经add进暂存区内的文件
一个好用的清除git环境命令:git checkout -f;git clean -fd
11. git merge
合并分支
12.git rebase
13. git cherry-pick
14.git format-patch
15.git am
16.git filter-branch
===========================================待整理