Git学习日志

来源:互联网 发布:知乎 日韩军力对比 编辑:程序博客网 时间:2024/06/14 18:21

---Git常用基本指令------

ls

cd

mkdir learnGit

cd learnGit

pwd

ls -ah

git init 

git add  readme.txt

git commit -m "说明"

git status

git diff

git log 

git log --stat

git log --pretty=oneline

git reset --hard Head^

git reset --hard Head~100

git reset --hard 版本号

git reflog  后悔药

git diff HEAD  -- readme.txt  查看版本库最新版本HEAD和工作区,文件差别

git checkout -- readme.txt 撤销修改(丢弃工作区的修改)

git reset HEAD readme.txt 撤销add到暂存库中的文件到工作区

git bash 进入 INSERT编辑状态,退出方法:

①若为INSERT输入状态,先ESC退出输入状态

②shift+: 

③输入q!或wq!(q!表示不保存退出/ wq!表示保存退出)


-----远程仓库----

注册GitHub ,GitHub与Git本地仓库之间通过SSH加密传输,需要配置:

1.创建SSH Key 。GitBash 主目录下

$ssh-keygen -t -rsa -C "youremail@example.com"  一路回车

2.登录GitHub ,打开Account settings ,SSH Keys 页面:

然后,点"Add SSH Keys" ,天上任意Title,在Key文本框里粘贴 id_rsa.pub 文件的内容


(先有本地库想要远程库)本地与远程库关联:

关联本地库方法,本地库路径下:

git remote add origin https;//github.com/ merrily01/learngit.git   

关联后即可,推送本地库内容到远程。

git push -u origin master  (第一次提交时,添加了 -u 参数,不但可将本地内容推送到远程,还讲本地master分支和远程master分支关联。随后本地再做提交,就可以不加参数-u通过上面指令推送到远程)

(先有远程库想要本地库)克隆远程库:

git clone +远程库地址(GitHub上有,支持不止一种,可以git:// 或者 Https://)

远程库修改内容后,本地更新:

git pull

----------分支-------------

查看分支: git branch (会列出所有分支,当前所在分支前标*)

创建分支: git branch <name>

切换分支: git checkout <name>

创建并切换到dev 分支:git checkout -b dev    (相当于 git branch dev ; git checkout dev 两条语句)

修改文件,在dev分支下add并commit,并没有改变master分支内容。确认dev分支下修改好后,提交合并到master分支即可:

在master分支下,git merge dev 即可将dev分支下提交的内容合并到master中

合并某分支到当前分支: git merge  <name>

git merge --no-ff -m "说明" <branchname>

若合并冲突,手工消解,再add , commit

删除dev分支:git branch -d <name>

------Bug分支------------

修复bug时,通过创建新的bug分支进行修复,然后合并到master解决bug,最后删除bug分支。

当手头工作没完成时,可把dev工作分支git stash 一下,然后修复bug操作,最后通过指令git stash pop 恢复工作现场。

期间可通过git  stash list  查看分支是否有stash记录,通过git stash apply stash@{0} 指令恢复到想到的状态。

git stash 的应用场景是:当前在dev分支开发,开发工作还未完成,不能提交,但是此时maste有bug需要修复,且修复好后想将bug处理的代码合并到dev,以免有其他影响(这样除了工作开发的代码外dev才和master同步)。所以操作应该是:先git stash dev开发分支,然后在master上新建bug分支,修复提交并合并到master上,确保master的bug已经被修复。此时切换到dev分支,先不恢复工作区(此时dev的status是没有修改状态),在dev分支下 git merge master ,即将master上修复bug 的代码合并到dev开发分支,此时dev分支和当前的master分支是一致的;然后 git stash pop 恢复工作区(此处相当于在修复好bug的dev分支上将之前的开发代码恢复回来),这是后会有合并冲突,手工消解后,现在的dev开发分支,就是修复了bug且还原到之前开发的状态!这下就可以继续正常开发,直到开发完成,然后add,commit等操作,并将dev合并到master分支中。

----新功能feature分支-----

dev开发分支工作进行时,要有新功能添加,可在dev上checkout出一个新的feature-branch 分支,用于新功能开发,新功能完成后合并到dev分支即可。合并后可删除feature分支,若中途feature功能不再进行,需删除(此时Git会提示feature分支有修改没合并)可用git branch -D feature-branch (-D表示 强制删除)。

-------分支推送----------

git remote 查看远程仓库信息 或 git remote -v 显示详细信息

git push origin master 推送其他分支如 git push origin dev 

origin 是远程仓库的默认名

一般来说,master分支是主分支,需时刻与远程同步;dev分支是开发分支,团队所有成员开发工作都基于此,也需与远程同步;bug和feature分支视情况而定,一般不需要。

你的同伴从远程仓库clone时,只能看到本地的master分支,他要在dev分支上开发,就必须创建远程origin的dev,可用

git checkout -b dev origin/dev 指令创建

若你的同事已经向origin/dev分支推送了他的提交,而碰巧你也对同样的文件作了修改,并试图推送,此时提交会有冲突,Git会提示我们先git pull 把最新的代码从origin/dev抓下来,然后在本地合并,解决冲突,再push推送。

若git pull也失败了,原因是没有指定本地dev分支与远程origin/dev分支的链接。根据提示,设置dev和origin/dev的链接:

git branch --set-upstream dev origin/dev  再 pull


------标签管理---------

创建新标签,切换到需要添加标签的分支下: git tag <tag-name>

查看所有标签: gittag

看某个标签的详情: git show<tag-name>

默认标签是打在最新提交的commit上的,要想在历史提交上打标签,需要先get log 到想要打的提交的 id,然后:gittag<tag-name>id

删除标签: git tag -d  <tag-name>

推送某个标签到远程: gitpushorigin<tag-name>

或一次性推送全部尚未推送到远程的本地标签: git   push  origin  --tags

如果标签已经推送到远程,想要删除远程标签,需要现在本地删除 git tag -d <tag-name>  ,

然后从远程删除,删除命令也是push,但是格式为:  git pushorigin:refs/tags/<tag-name>

-----配置别名-------

git config --global alias.ststatus这样就可以,用st代表status

类似的还可以设置:

git config --global alias.cocheckout

git config --global alias.cicommit

git config --global alias.brbranch

传说中丧心病狂的lg:

 git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

配置文件在仓库的 .git/config文件中

取消别名: git config --global --unset alias.st

或 别名就在【alias】后面,需要删除别名,直接对应删除即可。



-------------fork了别人的项目,时间久了后,怎么更新到与原作者当前代码一致-----------------------

在本地机器上操作。

fork别人的项目后,是建立了一个分支在自己的GitHub中,可以将其Clone到自己本地机器上进行开发和修改。代码改动后,可以进行add/commit操作,然后push到我们自己的GitHub上。在GitHub上有个Pull Request 是将你修改的推送给原作者,审查决定是否合并到他的项目中。

但是,当时间久了,原作者代码可能已经有了很大的改变,怎么保持与他的最新的代码保持一致?

本地操作:

git remote add sri https://github.com/kraih/mojo (添加原作者项目remote地址)git fetch sri从远程获取最新sri版本到本地)git merge sri/master(在本地master分支下操作,代表将sri/master 合并到本地master分支)
然后确定合并成功后,即可add、commit、push 到自己GitHub远程上。


-----搭建Git服务器------

--------------------------------

Git官网:http://git-scm.com


0 0
原创粉丝点击