美文网首页Git
Git 学习大全

Git 学习大全

作者: 条子在洗澡 | 来源:发表于2019-03-27 00:02 被阅读3次

    gitlab搭建教程:https://www.jianshu.com/p/f1a3d7517572

    名称 版本
    系统 CentOS Linux release 7.6.1810 (Core)
    1. 安装git
    yum install -y epel-release
    yum install -y git
    
    2. 创建版本库
    mkdir  /home/gitroot
    cd /home/gitroot
    git init  //用这个命令初始化,让这个目录变成git可以管理的仓库
    
    3. 提交文件到仓库
    echo -e "123\naaa\n456\nbbb" > 1.txt
    git add 1.txt  //把1.txt添加到仓库中
    git commit -m "add new file 1.txt"   //add完了必须要commit才算真正把文件提交到git仓库里
    

    注意初始使用该命令会提示以下内容:

    git config --global user.email "you@example.com"
    git config --global user.name "Your Name"
    

    这是要让我们设置用户邮箱和用户名。根据它提示设置一下即可:

    git config --global user.email "tiaozizaixizao@qq.com"
    
    git config --global user.name "tiaozizaixizao"
    
    修改文件后查看状态及修改的内容
    echo -e "111111\n2222222222" >> 1.txt  //先更改一下1.txt
    
    git status   //查看当前仓库中的状态,比如是否有改动的文件
    
    git diff 1.txt  //可以对比1.txt本次修改了什么内容,相比较仓库里面的版本
    
    4. 版本回退
    #查看提交记录,根据这个log,我们可以指定回退某个版本
    git log  //可以查看所有提交git仓库的记录操作
    git log --pretty=oneline  //一行显示,更清楚 
    
    比如,结果如下
    git log --pretty=oneline
    142dde7c32cf8c2e4b59b6fafae468dedbb72ff9 change 1.txt
    0ff5ab178ea2207e71fbe935c57a8ef1c30f63d7 change 1.txt
    5aacaf4341484186802faed7d2db87840b2adc66 new file 2.txt
    73235a8549b7e9cfa171d632e1a8f0d91cd0a0d5 new file
    
    #回退到0ff5ab178ea2207e71fbe935c57a8ef1c30f63d7
    git reset --hard 0ff5ab1  //可以回退到第二行的这个版本,这里后面跟的字符串可以简写。
    
    当回退到该版本后,再  git log 则最上面的版本不再显示了,那如果想再倒回退到第一行那个版本怎么办?
    git reflog  //可以显示所有的版本
    
    

    5. 撤销修改

    #修改1.txt,发现改的不对,想恢复到上一次提交时的状态。或者1.txt不小心给删除掉了。可以使用
    
    git checkout -- 1.txt  //恢复到上一次提交时的状态
    
    #如果1.txt修改完了,保存后,git add 1.txt了,但没有commit,再想回退到上一次提交时的状态。可以使用
    git  reset HEAD 1.txt
    git checkout -- 1.txt
    
    #那如果不仅add也commit了,那就用第4步回退的方法。
    

    6. 删除

    创建一个新文件并提交到本地仓库
    touch  2.txt
    echo "22222222222222" > 2.txt
    git add 2.txt
    git commit -m "add new file 2.txt" 
    
    #我们在git仓库里提交了一个新的文件2.txt,下面删除它
    rm -f 2.txt
    git status //可以看到,提示2.txt文件被删除了
    
    #如果要想恢复,直接用  
    git  checkout -- 2.txt
    
    #在git仓库里彻底删除2.txt
    git rm 2.txt
    git commit -m "delete 2.txt" 
    
    

    7. 推送到远程仓库

    1.远程仓库创建自己的git,点repositories --> new
    名字自定义,比如叫gittest 选择public 点 create repository
    把本地参考推送到远程仓库

    git remote add origin [git@gitlab.com](mailto:git@gitlab.com):tiaozizaixizao/gittest.git
    git push -u origin master
    
    #下一次再推送,就可以直接 
    git push 
    

    8.克隆一个远程仓库

    cd /home
    git clone  [git@gitlab.com](mailto:git@gitlab.com):tiaozizaixizao/lanmp.git
    
    #它提示,会在当前目录下初始化一个仓库,并创建一个.git的目录
    Initialized empty Git repository in /home/lanmp/.git/
    
    #完成后,ls可以看到一个lanmp的目录
    cd  lanmp
    vi lanmp.sh  #编辑一下文件,然后提交
    git add lanmp.sh
    git commit -m "sdlfasdf" 
    
    #然后再推送到远程服务端
    git push
    

    9. 分支管理

    #查看分支
    git branch -a
    
    #创建分支
    git branch test
    
    #切换分支
    git checkout  test
    
    #提交分支到远程服务器
    git push --set-upstream origin test
    
    #删除分支:
    git push origin --delete test
    
    在test分支下 ,编辑2.txt,并提交到新分支
    echo "askdfjlksadjflk" >  2.txt
    git add 2.txt
    git commit -m "laksjdflksjdklfj" 
    
    #切换回master分支
    git checkout master
    
    #合并分支
    git merge test  //把test分支合并到了master
    
    注意:如果master分支和test分支都对2.txt进行了编辑,当合并时会提示冲突,需要先解决冲突才可以继续合并。
    解决冲突的方法是在master分支下,编辑2.txt,改为test分支里面2.txt的内容。 然后提交2.txt,再合并test分支。
    但是这样有一个问题,万一master分支更改的内容是我们想要的呢? 我们可以编辑2.txt内容,改为我们想要的,然后提交。切换到test分支,然后合并master分支到test分支即可。(倒着合并)合并分支有一个原则,那就是要把最新的分支合并到旧的分支。也就是说merge后面跟的分支名字一定是最新的分支。**
    
    #删除分支
    git  branch -d test
    
    #如果分支没有合并,删除之前会提示,那我们就不想合并,强制删除
    git branch -D test
    
    分支的应用原则:
    **master分支是非常重要的,线上发布代码用这个分支,平时我们开发代码不要在这个分支上。
    创建一个dev分支,专门用作开发,只有当发布到线上之前,才会把dev分支合并到master
    开发人员应该在dev的基础上再分支成个人分支,个人分支(在自己pc上)里面开发代码,然后合并到dev分支**
    
    #在dev分支合并bob分支的命令是:
    git checkout dev   //先切换到dev分支,然后
    git merge bob
    

    10. 保留现场

    git stash 
    git stash list  #可以看到我们保存过的现场
    git stash apply  #恢复现场
    git stash apply stash@{1} #指定stash:
    
    当你正在进行项目中某一部分的工作,里面的东西处于一个比较杂乱的状态,而你想转到其他分支上进行一些工作。问题是,你不想提交进行了一半的工作,否则以后你无法回到这个工作点。解决这个问题的办法就是git stash命令。
    比如我们在test分支,编辑了一个新的文件3.txt
    这时候我们需要到其他分支去修复一个bug,所以需要先git add 3.txt
    然后 git  stash  保存一下现场
    再切换到另外分支去修复bug,修复完bug后,再回到test分支
    

    11. 远程分支

    #查看远程库信息,
    git remote -v  
    
    #查看远程分支  
    git ls-remote origin
    
    #从本地推送分支,使用
    git push origin branch-name
    
    #如果推送失败,先用
    git pull  #抓取远程的新提交
    git push origin branch-name
    
    #在本地创建和远程分支对应的分支,使用
    git checkout -b branch-name origin/branch-name #本地和远程分支的名称最好一致
    
    #从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。
    

    11. 标签管理

    #标签类似于快照功能,我们可以给版本库打一个标签,记录某个时刻库的状态。我们可以随时恢复到该状态。tag是针对commit来打标签的,所以可以针对历史的commit来打tag
    
    git checkout master 先切到master分支上
    git tag v1.0  给master打一个标签v1.0
    git tag 可以查看所有的标签
    
    git log --pretty=oneline --abbrev-commit
    
    git tag v0.9 46d3c1a
    
    git tag -a v0.8 -m "tag just v1.1 and so on"  5aacaf4  //可以对标签进行描述
    
    git tag -d v0.8  //删除标签
    
    git push origin v1.0  //推送指定标签到远程
    
    git push --tag origin  //推送所有标签
    
    #如果本地删除了一个标签,远程也想要删除需要这样操作:
    git tag v1.0 -d
    git push origin :refs/tags/v1.0
    
    

    12. 巧用别名

    #git commit 这个命令是不是有点长? 用别名可以提高我们的工作效率
    git config --global alias.ci commit 
    git config --global alias.co  checkout
    git config --global alias.br  branch
    
    #查看git别名使用命令
    git config --list |grep alias
    
    #查询log小技巧:
    git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
    
    #取消别名
    git config --global --unset alias.br
    
    

    相关文章

      网友评论

        本文标题:Git 学习大全

        本文链接:https://www.haomeiwen.com/subject/frgovqtx.html