根据廖雪峰老师学习所得笔记,用于复习回顾。
廖雪峰 git 学习网址https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
在你想要作为仓库目录下 输入命令:git init 便会自动创建空的仓库
把想要提交的文件,放在仓库目录下,git add ‘完整的名字’,然后 git commit -m '描述信息'
git log 会显示操作记录 如果 感觉不够简洁明了,可以用 git log --pretty=oneline 会显示 提交的版本号
git status 可以查看工作区 与版本库 两者内容的变化
git log 查看提交历史,以便确定回滚到哪个版本
git reset --hard 版本号 (这个版本号是 git log --pretty=oneline 输出的commit -id 号)
如果版本回滚后,你又想后悔, 如果,是立即后悔(回滚后的窗口还没有关,可以往上翻翻 找到你想到达的commit id号)
用 git reset --hard 版本号(commit id 号)
如果是第二天则可以 用 git reflog 命令 可以看到我们的每一次命令记录 然后用 git reset --hard 版本号(commit id 号)
比如刚修改后,还未 git add 时 想要回滚 用命令 git checkout -- ‘文件名’
比如修改后,你git add 但并没有 git commit 时,用命令 git reset HEAD
然后再采用 上面的方法撤销工作区修改。这样便可以完全撤销
删:在仓库目录下 rm
误删:git checkout --
注意: 如果误删一个文件 恢复时,只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。
创建好github账号后,需要生成 ssh-key 可以在命令行中输入 ssh-keygen -t rsa -C "username" (注:username为你git上的用户名)一路回车 生成密钥,添加到 github 账号的 ssh-key 列表中
这样就关联了起来,也同步了
取消本地目录下关联的远程库:git remote remove origin
场景:多人协作时,当你本人要从本地库push 时,显示
error: 无法推送一些引用到 '[email protected]:Jxiaoyang/myRepository1.git'
提示:更新被拒绝,因为远程版本库包含您本地尚不存在的提交。这通常是因为另外
提示:一个版本库已推送了相同的引用。再次推送前,您可能需要先合并远程变更
提示:(如 'git pull')。
先 git pull <关联名> <分支> 如: git pull origin master
再 git push origin master 这样就能推送上去
git clone 后面跟 改资源的url
14.合并分支
分支的创建 命令: git branch dev
分支的切换 命令:git checkout dev
也可以直接一条命令完成以上2条命令的操作:git checkout -b dev
命令:git branch 会列出所有分支,*标记表示当前的分支
然后可以在当前分支 git add git commit
合并时,先切换到master分支 git checkout master
然后执行命令:git merge dev git merge
命令用于合并指定分支到当前分支
合并完成后 可以放心删除dev 分支
命令: git branch -d dev
如: master分支 修改一个a文本 dev 分支也修改了一个a文本
这种情况下,Git只能试图把各自的修改合并起来,但这种合并就可能会有冲突
必须手动解决冲突后再提交。git status
也可以告诉我们冲突的文件
我们也可以直接看内容
Git用<<<<<<<
,=======
,>>>>>>>
标记出不同分支的内容,我们修改如下后保存:再提交 最后删除分支。OK
合并时命令:git merge --no-ff -m "merge with no-ff" dev
--no--ff 表示禁用 快速合并
命令: git log --graph --pretty=oneline --abbrev-commit 查看分支历史
场景:当你在完善一个功能模块时,发现以前写的模块有个bug 需要修复更改,才能更好的完成此时的模块.
先冻结此时工作环境 等修复完bug再来完善这个模块. 采用命令:git stash 然后用git status
查看工作区,就是干净的(除非有没有被Git管理的文件)
修复BUG 时,首先确定是哪一分支上的bug 假定从master分支上修复, 就从master分支上创建临时分支
git checkout master 选中
git checkout -b issue-101 创建并切换临时分支
在临时分支上修改后 切换到 master 分支 git checkout master
合并:git merge --no-ff -m "merged bug fix 101" issue-101
bug 解决完毕, 开始到完善刚才的模块 首先切换到你工作的分支 列出 冻结工作环境 git stash list
两种回复方法: git stash apply@{数组的下标} 然后 git stash drop
@{数组的下标} 删除工作环境
两个格式都如:git stash apply stash@{0} 恢复的是第一个
另一种方法:git stash pop 恢复的同时把stash内容也删了
git branch -D
要查看远程库的信息,用git remote
用git remote -v
显示更详细的信息:
推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:
git push origin master
如果要推送其他分支,比如dev
,就改成:
$ git push origin dev
你的小伙伴要在dev
分支上开发,就必须创建远程origin
的dev
分支到本地,于是他用这个命令创建本地dev
分支
git checkout -b dev origin/dev
git add env.txt
git commit -m "add env"
git push origin dev
你的小伙伴已经向origin/dev
分支推送了他的提交,而碰巧你也对同样的文件作了修改,并试图推送:
推送失败,因为你的小伙伴的最新提交和你试图推送的提交有冲突,解决办法也很简单,Git已经提示我们,先用git pull
把最新的提交从origin/dev
抓下来,然后,在本地合并,解决冲突,再推送:
$ git pull
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.
git pull
f you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/
git pull
也失败了,原因是没有指定本地dev
分支与远程origin/dev
分支的链接,根据提示,设置dev
和origin/dev
的链接:
$ git branch --set-upstream-to=origin/dev dev
Branch 'dev' set up to track remote branch 'dev' from 'origin'.
再pull:
$ git pull
Auto-merging env.txt
CONFLICT (add/add): Merge conflict in env.txt
Automatic merge failed; fix conflicts and then commit the result.
这回git pull
成功,但是合并有冲突,需要手动解决,解决的方法和分支管理中的解决冲突完全一样。解决后,提交,再push:
$ git commit -m "fix env conflict"
[dev 57c53ab] fix env conflict
$ git push origin dev
Counting objects: 6, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (6/6), 621 bytes | 621.00 KiB/s, done.
Total 6 (delta 0), reused 0 (delta 0)
To github.com:michaelliao/learngit.git
7a5e5dd..57c53ab dev -> dev