Git常用指令 git学习笔记 撤销修改 远程仓库 分支 标签管理 Fork 配置别名

@(python)

git 命令 这是git常用命令
init 建立git仓库
add 把文件添加到仓库
commit 把文件提交到仓库,将暂存区中的文件提交到master中
status 掌握仓库的状态,看到更改的,有没有提交
diff =differents变化
log 查看历史记录,谁,什么时候,改了什么
reset 回退
reflog 记录每一个命令
checkout – file 用版本库里的版本替换工作区的内容;-b 创建分支,并切换到分支
rm 删除
branch 查看当前分支 -d删除分支
merger 分支合并到当前分支分支上
stash 存储工作现场
stash list 工作现场列表
tag 打标签
远程库  
clone 克隆远程库
git remote -v 查看远程库的信息 -v详细信息
git push origin master 推送某个分支
状态  
Untracked 未添加过
Changes not staged for commit: 添加过,但是更改没有add
no tracking information 本地分支和远程分支的链接没有创建

添加文件方法

git add 【files】 //把文件添加到暂存区中 
git commit -m “description” //将暂存区中的所有内容提交到当前分支

版本回退

在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,往上一百个版本写成HEAD~100 
eg 
退回上一个版本

$ git reset –hard HEAD^ //或者写commit id 
HEAD is now at ea34578 add distributed

再次查看log,发现最后一次的更新已经没有了,那么如何更新回这一个版本呢,往上翻,找到上一次的版本号

$ git reset –hard 3628164 
HEAD is now at 3628164 append GPL

也可以这样

git reflog //会显示所有的历史操作

Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git仅仅是把HEAD从指向了另一个版本。

git工作原理

工作区就是真实电脑中的路径。版本库中包括,暂存区和master 
工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

Git常用指令
git学习笔记
撤销修改
远程仓库
分支
标签管理
Fork
配置别名


如何去除不想add的文件

先把大量文件一次性add进来:

strong textgit add *.py 
然后你用git status查看,会有提示:

Changes to be committed: 
(use “git reset HEAD …” to unstage) 
new file: 1.py 
new file: 2.py 
new file: 3.py 
new file: 4.py 
要排除掉其中一个文件,用:

git reset HEAD 1.py 
这时再用git status看,1.py变成了untracked,剩下的就可以提交了。


撤销修改

撤销工作区中的更改

git checkout –file

如果修改前提交到暂存区,那么工作区的文件会恢复为暂存区中的版本,否则恢复到版本库中的版本。

撤销提交到暂存区的修改

git reset HEAD file

可以把暂存区的修改撤销掉(unstage),重新放回工作区

提交到版本库中回退

如果没有提交到远程库可以参见版本回退,用reset回退版本


远程仓库

链接远程仓库

第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:

$ ssh-keygen -t rsa -C “youremail@example.com” 
cd ~ 
ls -a

找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。


1.按照git上的提示将本地库关联到远程 
2.关联后,使用命令git push -u origin master第一次推送 master分支的所有内容; 
3.此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;


拉取远程仓库

 git fetch [remote-name]

此命令会到远程仓库中拉取所有你本地仓库中还没有的数据。运行完成后,你就可以在本地访问该远程仓库中的所有分支,将其中某个分支合并到本地,或者只是取出某个分支,一探究竟。

克隆远程仓库

要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。

Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。


分支

分支是git十分重要的功能,当你在开发新功能(feature)时,最好新建一个分支。 
修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除; 
在多人协作时,分支也是十分有用的,master版本是稳定版本,如果因为一点一点的添加,会照成使用错误,所以,真正的开发可以建立到一个dev分支上,时机成熟了,再将更新推送到master上。

创建分支

创建一个Dev分支

git checkout -b dev

git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

$ git branch dev 
$ git checkout dev //切换分支 
Switched to branch ‘dev’

查看、合并、删除分支

git branch 查看当前分支

git merge dev

将当前分支合并到当前分支

git merge –no-ff -m “merge with no-ff” dev

添加了一个–no-of可以将分支中的提交历史也合并到另一个分支上

>***git branch -d dev*** 删除分支
  • 1

解决合并冲突

当两个分支同时编辑一个文件时,就会出现冲突,<<<<<<<,=======,>>>>>>>标记出不同分支的内容手动改源文件,改好后提交。

保存工作状态

>git stash
  • 1

处理完其他事情后,找到当时的工作状态

> git stash list //查看保存的工作状态
  • 1

恢复工作状态

>git stash apply //恢复工作区
>git stash drop //删除工作区
  • 1
  • 2

等同于上面的两个

>git stash pop  
  • 1

你可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:

>$ git stash apply stash@{0}
  • 1

多人协作

没太看懂,先占个坑。 
廖雪峰git教程-多人协作

推送本地分支到远程库

git push origin master

并不是所有的本地分支都要推送到远程的 
一般在多人协作中,有两个分支,一个master主分支、dev开发分支,开发人员要在开发分支上同步开发进度

查看远程库的信息

>git remote    // -v   详细信息
  • 1

在本地创建远程分支

 git checkout -b dev origin/dev
  • 1

标签管理

发布一个版本时,我们通常先在版本库中打一个标签,这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。

打一个标签

git tag v1.0

也可以用git tag 查看所有标签

给历史提交一个tag

git log --pretty=oneline --abbrev-commit 找到历史提交的commit id 然后打上就可以了

   git tag v0.9 6224937  //commit id

tag information

git show <tagname>

delete tag

git tag -d v0.1   //local

删除远程tag 
先删除本地的tag 
让后从远程删除

$ git push origin :refs/tags/v0.9

推送tag到远程

git push origin <tagname>    //only
git push origin --tags       //push all local tag

Fork

如何参与一个开源项目呢?比如人气极高的bootstrap项目,这是一个非常强大的CSS框架,你可以访问它的项目主页https://github.com/twbs/bootstrap,点“Fork”就在自己的账号下克隆了一个bootstrap仓库,然后,从自己的账号下clone

git clone git@github.com:michaelliao/bootstrap.git

一定要从自己的账号下clone仓库,这样你才能推送修改。如果从bootstrap的作者的仓库地址git@github.com:twbs/bootstrap.git克隆,因为没有权限,你将不能推送修改。

配置别名

用st代替dtatus 
廖雪峰—配置别名

$ git config --global alias.st status