1,设置本机参数,所有仓库都使用本参数
git config --global user.name "your name"
git config --global user.email "your email"
2,创建目录
mkdir learngit
3,查看当前路径
pwd
4,进入learngit目录,通过git init命令把这个目录变成Git可以管理的仓库:
git init
5,查看隐藏的文件
ls -ah
6,添加指定的文件到git 例如添加 addme.txt
git add addme.txt
7,用命令git commit告诉Git,把文件提交到仓库,-m后面是 本次提交的描述
git commit -m " add a addme file "
git commit命令执行成功后会告诉你,1 file changed:1个文件被改动(我们新添加的readme.txt文件);2 insertions:插入了两行内容(readme.txt有两行内容)。
为什么Git添加文件需要add,commit一共两步呢?因为commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:
git add file2.txt file3.txt
$ git commit -m "add 3 files."
8,查看日志,日志 以堆栈的形式显示 最上面的是最新的
git log
如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数:b24a10e6bdaf37c801981c31b55b721677274833 是本次提交的版本号
$ git log --pretty=oneline
b24a10e6bdaf37c801981c31b55b721677274833 (HEAD -> master) append GPL
8fff663095d5e4ba795cd006d3a2cf10957291d4 wrote a readme file
9.版本回退
HEAD当前版本 ,HEAD^上个版本 上上个版本HEAD^^ 也可以用HEAD~2
git reset --hard HEAD^
或者用版本号回退,去前面几位就可以
git reset --hard b24a10e6bdaf37c80
10,Git提供了一个命令git reflog用来记录你的每一次命令,如果 想回退到哪个版本 可以 查看命令记录找到版本号 就可以回退到相应的版本
git reflog
11,管理修改,如果修改了一次文档 然后add一次 接着又修改了一次 还需要在add一次才能把两次修改的内容提交 ,如果想看 工作区和版本库里的区别可以用:
git diff HEAD -- readme.txt
12,撤销工作区的修改
git checkout -- readme.txt
13,清空缓存区
git reset HEAD --readme.txt
14,删掉文件
git rm readme.txt
git commit -m "delete readme.txt"
15,创建并切换分支到dev
git branch -b dev
等同于
git branch dev 创建分支dev
git checkout dev 切换到分支dev
16,查看分支
git branch
17,查看状态
git status
18,合并分支 在被合并的分支下操作
git merge dev 将dev和当前分支合并
19,删除分支
git branch -d dev
20,合并冲突
$ git merge feat
Auto-merging readme.txt
CONFLICT (content): Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result.
文件
Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.
<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
feature1
用 <<<<<<<<<<<<< =================== >>>>>>已经表明冲突的位置
如上 ,需要手动解决冲突 然后 提交
git add readme.txt
git commit -m" conflict fixed"
git log --graph 查看合并分支图
21,关闭 fast forward合并模式 ,可以看到每次修改或者合并的记录
git merge --no-ff -m" merge with no-ff" dev
22,查看详细的 提交,合并的版本记录
git log --graph --pretty=oneline --abbrev-commit
23,分支策略
在实际开发中,我们应该按照几个基本原则进行分支管理:
首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。
所以,团队合作的分支看起来就像这样:
image.png
24,把工作区临时储藏起来
git stash
25,查看储藏起来的工作区记录
git stash list
26,恢复工作区域
git stash apply
27,删除床藏起来的工作区
git stash drop
28,恢复并删除床藏起来的工作区
git stash pop
29,恢复指定的 工作区
git stash apply stash@{0}
image.png
30,强制删除没有合并的子分支 dev->bug-101
git branch -D bug-101
image.png
31,查看远程库
git remote
或者
git remote -v 显示更详细的内容
32,推送分支
git push origin name
33,抓取分支,后面是地址
git clone git@github.com:michaelliao/learngit.git
34,创建远程分支到本地dev
git checkout -b dev origin/dev
35,修改文件后 推送分支到远程
git push origin/dev
36,抓取 最新的提交
git pull
37,pull失败 有此信息 “ If you wish to set tracking information for this branch you can do so with:” 表示没有没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接:
git branch --set-upstream-to=origin/dev dev
38,多人协作
首先,可以试图用git push origin <branch-name>推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!
如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to origin /<branch-name> <branch-name>
网友评论