git常用命令

1)赋权限
进入目录 cd .ssh/
命令:  ssh-keygen
获取key:  vim id_rsa.pub

2)
安装   apt-get install git-core
获得   git clone git://url
访问   http://url/gitweb


3)纳入版本控制:
git add *.txt     //添加指定文件
git add README    //添加单个文件
git add .         //添加所有文件包括子目录,但不包括空目录


4)提交:
git commit -m “no1”             //全部提交
git commit -m “no1” someFile    //提交指定文件
git commit -C HEAD -a —amend    //复用HEAD留言,增补提交(修改小错误,而不增加提交记录,掩盖自己的小马虎)

-m “提交的说明”
-a 动把所有已经跟踪过的文件暂存,并提交.(工作目录中修改过的文件都提交到版本库,不需一个一个手动add了)
—amend 增补提交
-C 复用指定提交的提交留言
-c 打开编辑器在已有的提交基础上编辑修改


5)查看提交历史:
git log
这时“j”向下浏览,“k”向上浏览,“q”退出


6)问责:查明谁修改了代码
git blame hello.html            //查看修改过文件的人
git blame -L 12,+10 hello.html //12到22行  用"-L"参数在命令(blame)中指定开始和结束行:
blame还可以跟踪内容复制,文件复制


7)撤销缓存区的修改(没有commit的)

git checkout head 文件名 //撤销暂存区的修改 
git checkout head readme.txt todo.txt
git checkout head *.txt
git checkout head . //撤销所有

8)反转提交:

git revert HEAD //创建一个反向的新提交抵消原来的提交改动
如果需要反转多个,必须从最后的开始反转, 加 -n可以不马上提交,之后一起提交。
git revert -n HEAD
git revert -n 54efhds
git commit -m “revert head and 54efhds”


9)复位:还没有commit,让工作目录回到上次提交时的状态

git reset —hard HEAD //所有未提交的内容清空,这会让"git diff" 和"git diff —cached"命令的显示法都变为空
git reset —soft HEAD //复位版本库,暂存差异,便于提交中发现错误需要更改时有用(例如私人密码放到里边了)


10)分支:

在当前分支末梢建立分支:

git branch RB_1.0(建立分支不会自动切换过去)

切换分支:

git checkout RB_1.0(切换到RB_1.0分支)

创建并切换分支:

git checkout -b RB_1.0(简化上边2步操作)

删除分支:

git branch -d RB_1.0

基于某次提交、分支或标签创建新分支:

git branch RB_1.0 master
git branch RB_1.0 6fe57de0
git branch Rb_1.01 1.0

查看分支:
git branch -r //显示远程分支
git branch -a //列出所有分支

分支重命名:

git branch -m master mymaster
-M 大写M会覆盖同名的分支

合并分支:

直接合并:
git merge 想合并到当前分支的源分支名
git merge —no-commit 分支 //合并但不提交

压合合并:将分支压合成一条commit记录,并合并过来
git merge —squash 某bug分支
git commit -m “修复某bug”

拣选合并:只合并一个提交
git cherry-pick 321d76f
如果需要连续拣选,就需要加 -n参数
然后再git commit ,但不要加-m参数,编辑器就会使用刚拣选的提交留言作为现在的留言。



11)标签Tag:

查看标签:

git tag

创建标签:

git tag 1.0 //在当前分支最后一次提交创建标签
git tag 1.0 RB_1.0 //基于RB_1.0分支的最新踢脚创建标签
git tag 1.0 ae468d8kt //为某次提交创建标签

检出标签:

git checkout 1.0 //检出标签与检出分支一样操作,但检出标签后用git branch查看本地分支会发现你现在不再任何分支上
这时你不应该修改,而应该立即基于此标签创建一个分支
git checkout -b from-1.0



12)变基:

1)git rebase RB_1.01 //也许修改过一个bug,希望新版本变基到RB_1.01分支上
2)手动解决冲突 //如果解决不了直接git rebase -skip或-abort来跳过特定提交或完全放弃变基
3)git add xxx.html //冲突解决
4)git rebase —continue

//—onto参数可以改写历史抹掉中间的参数,将倒数第一个参数变基到倒数第3个参数,为防止出错建议在试验性分支上先试验。

