💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
### 1. stash 保存现场 > 在某个分支上修改后,add之后,暂时不想提交。但是此时要切换分支是系统不允许的。 ``` wangyijiadeMacBook-Air:August Notes bizzbee$ git checkout master error: Your local changes to the following files would be overwritten by checkout: Code.html Please commit your changes or stash them before you switch branches. Aborting ``` > 系统提示你只能提交或者stash保存现场之后才能进行切换分支。 ``` wangyijiadeMacBook-Air:August Notes bizzbee$ git status On branch feature1 Changes to be committed: (use "git reset HEAD <file>..." to unstage) modified: Code.html wangyijiadeMacBook-Air:August Notes bizzbee$ git stash Saved working directory and index state WIP on feature1: 4cf57c2 mod code wangyijiadeMacBook-Air:August Notes bizzbee$ git status On branch feature1 nothing to commit, working tree clean wangyijiadeMacBook-Air:August Notes bizzbee$ ``` >执行git stash后整个工作区的修改被隐藏,git status 提示是干净的。 >这时候也可以切换分支去干其他工作了。 >干完回来。工作区是干净的,刚才的工作现场存到哪去了?用`git stash list`命令看看: ~~~ $ git stash list stash@{0}: WIP on dev: f52c633 add merge ~~~ > 工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法: 1. 一是用`git stash apply`恢复,但是恢复后,stash内容并不删除,你需要用`git stash drop`来删除; 2. 另一种方式是用`git stash pop`,恢复的同时把stash内容也删了: ``` wangyijiadeMacBook-Air:August Notes bizzbee$ git stash apply On branch feature1 Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: Code.html no changes added to commit (use "git add" and/or "git commit -a") wangyijiadeMacBook-Air:August Notes bizzbee$ git add . wangyijiadeMacBook-Air:August Notes bizzbee$ git commit -m 'stash back' [feature1 760d527] stash back 1 file changed, 1 insertion(+), 1 deletion(-) wangyijiadeMacBook-Air:August Notes bizzbee$ git status On branch feature1 nothing to commit, working tree clean wangyijiadeMacBook-Air:August Notes bizzbee$ ``` ### 2. 丢去没有被合并过的分支 如果要丢弃一个没有被合并过的分支,可以通过`git branch -D <name>`强行删除。 ### 3.推送到远程仓库指定某个分支。 推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上: ~~~ $ git push origin master ~~~ 如果要推送其他分支,比如`dev`,就改成: ~~~ $ git push origin dev ~~~ > 本地有的分支才能推送到远程,而且是对应的分支。 查看当前对应的远程库 当你从远程仓库克隆时,实际上Git自动把本地的`master`分支和远程的`master`分支对应起来了,并且,远程仓库的默认名称是`origin`。 要查看远程库的信息,用`git remote`: ~~~ $ git remote origin ~~~ 或者,用`git remote -v`显示更详细的信息: ~~~ $ git remote -v origin git@github.com:michaelliao/learngit.git (fetch) origin git@github.com:michaelliao/learngit.git (push) ~~~ 上面显示了可以抓取和推送的`origin`的地址。如果没有推送权限,就看不到push的地址。