-u 表示第一次推送master分支的所有内容,此后,每次本地提交后,只要有必要,就可以使用命令$ git push origin master推送最新修改。
从远程克隆 $ git clone https://github.com/usern/repositoryname.git注意:当你不能使用 git@github.com 命令来进行推送和克隆,是因为没有安装密钥。
添加私秘钥到$ ssh-add ~/.ssh/id_rsa
如果添加失败可以先执行命令$ eval \ssh-agent\是~键上的那个符号,然后再次添加私秘钥。
用$ ssh -T git@github.com判断是否绑定成功。如果返回successfully表示成功。
分支管理 查看分支 $ git branch 创建分支 $ git branch <name> 切换分支 $ git checkout <name> 创建+切换分支 $ git checkout -b <name> 合并某分支到当前name分支 $ git merge <name> 删除分支 $ git branch -d <name> 强行删除分支 $ git branch -D <name>如果要丢弃一个没有被合并过的分支,可以通过以上命令来实现。
查看分支合并图 $ git log --graph当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
用git log --graph命令可以看到分支合并图。
通常进行分支合并时,git会使用Fast forward模式,删除分支后,分支信息会丢失,可以使用--on-ff参数,禁用Fast forward,需要时加上一个-m参数把commit描述写进去。这样进行合并后的历史有分支,能看出来曾经做过合并。
保存工作现场 $ git stash 查看工作现场 $ git stash list 恢复工作现场 $ git stash pop 在新建分支中修改bug时的推荐操作首先理清两个概念:
未被追踪的文件:指的是新建的文件或文件夹且还没加入到暂存区(新建的还没有被git add)
未加入到暂存区的文件:指的是已经被追踪过,但是没有加入到暂存区(已经执行过git add/commit的但是这次修改后还没有git add)
举例:
readme.md 已经被git add/git commit过,但是呢,我这次只是修改了,而且没有修改完,不能commit;
test 新建的文件夹,没有被git add/git commit;
有个bug需要处理,这时候我需要切换分支,去处理bug
正确的步骤:
git add test(让git去追踪这个新文件)
git stash保留现场
如果不执行这两个命令,那么在修改BUG完成之后git status,就会发现readme.md没有添加到暂存区,同时又多了个test文件,
但是自己的readme.md没有完成,万万不可以提交,这样导致bug的修改代码也提交不了。
所以需要git stash,这样在提交修改bug代码的时候 ,就不会看见readme.md 和 test。可以安心提交修改bug的代码。
本地新建的分支如果不推送到远程,对其他人就是不可见的;
从本地推送分支 $ git push origin branch-name如果推送失败,先用git pull抓取远程的新提交;
在本地创建和远程分支对应的分支 $ git checkout -b branch-name origin/branch-name本地和远程分支的名称最好一致;
建立本地分支和远程分支的关联 $ git branch --set-upstream branch-name origin/branch-name 从远程抓取分支 $ git pull如果有冲突,要先处理冲突。
标签git标签是版本库的快照,实际就是某个commit的指针,如果要找到某次版本的commit号,数字复杂不好找,使用tag取一个易于记住和理解的名字就方便许多,它跟某个commit绑在一起。(类似于域名和IP地址的关系?)
新建标签 $ git tag<tagname>默认为HEAD,也可以指定一个commit id。
查看标签信息 $ git show <tagname> 创建带有说明的标签 $git tag -a <tagname> -m <description> <branchname> or commit_id用-a指定标签名,-m指定说明文字
查看所有标签 $ git tag 推送某个标签到远程 $ git push origin <tagname> 一次性推送全部尚未推送到远程的本地标签 $ git push origin --tags 删除一个本地标签 $ git tag -d <tagname> 删除一个远程标签 $ git push origin :refs/tags/<tagname>