工作区 -> git add -> 暂存区 -> git commit -> 版本库 -> git push -> 远程仓库

版本库HEAD表示当前版本,上一个版本HEAD^,上上一个版本HEAD^^.......

配置本机git
git config --global user.name "abcd"
git config --global user.email abcd@efgh.com

git连接自己的github
第一步:创建SSH_key: ssh-keygen -t rsa -C "aaadega@gmail.com",
创建成功后.ssh文件下的id_rsa是私钥,id_rsa.pub是公钥
第二步:登陆GitHub,打开“Account settings”,“SSH Keys”页面
第三步:添加SSH key,用公钥

一切从版本库同步到远程的git都有uname和pword操作push
其他都是从本地直接切换操作

一定要从自己的账号下clone仓库,这样你才能推送修改。先fork再clone

git init 初始化此文件夹为版本库
git add readme.txt 将文件从工作区添加到暂存区
git checkout -- readme.txt 撤销工作区文件的修改
git commit -m "this is commit" 将文件从暂存区提交到版本库
git reset HEAD 从暂存区回退到工作区
git diff 查看工作区文件修改前后的差异
git status 查看工作区与暂存区的文件修改状态
git log 查看提交日志
git log --pretty=oneline
git reset --hard HEAD^ 回退到上一版本
git reflog 查看命令历史
git remote add origin url 为远程Git更名为origin
git push -u origin master 首次推送此次修改
git push origin master 然后可以不加-u
git clone url 克隆一个远程库到本地
git branch page 创建新分支
git checkout page 选择新分支
git checkout -b page 相当于上面两条一起
git branch 查看分支
git merge page 合并分支page到master,checkout到master分支
git merge page --no-ff -m "plain" 禁用Fast forward
git branch -d[D] page 删除分支page,删除前先切换到master分支[D强行删除]
git push origin :page 删除远程分支page
cat read.txt 查看文件内容(冲突)
git log --graph 查看分支合并情况
git log --graph --pretty=oneline --abbrev-commit 查看最近分支合并情况
git stash 隐藏当前工作区
git stath list 查看隐藏的工作区
git stash apply stash{0} 恢复隐藏的工作区,不会删除stash
git stash drop 删除stash
git stash pop stash{0} 恢复隐藏的工作区,一并删除stash
git remote -v 查看远程库信息
git pull 拉取最新分支
git branch --set-upstream branchName origin/branchName 指定本地与远程之间的链接
git tag <name> 可以打一个新标签
git tag 查看所有标签
git tag name id 打标签
-a指定标签名,-m指定说明文字
git show <tagname>可以看到说明文字

有时git clone下来会出现很多branch,更麻烦的是如果主分支没代码那你就只能看到.git目录了。如下面的这个:

$ git clonegit://gitorious.org/android-eeepc/mesa.git

  发现本地就只有一个.git目录,那么这个时候就需要checkout了。

  进入你的本地目录,如这个是mesa,利用

$ git branch –r

  查看branch信息(当然你也可以用git show-branch查看,不过有时并不好用),获得如下branch信息:

origin/android
origin/mesa-es
origin/mesa-es-dri

  此时我们需要的是android分支的代码,那么此时就要进行checkout了。
$ git checkout origin/android

  你再看你的目录(mesa)下是不是有了代码了?其它的branch同理。

git clone默认会把远程仓库整个给clone下来; T2 {0 t, l+ @0 U" C2 g) i
但只会在本地默认创建一个master分支
如果远程还有其他的分支,此时用git branch -a查看所有分支:

* master
remotes/origin/HEAD -> origin/master " A4 u3 ~+ n5 u5 \7 R" Z( d# J
remotes/origin/master
remotes/origin/python_mail.skin
remotes/origin/udisk
remotes/origin/vip
复制代码
能看到远程的所有的分支,如remotes/origin/python_mail.skin e Y' X9 ~, f1 |
可以使用checkout命令来把远程分支取到本地,并自动建立tracking

$ git checkout -b python_mail.skin origin/python_mail.skin) X& X: I3 Q; ?9 j9 T5 @; J/ M
Branch python_mail.skin set up to track remote branch python_mail.skin from origin.; i/ B! ^3 J# u6 a( }. I$ M- i
Switched to a new branch 'python_mail.skin'
复制代码
或者使用-t参数,它默认会在本地建立一个和远程分支名字一样的分支
折叠展开复制代码

$ git checkout -t origin/python_mail.skin
复制代码
也可以使用fetch来做:

$ git fetch origin python_mail.skin:python_mail.skin
复制代码
不过通过fetch命令来建立的本地分支不是一个track branch,而且成功后不会自动切换到该分支上- z) t: R4 p- s6 _2 d3 a
注意:不要在本地采用如下方法:

$ git branch python_mail.skin
$ git checkout python_mail.skin/ i8 z/ N: a% v/ Q: M
$ git pull origin python_mail.skin:python_mail.skin
复制代码
因为,这样建立的branch是以master为基础建立的,再pull下来的话,会和master的内容进行合并,有可能会发生冲突...

Git中从远程的分支获取最新的版本到本地有这样2个命令:
1. git fetch:相当于是从远程获取最新版本到本地,不会自动merge

git fetch origin master
git log -p master..origin/master
git merge origin/master

