git 指令大全
来源:互联网 发布:淘宝货架 编辑:程序博客网 时间:2024/06/06 03:29
给初学者的帮助
-----------------------------------------------------------------------------------------------------------------------------
前提:假如我们的公司使用git来管理代码,且我们有权限访问,那么我们可以clone master 主分支,如:
git clone ssh://git@192.168.133.15:1046/company/projectName.git
每个人开发的时候,不能直接在master上修改提交代码,因为如果代码有错误,可能会被自己或者其他人更新到外网上
所以我们会建立自己开发用的分支,最后合并到master分支上去。
例如:
dev分支作为开发功能时用
bugfix 修改bug时使用
……等等,git 切换分支都是用的当前一套代码,所以速度很快,可以按照自己的需求,创建相应分支
/** ========================================================================================================================*/
/** ==常用命令==*/
/** ========================================================================================================================*/
命令1: git checkout -b 分支名称 以当前分支为基础,创建分支
例如: git checkout -b dev (所有人都可以创建一个私有的分支,也可以创建一个公有的开发分支,
公有分支其作用是:供所有人使用的预发布版本,保证程序可以正常运行,然后才会提交到master上去)
git checkout -b mydev (创建仅自己开发使用的分支,可以只放在本地,其他人不需要改动该分支上的代码)
我们现在的分支就变成了mydev,如果想回到dev分支上去,使用
git checkout dev ,这样就切换到了dev分支,如果mydev分支中我们修改了a.html文件,但是还没提交,那么我们切换到dev分支时,
所做的修改依然存在,除非我们mydev上修改了文件,并且执行过git commit 提交,那么a.html切换到dev分支上时就看不到a.html,
因为在dev分支中,我们没有创建过a.html。这时候我们需要用到命令6.
命令2:git pull 获取远程分支上的包含其他人提交的最新代码。一般我们在修改代码前,都需要先执行一下git pull命令,保证工作区的文件是最新的
命令3:git status 显示修改过的文件。
例如:如果修改了文件a.html,b.html两个文件,可以在根目录下执行 git status ,就会列出所有修改过的文件
命令3:git add 将修改过的文件加入到暂存区。(暂存区的作用见命令4)
例如:如果修改了文件a.html,b.html两个文件,可以在当前目录下执行 git add d:\g1\a.html(绝对路径),就只把a文件加到缓存区
也可以在当前目录下执行git add . 这样把两个修改过的文件都加入了缓存区
命令4:git commit 提交文件(git中提交文件只提交加入到缓存区里面的文件)
例如:git commit -m 'a.html',就把刚才加入缓存区的a.html提交到本地代码库里,这里的 -m 是写注释的意思
命令3和命令4 ,根据自己的需求,可以并成一条命令写:git commit -am '添加a.html'
命令5:git push 把提交到本地仓库中的代码,推送到远程仓库中,其他人便可以通过使用git pull 获取到这些更新
命令6: git merge 合并分支,例如当前分支是mydev,git merge dev 把当前分支和dev分支文件合并
命令7:git checkout -- 文件名称 从当前分支的暂存区下载文件,覆盖本地工作区的文件,可以用来撤销对文件做的修改。如果该文件已经被修改过,
执行了git add,但是没git commit提交,则该文件会被最后一次git add的文件覆盖;如果没有执行过git add,就会被原版本文件覆盖
(注意,本地暂存区,即 如果修改的文件执行过git add命令,不管有没有git commit,git checkout出来的文件就是git add命令执行之后的代码),
命令8:git commit --amend 重复上一次提交命令,也是改写上一次提交,并且不会新增一条更新日志。主要作用是防止提交的日志冗余重复
**但是如果你已经push过了,那么其历史最后一次,永远也不能修改了。
例如:
1、在提交文件时,用git commit -am '提交新模版',执行之后,才发现注释写错了,应该是旧模版,那就用到这个命令:git commit --amend,
然后,可以编辑注释 “提交旧模版”,保存,退出,;新的注释就覆盖了刚才的注释
2、提交了a.html和b.html之后,发现漏掉了一个c.html。这时候可以git add c.html加到暂存区,然后git commit --amend,就把暂存区里的文件提交了
命令9: git branch -d 分支名称 删除分支
命令10: git rm -f 从当前的工作空间中和暂存区中删除文件。需要执行git commit 之后才能真正提交到仓库中删除
git rm -fr 文件夹名 , 删除文件夹
git rm -f 文件名 , 删除文件
git rm --cached 仅删除暂存区中的文件
命令11:git clean 删除文件( 清除未跟踪的文件),这个命令多用于处理未加入版本库中的文件或目录,比如清理一些缓存文件或者还没有git add 的新建的文件。
git clean -dn 这个命令可以看看有哪此文件和目录会被删
git clean -f 只会删文件,不会删目录,
git clean -df 可帮你搞定一切
命令12:git reset 回滚版本,此次之后的修改都会被退回到暂存区
(1)git reset --hard 去撤销这次修改(注意,这是将工作区和暂存区的文件回滚,如果有新增的未提交的文件,将无法找回),所用于解决无用冲突
或者处理干净自己的工作区,根据需求不用在这个老版本上开发的话,需要执行 git pull 命令,将自己的工作区保持最新版本
git reset --hard HEAD~2 回退到历史倒数第二个版本
git reset –-hard origin/master 将本地的状态回退到和远程的一样
(2) 回退所有内容到上一个版本
git reset HEAD^ 默认--mixed,这个模式的效果是,工作区中文件的修改都会被保留,不会被标记成"Changes to be committed",但是会打出什么还未被更新的报告。
(3) 回退a.py这个文件的版本到上一个版本
git reset HEAD^ a.py
(4) 向前回退到第3个版本
git reset -–soft HEAD~3 暂存去和工作区都不改变 。这个模式的效果是,执行完毕后,自从<commit>以来的所有改变都会显示在git status的"Changes to be committed"中
命令13:git stash 储藏 (有未完成的工作,然后需要转到其他功能或者需求开发上时用到)
‘储藏”可以获取你工作目录的中间状态——也就是你修改过的被追踪的文件和暂存的变更,就是两种文件可以被储藏:一种git add 添加到暂存区但还没git commit的文件,一种是修改了的已经在版本里的文件
(*切记,如果有还没有加入到版本里的文件,不要用git stash, 这样文件会丢失)
git stash list 查看储藏列表
git stash apply 应用上一个储藏,对文件的变更被重新应用,但是被暂存的文件没有重新被暂存
git stash apply --index 被暂存的变更也恢复
git stash apply stash@{0} 恢复到某一个版本:stash@{0}是储藏列表的id
命令14:git reflog //查看一下reset之前的那个ref叫什么,例如是HEAD@{0}:
git reset --hard HEAD@{0}
命令15:git fetch:
git fetch origin branch1
设定当前分支的 FETCH_HEAD' 为远程服务器的branch1分支`.
注意: 在这种情况下, 不会在本地创建本地远程分支, 这是因为:
这个操作是git pull origin branch1的第一步, 而对应的pull操作,并不会在本地创建新的branch.
一个附加效果是:
这个命令可以用来测试远程主机的远程分支branch1是否存在, 如果存在, 返回0, 如果不存在, 返回128, 抛出一个异常.
git fetch origin branch1:branch2
只要明白了上面的含义, 这个就很简单了,
首先执行上面的fetch操作
使用远程branch1分支在本地创建branch2(但不会切换到该分支),
如果本地不存在branch2分支, 则会自动创建一个新的branch2分支,
如果本地存在branch2分支, 并且是`fast forward', 则自动合并两个分支, 否则, 会阻止以上操作.
git fetch origin :branch2
等价于: git fetch origin master:branch2
命令15:git tag:
进阶-回滚:
恢复已修改未暂存状态:
git reset
文件被git add 加入到了暂存区,还未git commit
可以删除撤销暂存区文件git reset HEAD <file>...
这样文件就回到了之前已修改未暂存的状态。
如果你觉得你合并后的状态是一团乱麻,想把当前的修改都放弃,你可以用下面的命令回到合并之前的状态:
git reset --hard HEAD
或者你已经把合并后的代码提交,但还是想把它们撒销:
git reset --hard ORIG_HEAD
本地修改撤销:
git checkout -- benchmarks.rb
-------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------
git diff 文件对比,git log 查看提交日志,还是用视图工具比较方便,
----未完待续
0 0
- Git 指令大全
- git 指令大全
- Git/Vim指令大全
- GIT 常用指令大全
- git指令大全
- Git指令大全
- git 常用指令大全(实时更新)
- 指令大全
- Git 指令
- Git指令
- git指令
- git指令
- git指令
- 【GIT】---指令
- git 指令
- Git指令
- git 指令
- Git指令
- LRU Cache [leetcode]
- 关于Mac配置hosts文件
- .Net Remoting 入门教程-原理&&Hello
- 正确的MVC访问流程
- [LeetCode]12.Integer to Roman
- git 指令大全
- AAC ES流如何解码播放
- PLSQL提示ORA-12154: TNS: 无法解析指定的连接标识符
- php curl批处理--可控并发异步
- C语言中static的作用
- 100个iOS开发/设计面试题汇总,你将如何作答?
- MapReduce表连接操作之Reduce端join
- Android Studio 调用.so文件
- Android 使用 SDK Manager 下载SDK速度慢,容易丢包和异常的解决办法