本文共 3026 字,大约阅读时间需要 10 分钟。
1、先安装git sudo apt-get install git2、设置git 用户名和邮箱 git config --global user.email "you@example.com" git config --global user.name "Your name"3、开始使用 首先创建一个版本库 mkdir mygit git init4、提交写的内容 git add readme.txt git commit -m "add a readme file"5、修改文件内容,再执行第四步6、查看当前文件的状态 git status7、若文件被修改过,用git diff 可以查看(在修改过未提交之前可以用这个命令查看)8、查看修改日志 git log 忽略没有必要的信息 git log --pretty=online 9、回退版本 Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交3628164...882e1e0(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100 回退上一版本 git reset --hard HEAD^ 回退指定的版本 git reset --hard commit_id(前七位) git在内部有个指向当前版本的HEAD指针 git reflog 记录你的每一次命令10、介绍工作区和暂存区 工作区:能看的到的目录,.git是一个隐藏目录,不是工作区,而是Git的版本库 版本库:包括暂存区和分支master git add 把文件添加进去,实际上就是把文件修改添加到暂存区 git commit 提交更改,实际上就是把暂存区的所有内容提交到当前分支11、git管理的是修改,并不是文件 当你把把文件添加到暂存区,未提交之前再修改,提交之后发现并不是最终版本原因是你没有把最后修改的文件给添加上去12、撤销修改 1) 当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file 2) 当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。 3) 已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。13、删除文件 git rm filename14、远程仓库 要关联一个远程库,使用命令git remote add origin https://www.github.com/zsjfenger/learngit.git 关联后,使用命令git push -u origin master第一次推送master分支的所有内容; 此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改15、远程库的克隆 使用https除了速度慢意外,还有个最大的麻烦是每次推送都必须输入口令,但是默写只开放http端口的公司内部就无法使用ssh协议而只能用https 1) git clone https://github.com/zsjfenger/gittest.git 2) git clone git@github.com:zsj/gittest.git16、分支管理 查看分支:git branch 创建分支:git branch切换分支:git checkout 创建+切换分支:git checkout -b 合并某分支到当前分支:git merge 删除分支:git branch -d 17、解决冲突 当主分支master和新的分支都进行修改,提交合并发生冲突时,手动修改,并添加提交 查看分支合并图 git log --graph --pretty=oneline --abbrev-commit18、分支管理 合并:git merge --no-ff -m "content" dev 合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。19、强行删除分支 git branch -D feature-vulcan20、多人协作 git pull 抓取远程最新的提交,如果抓取失败,可能是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接:git branch --set-upstream dev origin/dev 并不是一定要把本地分支往远程推送,那么,哪些分支需要推送,哪些不需要呢? master分支是主分支,因此要时刻与远程同步; dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步; bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug; feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发 多人协作的工作模式通常是这样: 首先,可以试图用git push origin branch-name推送自己的修改; 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并; 如果合并有冲突,则解决冲突,并在本地提交; 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功! 如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。21、标签 命令git tag 用于新建一个标签,默认为HEAD,也可以指定一个commit id; git tag -a -m "blablabla..."可以指定标签信息; git tag -s -m "blablabla..."可以用PGP签名标签; 命令git tag可以查看所有标签。 git show 可以看到文字说明 命令git push origin 可以推送一个本地标签到;(远程) 命令git push origin --tags可以推送全部未推送过的本地标签;(远程) 命令git tag -d 可以删除一个本地标签; 命令git push origin :refs/tags/ 可以删除一个远程标签。(先删除本地标签)
git学习笔记参考:
转载地址:http://mjsgi.baihongyu.com/