以上命令的含义:
首先从远程的origin的master主分支下载最新的版本到origin/master分支上
然后比较本地的master分支和origin/master分支的差别
最后进行合并
上述过程其实可以用以下更清晰的方式来进行:
git fetch origin master:tmp
git diff tmp
git merge tmp

从远程获取最新的版本到本地的test分支上
之后再进行比较合并
2. git pull:相当于是从远程获取最新版本并merge到本地
git pull origin master

上述命令其实相当于git fetch 和 git merge
在实际使用中,git fetch更安全一些
因为在merge前,我们可以查看更新情况,然后再决定是否合并
结束

git技巧的更多相关文章

  1. Git技巧总结分享

    接触Git有很长一段时间了,从最初的不懂到逐渐熟悉运用,相比于SVN,更热衷于Git这一款强大的版本控制工具. 废话不多说,下面对Git做了一些技巧总结,在此分享下,希望能帮助到一些喜欢Git的朋友们 ...

  2. eclipse中使用git技巧总结

    之前一直使用svn,刚使用git还是有些蹩脚,今天总结下在使用git中常用技巧 1. ①.整个版本还原 当需要还原到某个版本时(多文件),操作如下 右击项目-->Team-->Show i ...

  3. Git技巧:右键菜单怎么去除?

    如果你是按照http://www.cnblogs.com/dunitian/p/5034624.html 那么你就没有这么多蛋疼的菜单了(反之:vs帮你安装的就蛋疼了) 说下解决方法: 1.Win+R ...

  4. git技巧记录--blame

    git blame [-L<m,n>] FilePath 可以查看代码每一行是谁写的(根据该行最后一次改动情况), -L表示要查看的行数范围, m: 起始行数, n:结束行数. 方便快速定 ...

  5. git技巧记录--子模块删除方法

    把子模块推进去了,删掉吧(将子模块删除,然后提交推送),删除子模块步骤: 1.在Platform.Web库下,右键->Git Bash,进入git命令行窗口,输入:git rm –-cached ...

  6. Git 技巧小结

    本篇博客内的内容,主要摘抄自 廖雪峰的 Git教程,这篇教程写的通俗易懂,步步深入,是我见过最棒的Git教程了.下面的全部内容,摘抄自此教程,有需要的朋友,请看完整版. Git版本库 git在创建版本 ...

  7. git 技巧

    将某个文件回退到某个版本 git co d359624286d9c1f022b8b3b6f2d3fe3b6524188b build.sh 查看某个文件在某个版本时的内容 git show d3596 ...

  8. 8 个 Git 的小技巧

    git 已经成为了我日常必备工具之一,我总结我几乎每天使用的8个有用(且简洁)的git技巧.   使用-p选择性添加 当你想提交内容时,你可以通过使用 git commit -am 来选择所有文件或使 ...

  9. Git(进击学习:远程仓库操作)-V3.0

    1.查看当前的远程仓库:git remote或git remote -v 2.添加远程仓库:git remote add [shortname] [url] git remote add pb git ...

随机推荐

  1. 安装android studio&flutter

    参考:https://flutterchina.club/setup-windows/ 1.安装jdk 2.android studio下载地址  https://developer.android. ...

  2. NOIp模拟赛 现实(DP 拓扑)

    题目来源:by lzz \(Description\) 给定一张有向图,求对于哪些点,删除它和它的所有连边后,图没有环. \(n\leq 5\times10^5,m\leq 10^6\). \(Sol ...

  3. Python中的pass的作用

    1.pass语句什么也不做,一般作为占位符或者创建占位程序,pass语句不会执行任何操作2.保证格式完整 3.保证语义完整 以if语句为例,在c或c++/java中: ? if(true) ;//do ...

  4. 流程控制语句 if

    格式: if 条件: 结果 第一种: >: print() 第二种: <: print() else: print() 第三种: num = input("请输入你猜的数字:&q ...

  5. centos7 重置root 密码

    重置Centos 7 Root密码的方式和Centos 6完全不同.让我来展示一下到底如何操作. 1 - 在启动grub菜单,选择编辑选项启动 2 - 按键盘e键,来进入编辑界面 3 - 找到Linu ...

  6. spring源码分析系列 (8) FactoryBean工厂类机制

    更多文章点击--spring源码分析系列 1.FactoryBean设计目的以及使用 2.FactoryBean工厂类机制运行机制分析 1.FactoryBean设计目的以及使用 FactoryBea ...

  7. spring boot + embed tomcat + standalone jar的内存泄露问题

    前一阵遇到了一个很坑的内存泄露问题,记录于此: 有个项目采用spring cloud重构后,部署到线上(其中有一个接口,大概每天调用量在1千万次左右),发现zabbix监控里,linux的可用内存一直 ...

  8. .Net性能的方方面面(必看官方经典)

    更多性能提高相关文章,必看 https://msdn.microsoft.com/en-us/library/hh917314.aspx Chapter 1 - Fundamentals of Eng ...

  9. p4 环境变量的优先级

    Perforce settings such as port, user, and workspace names using the following methods, listed in ord ...

  10. 手机号是SIM卡的号呢,还是买手机时就带的

    可以用原来的号码!把原来的卡装在新手机里就可以了,你的号码没有改变! 手机的号是由sim卡来决定的! 但是卡上的号码显示的是卡的一些信息! 你不用去理会它! 全文:http://iask.sina.c ...