我的git入门
我的git入门
创建git仓库
mkdir 仓库名
进入目录
cd 目录名
查看目录
pwd
命令把这个目录变成Git可以管理的仓库
- 第一步,通过
git init
命令控制仓库 - 第二步,用命令git add告诉Git,把文件添加到仓库:
git add readme.txt
- 第三步,用命令git commit告诉Git,把文件提交到仓库:
git commit -m "wrote a readme file"
查看git工作状态和修改情况
- 要随时掌握工作区的状态,使用
git status
命令。 - 如果git status告诉你有文件被修改过,用
git diff
可以查看修改内容
git版本回退
HEAD
指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
- 回退到上个版本:
git reset --hard HEAD^
,上上个版本git reset --hard HEAD^^
- 查看版本id:
git log --pretty=oneline
- 穿梭前,用
git log
可以查看提交历史,以便确定要回退到哪个版本 - 要重返未来,用
git reflog
查看命令历史,以便确定要回到未来的哪个版本。
工作区和暂存区
git add
命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit
就可以一次性把暂存区的所有修改提交到分支
##撤销和修改
- 当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令
git checkout -- file
- 当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令
git reset HEAD <file>
,就回到了场景1,第二步按场景1操作。
删除文件
- 命令
git rm filename
用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容 - 恢复:
git checkout
其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
git推送到远程仓库
-
关联远程库:
git remote add origin git仓库网址
或者git remote add origin git@github.com:用户名/git仓库名
-
推送本地库到远程库:
git push -u origin master
-
输入上一步命令后,只要本地做了提交,使用
git push origin master
就可以把本地master分支的最新修改推送至GitHub -
注意:如果输入$ git remote add origin git@github.com:djqiang(github帐号名)/gitdemo(项目名).git
提示出错信息:fatal: remote origin already exists.
解决办法如下:- 1、先输入$ git remote rm origin
- 2、再输入$ git remote add origin git@github.com:djqiang/gitdemo.git 就不会报错了!
- 3、如果输入$ git remote rm origin 还是报错的话,error: Could not remove config section ‘remote.origin’. 我们需要修改gitconfig文件的内容
- 4找到你的github的安装路径,找到一个名为gitconfig的文件,打开它把里面的[remote “origin”]那一行删掉就好了!
-
克隆远程库
git clone git@github.com:用户名/仓库名.git
分支管理
-
Git鼓励大量使用分支:
-
查看分支:
git branch
-
创建分支:
git branch <name>
-
切换分支:
git checkout <name>
或者git switch <name>
-
创建+切换分支:
git checkout -b <name>
或者git switch -c <name>
-
合并某分支到当前分支:
git merge <name>
-
删除分支:
git branch -d <name>
git分支合并出现冲突
- 当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成
- 解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。
- 用
git log --graph --pretty=oneline --abbrev-commit
命令可以看到分支合并图。
git暂存分支
- 先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场
- 在master分支上修复的bug,想要合并到当前dev分支,可以用git cherry-pick 命令,把bug提交的修改“复制”到当前分支,避免重复劳动
查看远程库
- 查看远程库信息:
git remote -v
- 推送本地分支:
$ git push origin master
- 克隆远程分支:
git clone git@github.com:用户名/仓库名.git
- 创建远程origin的dev分支到本地:
git checkout -b dev origin/dev
- 多人协作
-
首先,可以试图用
git push origin <branch-name>
推送自己的修改; -
如果推送失败,则因为远程分支比你的本地更新,需要先用
git pull
试图合并; -
如果合并有冲突,则解决冲突,并在本地提交;
-
没有冲突或者解决掉冲突后,再用
git push origin <branch-name>
推送就能成功! -
如果
git pull
提示no tracking information
,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>
。
-
出现的问题:
- 出现错误:fatal: refusing to merge unrelated histories
- 因为两个分支没有取得连续:
git pull origin master --allow-unrelated-histories
- 因为两个分支没有取得连续: