您的位置:首页 > 其它

版本工具-常用 Git 命令

2017-11-29 15:53 375 查看

Git之所以是革命性的,就是因为它能同时给你这两方面的好处。你可以在原型开发过程中经常备份变动,而搞定后只需要交付一个干净的版本历史。

大原則

记住,在 Git 中任何已提交的东西几乎总是可以恢复的。 甚至那些被删除的分支中的提交或使用–amend选项覆盖的提交也可以恢复(阅读数据恢复了解数据恢复)。然而,任何你未提交的东西丢失后很可能再也找不到了。

Git 保存的不是文件的变化或者差异,而是一系列不同时刻的文件快照。

工作逻辑图如下



几个专用名词的译名如下

Workspace:工作区

Index / Stage:暂存区

Repository:本地仓库

Remote:远程仓库

常用命令

1.添加与提交到本地仓库

git add  <文件名列表,以空格分割> or  git add *
git commit -m "提交说明信息"

//或者合并成:
git commit -am "提交说明信息"


2.将这些改动提交到远端仓库

git push origin master


3.将这些改动拉到本地

原则:先拉后推

git pull

git pull origin master ---在分支上将主分支的代码迁出到本地


4.分支

git checkout  分支名【分支名可以带文件夹名】  ---切换分支

git checkout -b  分支名 【分支名可以带文件夹名】 ---创建并切换到新分支

git branch -d   分支名 【分支名可以带文件夹名】 ---删除本地分支

git push --delete origin 分支名 【分支名可以带文件夹名】  ---删除远程分支

git branch -r   --查看远程分支

git branch    --列出本地所有的分支

git branch -av  --列出本地及远程所有分支,并显示最新状态

git merge ***


5.撤销

// 对暂存区的取消:
git reset --hard  【HEAD/版本号】

// 撤销对文件的修改:
git checkout -- CONTRIBUTING.md  (文件名)


根据–soft –mixed –hard,会对working tree和index和HEAD进行重置:

git reset –mixed:此为默认方式,不带任何参数的git

reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息

git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index

file一级。如果还要提交,直接commit即可

git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容

然後
git push origin HEAD --force


6.解决文件中冲突的的部分

打开冲突的文件,会看到类似如下的内容:



git冲突内容

其中Updated upstream 和=====之间的内容就是pull下来的内容,====和stashed

changes之间的内容就是本地修改的内容。碰到这种情况,git也不知道哪行内容是需要的,所以要自行确定需要的内容。解决完成之后,就可以正常的提交了。

7.合并几次提交的修改

在push到主分支之前,先将几次commit合并

git rebase -i HEAD~3


第一个pick之后的其他行改成s,按esc退出vim的编辑模式,输入:wq提交

进入一个界面,保留第一条注释,后续的注释删除,按esc退出vim的编辑模式,输入:wq提交

rebase完成

如果出错

git rebase --abort


參考:

1. 使用git rebase合并多次commit

2. 聊下 git rebase -i

8.关于修改文件夹权限

加入-R 参数,就可以将读写权限传递给子文件夹。例如:

chmod -R  777  /home/mypackage


那么mypackage 文件夹和它下面的所有子文件夹的属性都变成了777。777是读、写、执行权限…

9.cherry-pick——将A分支中的某个提交放到B分支

//先在A分支获取commit哈希值
git log
commit 38361a68138140827b31b72f8bbfd88b3705d77a
Author: Siwei Shen <siwei.shen@focusbeijing.com>
Date:   Sat Dec 10 00:09:44 2011 +0800

//切换到B分支
git checkout old_cc
//将A分支获取的commit哈希值贴给cherry-pick
$ git cherry-pick 38361a68


10.主从分支开发操作流程

一般分支的作用是为了不影响主线而进行的独立开发,所以在分支上开发好之后将其合并到主分支之后,可将该分支删除或保留。

1.切换到分支

git checkout【branchname】


2.将修改提交到分支上

git commit & git push


3.切换到master分支

git checkout master


4.更新master代码

git pull


5.执行合并操作

git merge 【branchname】


如果有冲突,会提示你,调用git status查看冲突文件。解决冲突,然后调用git add或git rm将解决后的文件暂存。

6.所有冲突解决后,git commit & git push 提交代码到主分支上。

查看各个分支当前所指的对象:$git log –oneline –decorate

将会显示:

f30ab (HEAD, master, testing) add feature #32 - ability to add new

34ac2 fixed bug #1328 - stack overflow under certain conditions

98ca9 initial commit of my project

参考文章:

Git查看、删除、重命名远程分支和tag
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  git