阅读 5952

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

git log

查看项目历史的信息

git status

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

git stash

应用场景

  • 有部分代码是多余的,想保留以后查看,但是又不想提交到远程分支
  • 在进行多分支开发时,比如你在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 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命令,查看有哪些文件冲突,然后逐个解决

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

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

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

  • 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.
文章分类
开发工具
文章标签