git常用Linux命令
首先下载好Git https://git-scm.com/download/win
默认点击下一步
安装完成后,在开始菜单里找到“Git”->“Git Bash”。如果命令行窗口弹出,则表明安装成功。
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
Git是分布式版本控制系统,每个分布系统都必须有用户名和用户邮箱。
接下来创建一个空目录
$ mkdir yourfolder Make directory
$ cd learngit Change directory
$ pwd Print working directory
/Users/Administrator/yourfolder
然后把这个目录变成Git可管理的仓库
$ git init
加入stage(暂存区)
$ git add yourflie.txt
提交(当前分支)
$ git commit -m "your explanation"//m(message提交说明) $ git log //显示最近提交日志 $ git log --pretty=oneline //显示一行简化日志
在Git中,用HEAD
表示当前版本,上一个版本就是HEAD^,上上个就是HEAD^^,100个^可
以写成HEAD~100
$ git reset --hard HEAD^ //回退到上个版本 $ git reset --hard version numbers //回退到指定版本(版本号不必写全,Git会自动寻找) $ git reflog reference log //命令日志 $ git status //仓库当前的状态 $ cat filename //查看文件 git diff HEAD -- yourfile 查看工作区和版本库里面最新版本的区别
只有被add过的才能被commit。
$ git checkout -- yourfile //撤销工作区修改 //$git checkout是版本库文件替换工作区文件 $ rm yourfile //删除文件
手动删除文件后使用git rm 和git add 结果一致
从来未被添加到版本库的删除文件是无法恢复的!
$ git remote add origin git@github.com:YourAccountName/YourRepository.git //远程库名是origin,这是Git默认的叫法,也可以改变 $ git push -u origin localrepository//把本地库的所有内容推送到远程库,第一次推送local分支时,可以加上-u参数。参数加上后,Git不但会把本地的分支内容推送到远程新的分支。
首次使用命令连接时,会有个警告
因为SSH连接在第一次验证Key时,需要你确认Key的指纹信息是否来自服务器,输入yes
回车即可。
Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了:
Warning: Permanently added 'github.com' (RSA) to the list of known hosts.
如果失误没有yes到
解决办法:https://blog.csdn.net/qq_43768946/article/details/90411154
$ git remote rm//删除远程库 $ git remote -v//查看远程库信息 -v显示更详细的信息 $ git remote rm origin $ git checkout -b branch-name remote/local //在本地创建和远程分支对应的分支,本地和远程分支的名称最好一致 $ git push origin pointer //本地分支提交远程库 $ git branch --set-upstream-to=remotepointer/localpointer //设置本地分支和远程分支的链接 $ git pull //把最新的提交从远程抓下来 /*最新提交和你的提交有冲突时,先用git pull把最新的提交抓取下来。然后本地合并,再解决冲突,再推送。 $ 因为分叉的提交需要三方对比,所以git rebase 把分叉提交历史整理成直线使得查看历史提交的变化更容易。缺点是本地的分叉提交已经被修改过了。 此处的“remote”解除了本地和远程的绑定关系。要真正删除远程库,登录GitHub删除。 */ $ git clone git@github.com:zhoushusheng/gitskills.git 从远程库克隆
创建新的分支时,Git新建一个指针。
Git合并分支通过改指针实现,工作区内容不变。
$ git checkout -b pointer/*-b参数表示创建并切换,相当于以下两条命令: $ git branch pointer $ git checkout pointer 撤销修改则是$git checkout --*/
//git branch命令查看当前分支: $ git branch $ git merge dev //合并分支 $ git branch -d pointer //删除分支 //创建并切换到新的dev分支,可以使用: $ git switch -c dev //直接切换到已有的master分支,可以使用: $ git switch master //当Git无法自动合并分支时,就必须把Git合并失败的文件手动修改。
合并分支时,Git会用Fast forward
模式。这种模式下删除分支后,它会丢掉分支信息。
如果要强制禁用Fast forward
模式,Git就会在merge时生成一个新的commit。这样,从分支历史上就可以看出分支信息。
$ git merge --no-ff -m "merge with no-ff" pointer /*准备合并pointer分支,--no-ff参数表示禁用Fast forward 要创建一个新的commit,所以加上-m参数*/
暂时不想提交又要保存,Git还提供了一个stash
,可以把存储当前工作现场:
$git stash $git stash list //查看工作现场 $git stash apply //恢复后不删除 $git stash drop //删除; $git stash pop //恢复的同时也删除 $git cherry-pick committd number//复制一个特定的提交到当前分支