git技巧

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

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

配置本机git
git config --global user.name "abcd"
git config --global user.email [email protected]

git连接自己的github
第一步:创建SSH_key: ssh-keygen -t rsa -C "[email protected]",
创建成功后.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前,我们可以查看更新情况,然后再决定是否合并
结束

时间: 2024-10-25 08:22:57

git技巧的相关文章

Git 技巧小结

Git回退 Git必须知道当前版本是哪个版本,在Git中,使用HEAD表示当前版本,上一个版本为HEAD^,上上一个版本为HEAD^^. 举例:我们要把当前版本回退到上一个版本中去,可以使用git reset 命令 git reset –hard HEAD^ 这个回退,会使得git log中,最新版本提交的日志消失.如果我们记得最新版本提交的commit id(前6位就足够了),可以使用 git reset –hard COMMIT_ID 来返回到最新版本,如果我们不记得最新版本的commit

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

如果你是按照http://www.cnblogs.com/dunitian/p/5034624.html 那么你就没有这么多蛋疼的菜单了(反之:vs帮你安装的就蛋疼了) 说下解决方法: 1.Win+R 输入 cmd 2.如果你是64位系统就这么来输入命令:(扩充里面有指令和32位系统的解决) 3.成果~ 扩充:(32位的同志是不是吓一跳?O(∩_∩)O~一样解决,就是目录改下~) 64目录地址: "C:\Program Files (x86)\Git\git-cheetah" 32目录

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

把子模块推进去了,删掉吧(将子模块删除,然后提交推送),删除子模块步骤: 1.在Platform.Web库下,右键->Git Bash,进入git命令行窗口,输入:git rm –-cached References/IDOA2.修改.gitmodules文件,去掉References/IDOA的子模块节点(稳3临时库无子模块,这里应为删掉.gitmodules文件):3.修改.git\config文件,去掉References/IDOA的子模块节点:4.删除.git\modules\Refer

GIT 技巧

1.git撤销本地修改 git reset --hard origin/master git pull 2.git回退到前n个版本 如下为向前回退3个版本, git reset –hard HEAD~3 3.git多用户提交冲突一 场景:用户UserA修改了文件File1,用户UserB也修改了文件File1并成功merge到了服务器上,而UserA和UserB改动了同一个代码块,当UserA拉取代码时git无法merge此改动,就会出现如下错误提示, error: Your local cha

8 个 Git 的小技巧

git 已经成为了我日常必备工具之一,我总结我几乎每天使用的8个有用(且简洁)的git技巧. 使用-p选择性添加 当你想提交内容时,你可以通过使用 git commit -am 来选择所有文件或使用 git add file 来添加特定文件.然而,有时候你可能想只添加文件的一部分来提交.你可以用 git add -p 交互性地选择哪些你想提交的部分. 在选择完你所想要提交的区块后,只需要做一个 git commit(没有 -a),这样只会提交选中的部分.同样可以使用 git checkout -

开发实用技巧:Git——介绍

Git 分布式版本控制系统.2005 - 至今,创造者:Linus Torvalds.特点:快速.非线性.分支. 为什么使用Git? 1. 强大 Git在开发伊始的目标就是管理Linux内核.目前为止,使用最久.最经典的Linux kernel v2.6版本的不完全统计代码量是592万行,如果这样的一个工程Git都可以信手拈来的话,除了强大我们还能说什么呢? 2. 本地 Git作为版本控制系统,在其领域并非唯一,同样盛行的还有SVN.CVS等版本控制系统.但不同与Git的是,这两者都是集中式版本

常用Git命令及技巧总结

最近切换到git版本控制来维护代码,记录常用命令如下.另外,推荐git学习的书籍,<Pro Git>.另外,记录一些Git技巧. 1. 常用Git命令 初始化本地git仓库 git init 提交文件 git add *.c git add README git commit -m 'initial project version" 克隆远程仓库到本地 git clone git://github.com/schacon/grit.git git clone git://github

git学习心得总结

Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理 有两种取得 Git 项目仓库的方法. 第一种是在现存的目录下,通过导入所有文件来创建新的 Git 仓库. 第二种是从已有的 Git 仓库克隆出一个新的镜像仓库来. 一.从当前目录初始化 Git init 初始化后,在当前目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中. 二.git clone ssh://[email protected]/git/mx28/linux

【转】BitKeeper与Linux,git史前琐事

http://www.path8.net/tn/archives/6039 维持数年的BitKeeper与Linux的关系最终还是落入了好莱坞明星婚姻式的结局.他们曾经相得益彰,最后却走到这个遗憾的地步.kerneltrap这篇Feature: No More Free BitKeeper 做了一个完整的回顾.(与原文有改编) 1999年12月,Linux PowerPC项目首 先开始使用BitKeeper--这个非开源但是有条件免费的版本控制工具.到了2002年2月,Linux之父Linus