git 常用命令使用实践总结-wish
2016-03-22 00:00
621 查看
关于GIT:
1、首先附上本地wish-openstack git 代码源地址:
注:使用账户密码方式:(pwd:yjs)
3、删除git分支:
4、强行用远程代码覆盖本地:
5、回到初始状态:假若初始建立了一个初始的空commit,之后就可以通过重新设置来清空一个分支,然后使用hard重置分支到刚刚创建的初始commit:
6、git打tag方法:
7、为之前提交记录补打tag:
8、查看分支:
9、删除远程分支及tag:
10、根据tag得到SHA1值:
11、重新编辑上一次已经被commit的文件信息:(重新编辑上一次commit的注释等)
12、已经通过git add 加入到暂存区的文件,撤销回来:
13、取消对文件的修改
14、查看当前的远程库
15:添加及操作远程仓库
16、远程仓库的删除和重命名
17、推送数据到远程仓库
18、分支合并(将dev分支合并到master分支)
19、分支整合
20、git发布版本归档:
22、所有可从dev分支中获得而不能从master分支中获得的提交
23、git本地回滚,及远程回滚
24、git误操作,如何查找误操作的commit-id
25、
git是一个开源分布式版本控制系统:客户端并不只提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份。git优点:速度快、设计简单、对非线性开发模式的强力支持(允许上千个并行开发的分支)、完全分布式、有能力高效管理类似Linux内核一样的超大规模项目(速度和数据量)。Git 和其他版本控制系统的主要差别:Git只关心文件数据的整体是否发生变化,每次计算整体数据的SHA1值是否有变化,再来确定整体状态有无更新变化。而大多数其他系统则只关心文件内容的具体差异(CVS,Subversion,Perforce,Bazaar 等等)每次记录有哪些文件作了更新,以及都更新了哪些行的什么内容。 |
git clone git@192.168.1.175:openstack/horizon-2014-1-1.gitgit clone git@192.168.1.175:openstack/nova-2014-1-1.gitgit clone git@192.168.1.175:openstack/python-novaclient-2-17-0.gitgit clone git@wishi.gitlab.com:openstack/keystone-2014-2-b1.gitgit clone git@wishi.gitlab.com:openstack/python-keystoneclient-0-9-0.gitgit clone git@wishi.gitlab.com:openstack/ceilometer-2014-1-1.gitgit clone git@wishi.gitlab.com:openstack/python-neutronclient-2-3-4.gitgit clone git@wishi.gitlab.com:openstack/python-glanceclient-0-12-0.gitgit clone git@wishi.gitlab.com:openstack/neutron-2014-1-1.gitgit clone git@wishi.gitlab.com:openstack/glance-2014-2-b1.gitgit clone git@wishi.gitlab.com:openstack/unitelog.git |
git clone -b dev git@wishi.gitlab.com:/var/opt/gitlab/git-data/repositories/openstack/nova-2014-1-1.git nova-2014-1-1-dev |
2、git 已经存在master主分支情况下,新建dev开发分支及使用:(以nova为例)
1、将nova代码clone到本地:git clone git@wishi.gitlab.com:openstack/nova-2014-1-1.git2、进入nova文件夹,新建分支:cd nova-2014-1-1git branch dev (默认此dev父分支为当前分支)从某个tag处创建分支:git branch <branch_name> <tag_name>3、 查看所有分支,检测分支是否创建成功git branch -a4、将本地新建的分支push到远端代码库:git push origin dev5、如果需要clone 开发分支代码,使用如下命令:git clone -b dev git@wishi.gitlab.com:openstack/nova-2014-1-1.git6、开发分支提交代码,使用如下命令:git add .git commit -m "test commit"git push origin dev备注,以后所有的代码开发都只能在dev分支上面,master只能保存发布版本合并代码 |
删除本地分支:git branch -d you_branch_name(强制删除用-D)删除远程分支:git push origin :you_branch_name举例删除nova 远程的dev分支 |
|
git reset --hard <initial_commit SHA1 值> |
|
首先用git log -2得到commit 的SHA1值然后git tag v-test-after-tag 4640383fde2566fcbf04e6e64acc6bd68af01e8c |
-a参数可以查看远程分支,当前分支前面加有*号标记,远程分支会用红色表示出来(如果你开了颜色支持的话):
|
在Git v1.7.0 之后,可以使用这种语法删除远程分支:
|
git show 2014.1.1 |
git commit --amend |
git reset HEAD <file-name> |
git checkout -- <file> |
git remote -v至少可以看到一个名为 origin 的远程库,Git 默认使用这个名字来标识你所克隆的原始仓库 |
$ git remote (查看)origin (显示只有一个origin分支)$ git remote add pb git://github.com/paulboone/ticgit.git (添加一个远程分支pb)$ git remote -v (再次查看)origin git://github.com/schacon/ticgit.gitpb git://github.com/paulboone/ticgit.git现在可以用字串 pb 指代对应的仓库地址了。比如说,要抓取所有 pb有的,但本地仓库没有的信息,可以运行 git fetch pb:$ git fetch pbremote: Counting objects: 58, done.remote: Compressing objects: 100% (41/41), done.remote: Total 44 (delta 24), reused 1 (delta 0)Unpacking objects: 100% (44/44), done.From git://github.com/paulboone/ticgit* [new branch] master -> pb/master* [new branch] ticgit -> pb/ticgitfetch 、pull区别:
|
git remote rename pb paulgit remote rm paul |
git push [remote-name] [branch-name]也可以:git push [远程名] [本地分支]:[远程分支](显式指定本地分支) |
git checkout mastergit merge dev假若合并有冲突则用git status查看冲突文件,手动解决完冲突之后,使用git add 则将冲突文件标注为已解决冲突,并加入到暂存目录中等待commitgit branch --merged //查看哪些分支已经与当前分支合并了git branch --no-merged //查看哪些分支还没有与当前分支合并了 |
|
git archive -o last.zip HEAD 基于最新提交建立归档文件last.zip |
git log master..dev |
本地回滚:
|
git reflog |
$git config --global core.autocrlf true # Configure Git on Windows to properly handle line endings解释:core.autocrlf是git中负责处理line endings的变量,可以设置三个值--true,inout,false.设置成三个值会有什么效果呢?If
core.autocrlfis set to true, that means that any time you add a file to the git repo that git thinks is a text file, it will turn all CRLF line endings to just LF before it stores it in the commit.。设置为true,添加文件到git仓库时,git将其视为文本文件。他将把crlf变成lf。【2】If
core.autocrlfis set to false, no line-ending conversion is ever performed, so text files are checked in as-is. This usually works ok。【2】设置为false时,line-endings将不做转换操作。文本文件保持原来的样子。设置为input时,添加文件git仓库石,git把crlf编程lf。当有人Check代码时还是lf方式。因此在window操作系统下,不要使用这个设置。这是参考文献2给的解释希望能帮助大家。Yet another way to show how
autocrlfworks
1) true: x -> LF -> CRLF 2) input: x -> LF -> LF 3) false: x -> x -> xwhere x is either CRLF (windows-style) or LF (unix-style) and arrows stand for
file to commit -> repository -> checked out file初始化,创建git代码库:(test.git先在远程创建好(gitlab页面))– EditGit global setup:
git config --global user.name "tantexian" git config --global user.email "tantexian@163.com"Create Repository
mkdir test cd test git init touch README git add README git commit -m 'first commit' git remote add origin git@wishi.gitlab.com:tantexian/test.git git push -u origin masterExisting Git Repo?
cd existing_git_repo git remote add origin git@wishi.gitlab.com:tantexian/test.git git push -u origin master
相关文章推荐
- OpenStack开发过程中常用Git操作场景(转)
- pycharm git merge实战
- 关于Java类加载双亲委派机制的思考(附一道面试题)
- 互联网协议入门
- PDOStatement::bindParam的一个陷阱
- iOS微信分享功能简单实现
- Nginx 开启 status 状态功能
- Centos7YUM安装MariaDB
- win7自动换锁屏壁纸
- 四种方案解决ScrollView嵌套ListView问题
- java synchronized VS volatile
- 第15天 简单小复习
- maven项目配置Jetty服务器
- svn从trunk合并代码到branch
- Java遍历删除
- Spring整合JMS(一)——基于ActiveMQ实现
- Java并发编程:volatile关键字解析
- AppDelegate内方法的调用场景
- 目前最好用的-开源-手势解锁库!!!
- navigationBar中左右Item