注:命令中的字符都为半角否则命令会报错,命令中自定义的文件名,标签名,备注信息最好都是英文,否则容易出现某些问题
1.配置用户名和邮箱
$ git config --global user.name "xxxx"
$ git confing --global user.email "xxxx@example.com" --globle参数表示所有仓库都将使用这个配置
2.创建仓库 (repository)
$ mkdir filename 创建一个空目录
$ cd filename 跳转到filename所在目录
$ pwd 显示当前目录
$ git init 把新建目录变成git可以管理的仓库 此时目录下多一个.git的目录
$ ls ($ ls -ah) 查看当前目录下的文件列表 (查看当前目录下的的文件列表,包括隐藏的)
3.添加文件到仓库 需要 add commit 两步
$ git add . 把所有文件从工作区添加到暂存区
$ git add filename1 filename2 filename3 把文件从工作区添加到暂存区(stage)
$ git commit -m "xxxx" 把暂存区的修改文件提交到分支上 -m后为本次提交的说明 commit可以一次性提交多个文件
4.查看状态和修改内容
$ git status 查看仓库当前状态,可以知道有文件被修改过
$ git diff filename 查看文件修改内容
$ cat filename 查看文件内容
5.版本回退
$ git log ($ git log --pretty=oneline) 显示从最近到最远的提交日志 如果出现end情况可以按q退出
$ git log -1 显示最后一次提交信息
$ git reset --hard HEAD^ (^为半角状态) 把文件回退到上一个版本 ^的个数为回退版本的个数 (当回退版本比较多时,可采取$ git --hard HEAD~1方式回退,~的数字为回退的版本个数)
$ git reset --hard commit_id 当回退完成以后,若你想回到原先的回退前的某个版本,只要在--hard后加上版本号(版本号可以用命令$ git reflog 查看)
$ git reflog 可以查看提交历史,此方法可以查看每次提交的版本号,用于回到未来的某个版本
$ git diff HEAD -- filename 可以查看工作区和最新版本的区别
6.撤销文件的修改
$ git checkout -- filename 场景1 撤销工作区文件的的修改 ,--不能省略,否则就是切换分支的命令了
场景2 当手动误删工作区文件时,因为版本库里还有,可以用此命令将误删文件恢复到最新版
$ git reset HEAD filename 可以把暂存区文件的修改撤销(unstage),回退到工作区
7.删除已提交文件操作 先用git rm 删除然后 git commit
$ git rm filename 删除文件
删除已经commit的文件:用git log 查看commit的记录【git log -n 1】===》git reset --hard commit_id
8.与远程库连接
$ git remote add origin git@github.com:xxxx/xxx.git
$ git remote rm origin 删除已关联的远程库
$ git push -u origin master 将本地库推送远程库,第一次连接时需要加上-u 参数,此后可省略即$ git push origin master。此外Git使用SSH连接时,第一次连接,Git会输入一个警告,输入yes即可。
9.从远程库克隆
$ git clone git@github.com:xxxx/xxx.git
10.创建并合并分支
$ git checkout -b dev 创建并切换分支 相当于 $ git branch dev 和 $ git checkout dev
$ git branch 查看所有分支 当前分支前会有*号
$ git checkout master 切换回master分支
$ git merge dev 用户合并指定分支dev到当前分支
$ git merge --no-ff -m "xxxx" dev 加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而不加此参数 则采用fast forward模式(此模式下,删除分支后,会丢掉分支信息)合并就看不出来曾经做过合并,
$ git branch -d dev 删除dev分支,删除时不能将删除分支作为当前分支
$ git branch -D dev 强行删除已commit的分支
11.解决冲突
$ git log --graph 查看分支合并图【$ git log -graph --pretty =oneline --abbrev-commit】
12.暂存操作
$ git stash 把当前工作现场存储起来
$ git stash list 查看存储列表
$ git stash pop 将存储的分支应用于当前分支 git stash apply 同样可恢复但stash内容不删除 ,还需要用git stash drop来删除,可以多次stash,恢复时可以在 pop或 apply后加 stash@{x}来指定恢复到哪一个存储分支。 stash@{x}可以由git stash list查看
13.多人协作时常用操作
$ git checkout -b dev origin/dev 在本地创建和远程分支对应的分支
¥git branch --set-upstream branch-name origin/branch-name 建立本地分支和远程分支的关联
$ git push origin branch-name 推送自己的修改
$ git pull 当远程分支比你的本地更新,则用上条进行推送会失败,此时需要git pull 试图合并冲突,再进行提交,若git pull 时提示"no trancing information" 说明本地分支和远程分支的连接关系没有创建 用命令 git branch -- set-upstream bransh-name origin/branch-name
$ git remote -v 查看远程库信息
14.标签操作 如下xxx是自定义tagname
$ git tag xxx 给当前分支打上标签 git tag -a xxx -m "xxx" 可以指定标签信息,-a指定标签名,-m指定说明文字 git tag -s xxx -m "xxx" 可以用PGP签名标签,通过-s用私钥签名一个标签
$ git tag 查看所有标签
$ git show xxx 可以查看对应标签的说明和内容
$ git push origin xxx 推送一个本地标签
$ git push origin --tags 可以推送全部未推送的本地标签
$ git tag -d xxx 删除一个本地标签
$ git push origin :refs/tags/xxx 删除一个远程标签
15 .自定义git
$ git config --global color.ui true
16. 配置别名
$ git config --global alias.xxx 'yyy' 把yyy别名成xxx $ git config --global alias.ci commit $ git config --global alias.unstage 'reset HEAD' 所以当你提交时可以写成 $ git ci -m "xxxx" 撤销暂存时 $ git unstage filename 这些设置都在.git /config(无--global)文件或者用户主目录下的.gitconfig(有--global)中,如果不需要可以删除
17.其他操作
$ cd xxx 切换目录
$ clear 清屏
$ cd .. 返回上一个目录
本文参照 廖雪峰的官方网站git学习总结 https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
18.补充
查看远程分支:git branch -r
拉取远程分支到本地: 方法一:git checkout -b 本地分支名 origin/远程分支名 【此方法会将本地分支与远程分支建立映射关系,并自动切换到新建的本地分支】
方法二:git fetch origin 远程分支名:本地分支名 【此方法不会将本地分支与远程分支建立映射关系,且不会自动切换到新建的本地分支】
git commit --amend 将修改合到上一个commit中
git remote set-url origin 远程项目地址 修改项目远程地址