参考资料:
Pro Git book:http://git-scm.com/book/zh/v1
一、常用命令
提交所有代码
git add --all
git commit -m 'some messages'
git push origin master
同步仓库到另一个分支(比如gh-pages分支):
git checkout gh-pages // go to the gh-pages branch 切换分支
git rebase master // bring gh-pages up to date with master
git pull // pull before push
git push origin gh-pages // commit the changes
git checkout master // return to the master branch
同时向多个git仓库提交代码
1、添加一个新地址: git remote add origin_gitlab http://10.2.10.22/3rd_custom/apollo.git
2、往新地址推送代码:git push origin_gitlab master
如果推送失败,则先pull:
git pull origin_gitlab master
如果pull失败,报错 fatal: refusing to merge unrelated histories,则加上一个参数:
git pull origin_gitlab master --allow-unrelated-histories
移动文件或文件夹
移动文件:git mv file1.txt source/file1.txt
移动文件夹:
git mv src fastdfs/fastdfs-client/
创建一个tag(发布一个版本)
例如:
git tag -a v1.1.0.RELEASE -m 'Release version 1.1.0.RELEASE on 11/21/2014'
git push origin v1.1.0.RELEASE
其中 v1.1.0.RELEASE 为 tag name
删除tag,重新上传
1、先删除本地tag:git tag -d v1.2.1.RELEASE
2、然后再删除远程tag:git push origin :refs/tags/v1.2.1.RELEASE
3、然后在重新执行创建tag的过程
撤销未提交(push)的commit
1、git log查看commit id,找到提前之前的id
如下所示:
|
现在HEAD在第一个的位置,我们找到第二个位置的 id:2477fb81a
2、git reset --hard commit-id,注意参数hard会丢弃修改的文件。
一般情况下,不要加--hard,使用 git reset commitid 即可。
git reset --[soft, hard, mixed(default)] 说明
首先我们来看几个术语:
HEAD
这是当前分支版本顶端的别名,也就是在当前分支你最近的一个提交
Index
index也被称为staging area,是指一整套即将被下一个提交的文件集合。他也是将成为HEAD的父亲的那个commit
Working Copy
working copy代表你正在工作的那个文件集
--soft 只是重置head,更改的文件不会还原,index不会重置,意味着下次commit,不需要再add;
--mixed 意味着,更改的文件不会还原,下次提交需要重新add;
--hard 意味着彻底还原,更改的文件会还原到之前的版本,更改丢失。
分支管理
查看分支列表:git branch
将分支切换到 master:git checkout master
从现有分支创建 release分支:git branch release
从现有分支创建 release分支:git checkout -b release
从 master分支创建新的分支:git checkout -b release master
将release分支 push到服务器:git push origin release
将修改 merge到 maser分支
git checkout master
git merge release
删除 release分支
git branch -d release
git 删除远程分支
一不小心把本地的临时分支push到server上去了,想要删除。
一开始用
git branch -r -d origin/branch-name
不成功,发现只是删除的本地对该远程分支的track,正确的方法应该是这样:
git push origin :branch-name
冒号前面的空格不能少,原理是把一个空分支push到server上,相当于删除该分支。
搭建GIT博客:
http://www.ruanyifeng.com/blog/2012/08/blogging_with_jekyll.html
http://never.doubting.me/2013/04/18/2013-04-18-setup-octopress-on-github-step-by-step/
http://ibruce.info/2013/11/22/hexo-your-blog/
GIT代理设置:
位置:~/.gitconfig,例如
C:\Users\Administrator\.gitconfig
内容如下:
[user]
name = zollty
email = zollty@163.com
[http]
proxy = http://170.17.18.80:8080
[https]
proxy = http://170.17.18.80:8080
GIT命令下 文件中文名 乱码问题:
设置一下就行了:
git config --global core.quotepath false
Linux下GIT的使用:
http://www.linuxidc.com/Linux/2014-03/97821.htm
最好是参见官方Help文档:
https://help.github.com/articles/set-up-git/#platform-linux
https://help.github.com/articles/caching-your-github-password-in-git/
https://help.github.com/search/?utf8=%E2%9C%93&q=linux
分支操作:
查看分支:git branch
创建分支:git branch name
切换分支:git checkout name
创建+切换分支:git checkout -b name
合并某分支到当前分支:git merge name
删除分支:git branch -d name
GIT换原某个文件到之前的版本,命令如下:
zollty@zollty-System-Product-Name:~/0sync/0work/git/kop-resource-stat-demo$ git status
位于分支 master
修改: src/main/java/cn/stat/AipCall.java
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
zollty@zollty-System-Product-Name:~/0sync/0work/git/kop-resource-stat-demo$ git log src/main/java/cn/stat/AipCall.java
commit eae91cbd5322f85decfd9c3788636809dea361b2
Author: zollty <zollty@163.com>
Date: Tue Sep 6 16:08:53 2016 +0800
commit c13d4ed0289251db11a3abf375179f674a192984
Author: zollty <zollty@163.com>
Date: Tue Sep 6 14:31:37 2016 +0800
Initial Commit
zollty@zollty-System-Product-Name:~/0sync/0work/git/kop-resource-stat-demo$ git checkout eae91c src/main/java/cn/stat/AipCall.java
Git暂存命令
当需要拉取远端文件,但又不想提交正在修改的文件时,可以使用git stash 命令将当前的工作区保存(藏匿)起来,等pull 完后再还原。
此功能类似于实现了 ‘局部拉取更新’ 。
命令如下:
git stash //暂存修改工作区
git pull //拉取远端文件
git stash pop stash@{0} //将工作区还原
注:如果还原工作区的文件与pull 下来的文件有冲突,要手动修改冲突