关闭

git 工作笔记(自己常用的 git 命令记录)

标签: git
896人阅读 评论(3) 收藏 举报
分类:

修改最后一次提交

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 remote

当你从远程库克隆时候,实际上 Git 自动把本地的 master 分支和远程的 master 分支对应起来了,并且远程库的默认名称是 origin 。
要查看远程库的信息 使用 git remote
要查看远程库的详细信息 使用 git remote –v

git push

把本地库的内容推送到远程,使用 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 log 查看版本提交日志

查看 git 操作日志,以提交一个版本显示一行的方式:

git log --pertty=oneline

git 分支操作(branch、fetch、checkout 命令)

要新建并切换到该分支,运行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、选择属性,选择快速编辑模式。




自己的总结:

gitconfigglobaluser.namewudi git config –global user.email wudi1304@sina.com
git config -l

ssh-keygen -t rsa -C “wudi1304@sina.com”
拷贝公钥
然后测试:
ssh -T git@git.oschina.net
“`

0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:501629次
    • 积分:6204
    • 等级:
    • 排名:第3983名
    • 原创:223篇
    • 转载:31篇
    • 译文:0篇
    • 评论:92条
    常用链接
    我的 GitHub 地址:https://github.com/weimingge14/
    我的码云地址:http://git.oschina.net/weimingge
    我的新浪微博:http://weibo.com/u/2194939432
    我的通知
    最近写的文章主要在 GitHub 的博客上。后续会把质量比较高的内容转移过来。如果有的朋友想先预览一下,可以直接访问 http://www.liwei.party/。