版本工具-常用 Git 命令

来源:互联网 发布:照片批量重命名软件 编辑:程序博客网 时间:2024/06/15 08:36

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

大原則

  1. 记住,在 Git 中任何已提交的东西几乎总是可以恢复的。 甚至那些被删除的分支中的提交或使用–amend选项覆盖的提交也可以恢复(阅读数据恢复了解数据恢复)。然而,任何你未提交的东西丢失后很可能再也找不到了。
  2. Git 保存的不是文件的变化或者差异,而是一系列不同时刻的文件快照。

工作逻辑图如下

git工作邏輯圖

几个专用名词的译名如下

  1. Workspace:工作区
  2. Index / Stage:暂存区
  3. Repository:本地仓库
  4. Remote:远程仓库

常用命令


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

git add  <文件名列表,以空格分割> or  git add *git commit -m "提交说明信息"//或者合并成:git commit -am "提交说明信息"

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

git push origin master

3.将这些改动拉到本地

原则:先拉后推

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

4.分支

git checkout  分支名【分支名可以带文件夹名】  ---切换分支git checkout -b  分支名 【分支名可以带文件夹名】 ---创建并切换到新分支git branch -d branchname  分支名 【分支名可以带文件夹名】 ---删除该分支git branch -r   --查看远程分支git branch    --列出本地所有的分支git merge ***

5.撤销

// 对暂存区的取消:git reset --hard  【HEAD/版本号】// 撤销对文件的修改:git checkout -- CONTRIBUTING.md  (文件名)

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

  1. git reset –mixed:此为默认方式,不带任何参数的git
    reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息
  2. git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index
    file一级。如果还要提交,直接commit即可
  3. git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容
然後git push origin HEAD --force

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

打开冲突的文件,会看到类似如下的内容:
这里写图片描述

git冲突内容

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

7.合并几次提交的修改

  1. 在push到主分支之前,先将几次commit合并
git rebase -i HEAD~3
  1. 第一个pick之后的其他行改成s,按esc退出vim的编辑模式,输入:wq提交
  2. 进入一个界面,保留第一条注释,后续的注释删除,按esc退出vim的编辑模式,输入:wq提交
  3. rebase完成
  4. 如果出错
git rebase --abort

參考:
1. 使用git rebase合并多次commit
2. 聊下 git rebase -i

8.关于修改文件夹权限

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

chmod -R  777  /home/mypackage

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

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

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

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

原创粉丝点击