git commit --amend
git reset HEAD <file>
git checkout -- <file>
git fetch [remote-name]
此命令会到远程仓库中拉取所有你本地仓库中还没有的数据。运行完成后,你就可以在本地访问该远程仓库中的所有分支,将其中某个分支合并到本地,或者只是取出某个分支,一探究竟。
如果是克隆了一个仓库,此命令会自动将远程仓库归于 origin 名下。所以,git fetch origin 会抓取从你上次克隆以来别人上传到此远程仓库中的所有更新(或是上次 fetch 以来别人提交的更新)。有一点很重要,需要记住,**fetch 命令只是将远端的数据拉到本地仓
库,并不自动合并到当前工作分支**,只有当你确实准备好了,才能手工合并。
如果设置了某个分支用于跟踪某个远端仓库的分支(参见下节及第三章的内容),可以使用 git pull 命令自动抓取数据下来,然后将远端分支自动合并到本地仓库中当前分支。在日常工作中我们经常这么用,既快且好。实际上,默认情况下 git clone 命令本质上就是自动创建了本地的 master 分支用于跟踪远程仓库中的 master 分支(假设远程仓库确实有master 分支)。所以一般我们运行 git pull,目的都是要从原始克隆的远端仓库中抓取数据后,合并到工作目录中当前分支。
参考资料:http://blog.csdn.net/mostone/article/details/17970347
我经常看到许多人,只会 fork 一次,提交过一次修改就不知怎么办了!因此原框架作者是非常勤奋的,一天会提交N次,一个星期后许多文件都改动过了,而那些代码贡献者不可能一个个跟着修改。 因此我们还是用到上方的pull request按钮。
这次是把自己的项目放到左边,原框架作者放到右边,在选择过程中,你会发现原框架作者有许多贡献者的。这里我希望大家一定要浏览Commits与Files Changed进行学习!这也是github最大的价值所在!把握别人对代码的改进,最能提高我们编码水平。这里面会涉及大量的编码技巧!
当你从远程库克隆时候,实际上 Git 自动把本地的 master 分支和远程的 master 分支对应起来了,并且远程库的默认名称是 origin 。
要查看远程库的信息 使用 git remote
,
要查看远程库的详细信息 使用 git remote –v
。
把本地库的内容推送到远程,使用 git push 命令,实际上是把当前分支 master 推送到远程。
由于远程库是空的,我们第一次推送 master 分支时,加上了 –u 参数, Git 不但会把本地的 master 分支内容推送的远程新的master分支,还会把本地的 master 分支和远程的 master 分支关联起来,在以后的推送或者拉取时就可以简化命令。推送成功后,可以立刻在 github 页面中看到远程库的内容已经和本地一模一样了。
说明:投入学习的感觉是非常好的,学习完以后一定自己要多练习一下。
从现在起,只要本地做了提交,就可以通过如下命令:git push origin master。
把本地 master 分支的最新修改推送到 github 上了,现在你就拥有了真正的分布式版本库了。
git push命令用于将本地分支的更新,推送到远程主机。
它的格式与git pull命令相仿。
git push <远程主机名> <本地分支名>:<远程分支名>
注意,分支推送顺序的写法是<来源地>:<目的地>,所以git pull是<远程分支>:<本地分支>,而git push是<本地分支>:<远程分支>。
(1)如果省略远程分支名,则表示将本地分支推送与之存在”追踪关系”的远程分支(通常两者同名),如果该远程分支不存在,则会被新建;
(注意:这种推送方式是很常见的。)
git push origin master
上面命令表示,将本地的master分支推送到origin主机的master分支。如果后者不存在,则会被新建。
(2)注意:如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。
也 git push origin :master
等价于 git push origin --delete master
。
在某些场合,Git会自动在本地分支与远程分支之间,建立一种追踪关系(tracking)。比如,在git clone的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的master分支自动”追踪”origin/master分支。
笔者注:我们是不是也可以认为:在 git push -u origin lwBachOrderCoupon
的时候,远端创建了 lwBachOrderCoupon 分支,也就自动建立了追踪关系。Git也允许手动建立追踪关系。
git branch –set-upstream master origin/next
上面命令指定master分支追踪origin/next分支。
如果当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名。
git pull origin
上面命令表示,本地的当前分支自动与对应的origin主机”追踪分支”(remote-tracking branch)进行合并。
如果当前分支只有一个追踪分支,连远程主机名都可以省略。
git pull
上面命令表示,当前分支自动与唯一一个追踪分支进行合并。
删除远端的分支(把一个空的分支推送到远端)
git push origin :lwBachOrderCoupon
查看 git 操作日志,以提交一个版本显示一行的方式:
git log --pertty=oneline
要新建并切换到该分支,运行git checkout 并加上 -b 参数:
创建一个新分支总是基于一个起始分支的,如果我们省略了下面的 <新分支基于的原始分支> ,那么这条命令的起始分支就是当前分支。
git checkout -b <新分支名> <新分支基于的原始分支>
补充说明: -b 表示创建了新分支以后,就切换到这个新分支。
再次说明:我们不可能创建一个什么都没有的分支,一定是基于一个原始分支而创建新的分支的。
<新分支基于的原始分支>:如果省略,则基于当前分支创建新的分支。
git checkout -b 与 git branch 的区别是:
基于当前分支创建新分支的命令是:git branch <新分支名>(注意:此时还在当前分支上,要用 git checkout 才能切换到新的分支。)
删除分支:git branch -d <待删除的分支名>
git branch <分支名> :根据当前的分支创建一个新的分支。
说明:牢牢记住,创建分支一定是基于一个已经有的分支。
git checkout <分支名>:切换到一个新的分支。
git branch -d <分支名>:删除一个分支。
说明:如果这个待删除的分支还没有合并到主分支上,回报错。因为这样你会丢失信息。
如果你非要这么做,可以使用 git branch -D <分支名>
一旦远程主机的版本库有了更新(Git术语叫做commit),需要将这些更新取回本地,这时就要用到git fetch命令。
git fetch <远程主机名>
如果本地有个master 分支和远程的 origin/master分支没有建立跟踪关联,需要使用 git branch –set-upstream master origin/origin
git branch -a(列出本地分支和远程的分支)
git branch -r(列出远程分支)
git branch (不带参数,列出本地已经存在的分支)
下面这条命令,可以帮助我们查看所有的个人配置信息:
git config -l
git 查看全局设置
查看全部
git config –global -l
查看单个
git config –global user.name
git config –global user.email
使用 github 的一个简单操作流程(本地测试)。 1、在 github 上 init 一下; (先在 github 上初始化一个新项目) 2、在自己的项目根路径上也要 init 一下; (其实可以使用 clone 到本地,让 git 管理你的项目) 3、git add .(把所有的更改添加到暂存区) 4、git commit -m "init" 5、git remote add origin git@github.com:weimingge14/MavenDemo.git 说明:建立本地仓库和远程仓库的连接。 6、在 push 之前,要先 pull 一下。 git pull origin master 7、git push -u origin master git clone 克隆版本库的时候,所使用的远程主机自动被Git命名为origin。如果想用其他的主机名,需要用git clone命令的-o选项指定。 # 工作区和版本库的概念 git add . 添加所有工作区文件到暂存区。 git commit -m “message” 如果不写文件名,就是一次性提交所有文件到分支上。 工作区:就是你在电脑上看到的目录,比如目录下testgit里的文件(.git隐藏目录版本库除外)。或者以后需要再新建的目录文件等等都属于工作区范畴。 下面的描述很重要: >版本库(Repository): 工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有 Git 为我们自动创建了第一个分支 master ,以及指向 master 的一个指针 HEAD 。 总结:版本库里有暂存区、分支和指针HEAD。 我们前面说过使用 Git 提交文件到版本库有两步: 第一步:是使用 git add 把文件添加进去,实际上就是把文件添加到暂存区。 这一步可以简单归纳为:让 git 管理你的文件。 第二步:使用 git commit 提交更改,实际上就是把暂存区的所有内容提交到当前分支上。 这一步可以简单归纳为:让 git 记录你的文件的变化,这种记录是可以随时通过“时光机”来回变化的哟。 你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。 # git clone git clone URL链接 说明:使用这条命令 clone 下来的版本库是带有文件夹名字的。所以要 cd 到文件夹里面才会看到 .git 文件夹(也就是版本库)。 # 撤销修改 针对还没有提交到暂存区的文件,我们可以使用下面的命令,把所有的修改撤销。
git checkout – .
如果只想撤销单个还未纳入暂存区的文件的修改,可以将 . 替换为一个准确地文件名。
版本回退
git reset –hard
其中 `<commit_id>` 是我们每次执行 commit 操作的时候, git 帮助我们生成的一个唯一的 id ,你只要输入前面几位数字就可以了。
bug 处理策略:创建一个新分支,合并(要采用 --no-ff 方式的合并,以避免快速合并)到主分支以后,再删除该新分支。
git stash :将当前工作现场存储起来。
1、 git stash :将当前工作现场存储起来。
2、再 `git checkout -b issue-101` 从 master 分支上创建用于 修复 bug 的新分支。注意:我们的 bug 分支是针对 master 分支进行修复的。
3、再 `git checkout master` ;
4、在 master 分支上合并 issue-101 分支:
git merge –no-ff -m “merge by fix 101” issue-101
我们接下来来看一下孙悟空那边要做什么。
孙悟空看到请求已经接受。
执行 git fetch 会获取到更新的 master 分支。然后
git checkout master
git merge --ff origin/master
swkFeature1分支完成使命,删掉吧: git branch -d swkFeature1
5、删除临时分支
git branch -d issue-101
6、切换回 dev 分支继续干活
# 一些使用 git 的时候遇到的麻烦
**解决 git bash 里无法复制粘贴的问题**
: 参考资料:http://www.blogbus.com/merlinl-logs/272035598.html
1、左上角有粘贴按钮:
2、选择属性,选择快速编辑模式。
自己的总结:
gitconfig–globaluser.namewudi git config –global user.email [email protected]
git config -l
ssh-keygen -t rsa -C “[email protected]”
拷贝公钥
然后测试:
ssh -T [email protected]
“`