新手git学习笔记
来源:互联网 发布:网络黄金王晨芳照片 编辑:程序博客网 时间:2024/06/06 18:21
一、git基本使用教程
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
二、常用命令
新人使用git的流程:
git init→git clone→git branch xxx→git checkout xxx→git add xxx→git commit -m xxx→git push origin xxx
git常用命令解释:
git 初始化:git init
克隆项目:git clone
查看分支:git branch
创建分支:git branch
切换分支:git checkout
创建+切换分支:git checkout -b
合并某分支到当前分支: git merge
删除分支:git branch -d
git pull 更新代码到本地
克隆一个仓库: git clone + https:仓库地址;
命令行新建文件 vi example.txt —i— insert模式输入完后,按esc,在:wq,保存退出;
git status 先查看仓库的状态;要提交的新文件,用git add example.txt 去跟踪文件(可以用git reset来撤销这次跟踪);git diff example.txt 查看内容改变情况;
要随时掌握工作区的状态,使用
git status
命令。如果
git status
告诉你有文件被修改过,用git diff
可以查看修改内容。git commit —m "comment"
配合git add
上传文件;
现在,你又理解了Git是如何跟踪修改的,每次修改,如果不add
到暂存区,那就不会加入到commit
中。
git add -A // 添加所有改动
git add * // 添加新建文件和修改,但是不包括删除
git add . // 添加新建文件和修改,但是不包括删除
git add -u // 添加修改和删除,但是不包括新建文件
在 commit 前撤销 add:
git reset // 撤销提交单独文件
git reset // unstage all due changes
add/commit 前撤销对文件的修改:
git checkout – README.md // 注意, add添加后(同commit提交后)就无法通过这种方式撤销修改
8. git add 是将修改内容或者新文件添加到本地缓存区
再用 git commit 将本地缓冲区的内容提交到本地仓库
- git log –pretty=oneline 显示提交日志,完整版本号
- git reflog 查看命令历史
- git reset –hard HEAD^ 回到上一版本
- git reset –hard cb926e7e 回到某一个版本
HEAD
指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
。- 穿梭前,用
git log
可以查看提交历史,以便确定要回退到哪个版本。 - 要重返未来,用
git reflog
查看命令历史,以便确定要回到未来的哪个版本。
- 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令
git checkout -- file
。 - 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令
git reset HEAD file
,就回到了场景1,第二步按场景1操作。 - 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
- 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令
11. 删除一个文件:
- 一是确实要从版本库中删除该文件,那就用命令`git rm`删掉,并且`git commit`:- 另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本: ``` $ git checkout -- test.txt ```
12. git push — 要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git
;
关联后,使用命令`git push -u origin master`第一次推送master分支的所有内容;此后,每次本地提交后,只要有必要,就可以使用命令`git push origin master`推送最新修改;
13. 远程仓库
第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有`id_rsa`和`id_rsa.pub`这两个文件,如果已经有了,可直接跳到下一步。如果没有,,创建SSH Key:```$ ssh-keygen -t rsa -C "youremail@example.com"```
14. 关联仓库
#### …or create a new repository on the command line```echo "# learngit" >> README.mdgit initgit add README.mdgit commit -m "first commit"git remote add origin git@github.com:guopingxiao/learngit.gitgit push -u origin master```##### …or push an existing repository from the command line```git remote add origin git@github.com:guopingxiao/learngit.gitgit push -u origin master```
把本地库的内容推送到远程,用git push
命令,实际上是把当前分支master
推送到远程。
由于远程库是空的,我们第一次推送master
分支时,加上了-u
参数,Git不但会把本地的master
分支内容推送的远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来,在以后的推送或者拉取时就可以简化命令。
多人协作开发
克隆仓库
要克隆一个仓库,首先必须知道仓库的地址,然后使用
git clone url
命令克隆。Git支持多种协议,包括
https
,但通过ssh
支持的原生git
协议速度最快。分支管理
查看分支:
git branch
创建分支:
git branch <name>
切换分支:
git checkout <name>
创建+切换分支:
git checkout -b <name>
,在分支上修改代码,不影响原来分支的代码,调试好后,在合并两个分支;合并某分支到当前分支:
git merge <name>
删除分支:
git branch -d <name>
通常,合并分支时,如果可能,Git会用
Fast forward
模式,但这种模式下,删除分支后,会丢掉分支信息。如果要强制禁用
Fast forward
模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。git merge --no-ff -m "merge with no-ff" dev
,因为本次合并要创建一个新的commit,所以加上-m
参数,把commit描述写进去。
分支冲突
Git用
<<<<<<<
,=======
,>>>>>>>
标记出不同分支的内容,当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。用
git log --graph
命令可以看到分支合并图。git log --graph --pretty=oneline --abbrev-commit
修复bug 拉分支
修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;
当手头工作没有完成时,先把工作现场
git stash
一下,然后去修复bug,修复后,再git stash pop
,回到工作现场。feature分支
开发一个新feature,最好新建一个分支;
如果要丢弃一个没有被合并过的分支,可以通过
git branch -D <name>
强行删除。git branch -d feature-vulcan
不能删除,因为分支还没被合并。多人协作开发
查看远程库信息,使用
git remote -v
;本地新建的分支如果不推送到远程,对其他人就是不可见的;
从本地推送分支,使用
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 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
。git打标签和推送标签
命令
git tag <name>
用于新建一个标签,默认为HEAD
,也可以指定一个commit id;git tag -a <tagname> -m "blablabla..."
可以指定标签信息;git tag -s <tagname> -m "blablabla..."
可以用PGP签名标签;命令
git tag
可以查看所有标签。命令
git push origin <tagname>
可以推送一个本地标签;命令
git push origin --tags
可以推送全部未推送过的本地标签;命令
git tag -d <tagname>
可以删除一个本地标签;命令
git push origin :refs/tags/<tagname>
可以删除一个远程标签。
忽略一些文件和文件夹
忽略某些文件时,需要编写.gitignore
;
.gitignore
文件本身要放到版本库里,并且可以对.gitignore
做版本管理!
- 新手git学习笔记
- Git新手上路,个人学习笔记
- GIT服务笔记【新手】
- 关于git的命令行使用,新手学习笔记(新手入门级)
- git新手学习的命令
- git新手学习和使用
- git-新手学习之路
- ORACLE 新手学习笔记
- nginx 新手学习笔记
- Matlab新手学习笔记
- linux 新手学习笔记
- 【git】git学习笔记
- Dwr新手学习笔记1
- 新手学习Cadence16.3笔记
- linux新手学习笔记1
- linux新手学习笔记2
- Linux新手学习笔记3
- Linux新手学习笔记4
- 鼠标悬停显示
- TensorFlow笔记之变量管理
- JS基础思维导图总结二
- 剑指offer——面试杂记
- 山东省第五届ACM省赛 C
- 新手git学习笔记
- sublime text 3 插件 【编写高质量 JavaScript & CSS 代码】高亮提示用户编写的代码中存在的不规范和错误的写法
- CSS 优化、提高性能的方法有哪些?
- java多态polymorphic多态的理解二
- 5.1
- 求线段长
- 素数判定子程序
- 初识Tensorflow1.0
- 在七牛云上做wordpress 的镜像加速