git基本指令使用,git status,git stash,git merge

git log

查看项目历史的信息javascript

git status

git status命令用于显示工做目录和暂存区的状态。使用此命令能看到哪些修改被暂存到了, 哪些没有, 哪些文件没有被Git tracked到。git status不显示已经commit到项目历史中去的信息。html

git stash

应用场景java

  • 有部分代码是多余的,想保留之后查看,可是又不想提交到远程分支
  • 在进行多分支开发时,好比你在A分支上开发,可是忽然发现B分支上有个bug须要修复,之前每每会把A分支上开发一半的功能本地commit,切换到B分支修复bug,而后再切换回A分支继续开发,这样每每log上会有大量没必要要的记录。如今可使用git stash将你当前未提交到本地(和服务器)的代码推入到Git的栈中,放心切换到B分支修复代码,完事儿后切换回A分支使用git stash apply将之前一半的工做应用回来;
git stash(A分支)
git pull(B分支)
git stash apply (A分支)
复制代码

PS:git stash 命令能够将在当前分支修改的内容放到缓存区中,并会自动创建一个缓存的list集合,方便管理,git stash list 能够看到list下的全部缓存。git

git stash list
复制代码

git stash lish
实际应用中推荐给每一个stash加一个message,用于记录版本,即 git stash save取代 git stash。如:

git stash save "添加console.log"
复制代码

git stash save
查看全部的缓存

git stash list
复制代码

使用save的stash list
若是想将修改的内容从新释放出来, git stash applygit stash pop 均可以将修改的内容从新释放出来。 使用 git stash apply stash@{x} ,能够将编号x的缓存释放出来,可是该缓存还存在于list中 而 git stash apply,会将当前分支的最后一次缓存的内容释放出来,可是刚才的记录还存在list中 而 git stash pop,也会将当前分支的最后一次缓存的内容释放出来,可是刚才的记录会被删除,不存在list中
git stash示例

  • 若是你实在实在不想要本地的更改了,能够清除使用以下命令清除全部的stash栈
git stash
git stash clear
复制代码

固然也可使用git stash drop移除指定的stash栈缓存

git stash drop stash@{1}
复制代码

查看指定stash的提diff

git stash show
复制代码

运行后 服务器

stash show
git stash show -pgit stash show --patch查看指定stash的所有diff

git rebase 冲突

  • step 1. 使用git status命令,查看有哪些文件冲突,而后逐个解决app

  • step 2. 打开冲突文件,找到冲突的位置,好比修改用户信息后发送事件 <<<<<<< HEAD b789 ======= b45678910 >>>>>>> 6853e5ff961e684d3a6c02d4d06183b5ff330dcc 冲突标记<<<<<<< (7个<)与=======之间的内容是本地修改, =======与>>>>>>>之间的内容是别人的修改。学习

  • step 3. 最简单的方式:删除这些冲突标记,而后查看是否有相同的代码,删除便可。spa

  • step 4. git add . git commit -m “fix conflict”3d

  • step 5. git rebase --continue

  • step 6. 若是仍是有冲突,重复step2-step5

  • step 7. 完成

分支管理

git branch test   			// 新建分支(test)
git branch -d test 			// 删除分支(test)
git branch -D test			// 强制删除分支(test)
git checkout test			// 切换到test分支(test)
git branch				    // 查看本地分支
git branch -r 				// 查看服务器远程分支 
git branch -a				// 查看本地和远程分支
git branch -b develop
复制代码

新建分支后先提交到远程服务器才能pull代码,

git push origin test 		 // 提交到远程服务器(test)
复制代码

git merge git cherry-pick

git merge: 合并两个分支,全部内容 git merge master,将master上全部内容合并到当前分支 git cherry-pick: 选择合并一个或者多个commit,好比要从A分支合并某个commit到B分支,A—>B,步骤以下

  • step 1: A分支下,git log获取某个commit-id
  • step 2: 切换到B分支,git checkout B(执行该命令前必定要保证A分支没有未提交的改动,或未stash的改动)
  • step 3: B分支下,执行 git cherry-pick {commit-id}
  • step 4: 执行git pull git push 将改动提交到远程分支 示例:我在A分支修改了某个文件,须要同时提交到A分支和B分支,操做以下 A分支下
git add .
git commit -m “{commit comment}”
git pull -—rebase origin A
git push origin A
git log
git status
git checkout B
复制代码

已经切换到B分支 切换到B分支后,首先要去远程B分支获取到最新内容

git pull —-rebase origin B
git cherry-pick {commit-id}
git pull —-rebase origin B
git push origin B
复制代码

git tag(标签)

建议只在主分支打tag,并且每次打tag都以版本发布以后为节点

Gitlab Flow上游优先(学习文档)

www.ruanyifeng.com/blog/2015/1… www.cnblogs.com/cnblogsfans…

小tips

  1. git commit --amend -“修改commit的描述”
  2. 执行git pull 命令的时候,若是本地有改动没有commit,就会提示错误 “error: Cannot pull with rebase: You have unstated changes.
相关文章
相关标签/搜索