git 笔记

来源:互联网 发布:网络硬盘源码 编辑:程序博客网 时间:2024/06/06 17:42

Git status 查看文件修改状态和提交状态

 modified:   a.txt //文件有改动

//管理修改

Git diff 文件名 查看文件修改的内容

//版本回退

Git log 查看最近的提交记录

Git log --pretty=oneline //是提交记录显示在一行

Git reset --hard HEAD^ //回退到上一个版本

Git reset --hard 版本号 //会提到哪个版本

Git reflog 用来记录你的每一次命令 会显示commit_id 可以根据commit_id 恢复到想要回退的版本

//撤销修改

Git checkout -- a文件名 放弃修改的文件

//删除文件

Rm 文件名 //删除文件

Git rm 文件名 // 把版本库中的文件删除 如果删除了可以使用git reset --hard HEAD^ 进行恢复

如果使用 rm误删文件可以使用 git checkout -- 文件名 进行恢复

//本地添加远程仓库

 

git remote add origin https://github.com/MAZHAL/mahzal.github.com.git

git push -u origin master

查看添加的远程库

Git remote -v

修改远程库

是在config中添加

 

//git服务器上

Git clone git@server:/home/git/xxx.git

 

 

//创建分支并切换分支

git checkout -b dev

        Git branch dev

Git checkout dev

查看分支

Git branch 

//切换分支

Git checkout 分支名

//把创建的分支合并到 主分支

Git merge dev

删除分支

Git branch -d dev

丢掉一个没有合并过得分支

git branch -D 分支名

 

 

//冲突 当 分支提交后 切换到主分支 主分支在合并前也有提交

会出现冲突

$ git merge dev

Auto-merging d.txt

CONFLICT (content): Merge conflict in d.txt

Automatic merge failed; fix conflicts and then commit the result.

 

 

git status //可以定位是哪个文件冲突了

手动解决冲突

添加并提交 ,合并成功

//查看分支结构

$ git log --graph --pretty=oneline --abbrev-commit

*   e8d8656 解决冲突了

|\

| * 53e8ff6 dev提交了

* | 64e805c master提交了

|/

* f7302f1 dev 提交了

* a508d55 sss

* 9357507 ss

* 5ac9390 提交a.txt

 

 

分支管理策略

Git 默认在合并分支 后删除分支 会丢失已删除分支的信息

使用带参数的--no-ff 方式合并则不会丢失信息

git merge --no-ff -m "merge with no-ff" dev

//查看分支历史

 git log --graph --pretty=oneline --abbrev-commit

*   aa90227 merge with no-ff

|\

| * 0a9cfa9 sss

|/

* 41304c0 冲突解决了

*   e8d8656 解决冲突了

|\

| * 53e8ff6 dev提交了

* | 64e805c master提交了

|/

* f7302f1 dev 提交了

* a508d55 sss

* 9357507 ss

* 5ac9390 提交a.txt

分支策略 master分支是十分稳定的

应该创建一个dev分支作为发用

 

 

bug 分支

//当前工作未完成未提交保存当前分支的工作现场

git stash

bug分支合并完成之后

再切换回来

git stash list 查看分支保存的工作现场

//显示 stash@{0}: WIP on dev: 6224937 add merge

git stash apply 进行恢复

同时要把保存的现场请掉git stash drop

如果只保存一个现场可以用 git stash pop进行恢复

 

如果有多个

则需要

恢复指定的git stash apply stash@{0}//1,2,3等具体的statsh

在进行删除当前选择的git stash drop stash@{0} 1,2,3等具体的statsh

 

多人协作

查看远程库的详细信息

Git remote

Git remote -v //显示更详细的信息

推送分支

 

推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:

 

$ git push origin master

如果要推送其他分支,比如dev,就改成:

git push origin dev

标签管理

正式上线要打一个合适的标签比如 v1.2

打标签 

切换到分支并为这个分支打标签

git tag v1.0

查看标签

git tag

默认标签是打在最新提交的commit上的。有时候,如果忘了打标签,比如,现在已经是周五了,但应该在周一打的标签没有打,怎么办?

方法是找到历史提交的commit id,然后打上就可以了:

git log --pretty=oneline --abbrev-commit

git tag v0.9 commit_id

再用命令git tag查看标签

git show 标签名查看标签的详细信息

还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:

git tag -a v0.1 -m "version 0.1 released" 3628164

用命令git show <tagname>可以看到说明文字:

 

$ git show v0.1

tag v0.1

Tagger: Michael Liao <askxuefeng@gmail.com>

Date:   Mon Aug 26 07:28:11 2013 +0800

 

version 0.1 released

 

commit 3628164fb26d48395383f8f31179f24e0882e1e0

Author: Michael Liao <askxuefeng@gmail.com>

Date:   Tue Aug 20 15:11:49 2013 +0800

 

    append GPL

 

 

如果标签打错了,也可以删除:

           git tag -d v0.1

 

//忽略文件

//检查忽略文件是否有问题

git check-ignore

本地库客服务器上的库有所不同

需要

git pull --rebase origin master 后才能提交

 

比如,要取回origin主机的next分支,与本地的master分支合并,需要写成下面这样 -

 

$ git pull origin next:master

 

如果远程分支(next)要与当前分支合并,则冒号后面的部分可以省略。上面命令可以简写为:

$ git pull origin next

面命令表示,取回origin/next分支,再与当前分支合并。实质上,这等同于先做git fetch,再执行git merge

$ git fetch origin

$ git merge origin/next

 

 

 

原创粉丝点击