rebase -i 可以排序历史记录,多个提交合并为1个,一个提交分解成多个提交 ,
详见版本控制之道p86 ,需要编辑器支持,windows记事本不行




13)远程相关:

git clone git://github.com/schacon/grit.git //从现有仓库克隆
git clone git://github.com/schacon/grit.git mygrit //换名,唯一区别就是新建的目录成了mygrit,其他都一样

添加远程仓库:

git remote add pb git://github.com/paulboone/ticgit.git
clone会默认添加origin仓库,如果原本用git init创建的版本库,后来又想提交到远程版本库,就可以用下边的办法
git remote add origin [email protected]:/xxxxxx

查看远程分支:

git remote -v //查看远程仓库,默认clone后,应该有一个origin仓库,-v显示对应的clone地址
git remote show origin //查看远程仓库信息

远程仓库重命名和删除:

git remote rename pb paul
git remote rm paul

获取数据:
现在pb/master可以在本地访问了,你可以合并到自己的某个分支,或者切换到这个分支看看有什么有趣的更新

git pull 抓取数据合并到工作目录中当前分支

推送数据:

git push [remote-name] [branch-name] //默认为 git push origin master

git push origin serverfix //推送分支,其实是下边一句的简化,提取我的 serverfix 并更新到远程仓库的 serverfix

git push origin serverfix:serferfix

git push origin :serverfix //这个语法用于删除,只要把分号前留空



14)其他:

git gc //垃圾回收,每隔一段时间例如一个月运行一次可以减少磁盘占用空间。
git reflog //最后的保障,列出误删的东东
git bisect //二分查找,版本控制之道p124页,略

归档版本库,导出压缩包:

git archive —format=格式 —prefix=目录/ 版本>压缩包.zip
git archive —format=zip head>test.zip
git archive —format=tar —prefix=mysite-1.0/ 1.0 | gzip>mysite-1.0.tar.gz
git archive —format=zip —prefix=mysite-1.0/ 1.0 >mysie-1.0.zip











通过git pull更新仓库,使用git init-db初始化自己的仓库。


commit:
 
git commit -a -e        提交全部修改文件,并调用vim编辑提交日志。
git reset HEAD^ or
git reset HEAD~1        撤销最后一次提交。
git reset --hard HEAD^  撤销最后一次提交并清除本地修改。
git reset SHA1          回到SHA1对应的提交状态。
 
 
add/delete/ls:
 
git add -a              添加所有文件。除了.gitignore文件中的文件。
git rm file             从git仓库中删除文件。
git commit              添加或是删除后要提交。
 
git ls-files -m         显示修改过的文件。
git ls-files            显示所有仓库中的文件。


這些事情都可以先在本地開 local branch 做,而不需要立即 Push 分享給別人。

git branch name       建立本地 local branch
git branch -m old_name new_name    改名字 (如果有同名會失敗,改用 -M 可以強制覆蓋)
git branch           列出目前有那些 branch 以及目前在那個 branch
git checkout name      切換 branch (注意到如果你有檔案修改了卻還沒 commit,會不能切換 branch,解法稍後會談)
git checkout -b name       本地建立 branch 並立即 checkout 切換過去
git branch -d  name       刪除 local branch

git merge name     合併另一個 branch,若沒有 conflict 衝突會直接 commit。若需要解決衝突則會再多一個 commit。
git merge --squash 將另一個 branch 的 commit 合併為一筆,特別適合需要做實驗的 fixes bug 或 new feature,最後只留結果。合併完不會幫你先 commit。
git cherry-pick 321d76f 只合併特定其中一個 commit。如果要合併多個,可以加上 -n 指令就不會先幫你 commit,這樣可以多 pick幾個要合併的 commit,最後再 git commit 即可。


查看 分支版本

git branch -a


除了master之外,我们还可以随便创建分支,然后push到服务器上去。

$ git add .
$ git commit -m ""
$ git pull origin camp

$: git push origin camp

远程分支和本地分支需要区分,所以,在从服务器上拉取特定分支的时候,需要指定本地分支名字。

$: git branch product origin/product

更新分支到本地

$: git pull origin camp


最后,在推荐一本学习git的书:

http://git-scm.com/book/

你可能感兴趣的:(工具使用)